设为首页 收藏本站
查看: 770|回复: 0

[经验分享] Perl学习笔记(一)变量的认识

[复制链接]

尚未签到

发表于 2017-5-18 12:38:36 | 显示全部楼层 |阅读模式
Perl标量的学习

 

任何语言都有变量,变量在Perl中简单的分为标量和组数变量.

标量:表示单个的量,即英文中所说的单数.

例如: $name = "Hello"';

         $age=18;

        $price =123.88;

        $price=343_333_333.898;

都是一个标量,Perl对数字标量在计算机中采用浮点数形式存贮。通常浮点数的精度是不够准确的。这点需要特别注意。

下面是一个例子.

 

   #!/usr/local/bin/perl
  $value = 9.01e+21 + 0.01 - 9.01e+21;
  print ("first value is ", $value, "\n");
  $value = 9.01e+21 - 9.01e+21 + 0.01;
  print ("second value is ", $value, "\n");

  ---------------------------------------------------------

  $ program3_3
  first value is 0
  second value is 0.01

 

可以看到,不同的运算顺序可能导致的结果不一样!在Perl中十进制数字用0x开头表示.0开头表示一个8进制数。Perl对数学运算的操作符有:

算术操作符 :+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)

(1)前面几个不用说了吧.说一下乘幂这里需要注册,基数不能为负数.
(2)单目负又是什么意思?他实际上就是一个负号。就是数学中的负数表示符。

算术比较符:

==(相等),<(小于),>(大于),!=(不等于),还有一个<=>(表示可以取三个数-1,0,1);

 

 

标量除了是一个数字,字符串之外,还可以是其它复杂类型的引用.这点请暂时记住.我将在后面详细说明这个问题.

 

现在来说下字符串,Perl采用unicode表示一个数值,这就意味着和java一样,可以表示世界上任何一个国家的语言文字,对于字符串的运算符有

.(相连) 

比较符:lt(小于),gt(大于),ne(不等于),eq(等于),le(小于等于),ge(大于等于),需要说明的的是。字符串的运算是按Ascii来进行运算的。就是说a(Ascii值为97),A(ASCII值为65),结果就是: a gt A

 

 

另一种变量叫做数组变量.数组大家都知道,表示一组数据的集合.数据型可以分为有序的数组和无序的列表.他通常相当于英语中的复数.还有一种叫散列.他是一种特殊的数组.用Key+value的形式来表示.相当于Java中的Map.是按键值对来存放的.

 

我们用$表示一个标量,用@表示一个列表和数组.用%表示一个散列.

 

举例说明:

@lines = ("a","b","c");

这样就定义了一个数组,他里面有三个元素 a b c ,定义数组时用()号把中间元素包扩起来.里面用,号分开,

也可以写成这样

@lines=qw(a b c d);

注意用qw定义时,里面不能写,号.这点请记住它!,而且qw里面只能是字符的原型,比如说,你给成这样

$a ="a";

@lines=qw($a b c d);将$a这个变量传进来,你的目的是这样,但是我告诉你这达不到你希望的效果.

他会原封不动的给你显示出来.这也正好说明了这里不能给a b c d 加个双引号.

 

 

%person 表示一个散列.

要对这个散列进行给值.使用

$person{"name"}="Hello";

也可以使用%person= ("a","b","c","d")这样的形式,我们说过,散列表示一个key/value的集合,所以perl会将这样的列表形式的数组按照key/value进行转换. 每两个一组,前面是键,后面是值.

当然这样的形式并不好看.

 

我们还可以写成

 

%person= ("a"=>"b","c"=>"d").

 

你可以直接把一个数组表示的变量给一个散列.用(),你也可以把一个散列的具体值指向另一个散列.

%person{"a"}={

 "name"=>"zhangsan",

 "age"=>"23",

}

通过 $person{"a"}{"name"}访问到zhangsan;

 

不仅如此,你还可以将一个散列的具体值指向一个数量.

%person{"a"}=["a1","a2","a3"];

通过$person{"a"}[0]访问到a1;

 

 

 

 

 

有了这样的机制我们很容易建立出类似多维数组一样的东西!好了,是不是很简单呢?

 

 

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378804-1-1.html 上篇帖子: perl处理html编码的中文 下篇帖子: 请教一道Perl的笔试题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表