2.1 Perl--标量变量

Perl标量(scalar)是称呼单个的事物,可以是数字,也可以是字符串。变量即为存储一个或多个值的容器的名称。标量变量为仅仅存放一个值的变量。

首先,我们来聊一下perl常见的单引号双引号的区别:

  1. 两者都是用来让perl识别字符串的开始和结尾 “fred”和‘fred’效果一样
  2. 单引号 也只有在反斜线后面接单引号或反斜线时,才表示转义。要使用\则需要在前面加一个\来转义,要使用’则需要在前面加一个\来转义,例如:‘\’\’ 表示单引号后接一个反斜线
  3. 双引号 一般用作转义或这是使用变量内插

    \在里面有很强的转义功能,比如\n表示换行,一般结尾都需要来个这个 \f换页 …… $meal=“bro steak”; $barney=“fred ate a $meal”; $barney=‘fred ate a’.$meal; 这两种写法效果一样,其中.表示为链接字符串的操作符。所以上面那个看上去更简洁嘛

结合着例子来说明吧

第一个例子:

提示用户输入半径来求周长
#! /usr/bin/perl                     #告诉脚本Perl在哪里运行
use warnings;                         #有错误的话,就提醒,也可以跟上面合并#! /usr/bin/perl  -w
$pi=3.141592654;                      #定义标量变量$pi的值为
print "What is the radius?";          #提示输入半径
chomp($radius=);               #为行输入,其返回的字符串一般在末尾都会有换行符,而 $circ=$pi*2*$radius;                  chomp只能作用于单个变量,且该变量必须为字符串,去掉末尾的                                        换行符,如果字符串后面有两个以上的换行符,chomp()仅仅删除一个
print "The circumeference of acircle of radius $radius is $circ.\n";  #后面不输入\n的话结果末尾光                                                                        

标提示有误

第二个例子:当输入的半径小于0时,输出的结果为0,不为负数。

#! /usr/bin/perl
use warnings;
$pi=3.141592654;
print "What is the radius?";
chomp($radius=);
$circ=$pi*2*$radius;
if($radius<0){
   print "0\n"
   }else{
    print "The circumeference of acircle of radius $radius is $circ.\n";
    }

这里面就是多了一个if语句,如果()里面的,就怎样,否则……

第三个例子:提示用户输入两个数字,然后输出两者的乘积

#! /usr/bin/perl
use warnings;
print "What is the one?";
chomp($one=);
print "What is the two?";
chomp($two=);
$three=$one*$two;
print "The result is $three\n";

第四个例子:提示输出一个字符串和一个数字,使用x操作符

#! /usr/bin/perl
use warnings;
print "plese enter a string:";
chomp($one=);
print "please enter a number of times:";
chomp($two=);
$three=$one x $two;
print "The result is $three\n";

each操作符:

  my @rocks=qw / bedrock slate rubble granite/;
  while(my($index,$value)=each @rocks){
      say"$index:$value";
      }

每次对数组调用each,会返数组中下一个元素所对应的两个值–该元素的索引以及各该元素的值

ps:

  1. 上面的方法尽管参考,方法肯定不止一个
  2. 如果跟我一样是菜鸟,请结合我的第一篇博客看如何运行这样的脚本。
  3. 博文内容为整理的《Perl语言入门》这本书,感谢这个书的作者Randal L等人的付出。
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学