Perl Learning 1 Scalar Data

【本文原创,转载请说明】

唉,虽然立志搞硬件,但并不是弄底层电路,需要和大量代码打交道,看到VTR-to-Bitstream中不断的用到了perl脚本语句,心血来潮地想学学,找到了Randal L. Schwartz写的第六版Learning Perl,并且按照里面的顺序来学习。以下是我在看书时做的一些零碎的笔记,恕只是给我看的,根本没有内在联系可言。


Perl: Practical Extraction and Report Language,需要运行一个pl语句,我在我的电脑中输入perl XX.pl即可。

事实上,Perl程序里最缺乏可移植性的就是#!这行了,因为我们必须确定每台机器上perl解释器是放在什么路径下的。不外乎就是/usr/bin/perl或者usr/local/bin/perl

这是我第一个敲的代码,linux环境,只是我用的是Tsinghua的Linux服务器。

#!/usr/bin/perl

printf "What's your name?";

$name=<STDIN>;

chop($name);

printf "hello,$name, welcome!";

第一个输入的Perl语句,这里第三行表示从终端获得行输入并赋值给$name,这里$name的值有一个换行符,第四行”chop($name)”表示去掉$name的最后一个字符(即换行符),第五行显示输入。

 

Perl允许直接在整数直接量中插入下划线,乘幂操作符以双星号,比如2**3代表2的三次方

Perl完全支持Unicode,所以在字符串中可以使用任意一个合法的Unicode字符。不过由于Perl的历史原因,他不会自动将程序源代码当作Unicode编码的文本文件读入,所以如果我们想要在代码中使用Unicode书写直接量的话,得手工加上utf8编译器指令:use utf8

 

单引号内的字符串直接量(single-quoted string literal)指的是一对单引号(‘)圈引的一串字符。前后两个单引号不属于字符串的内容,单引号内所有字符都代表它们自己。要表示反斜线字符本身,需要在这个反斜线字符前再加一个反斜线字符表示转义;要表示单引号本身时,同样在单引号前加一个反斜线字符表示转义。

 

双引号的字符串直接量(double-quoted string literal) 反斜线可以转义许多字符。

字符串操作符,字符串可以用.操作符连接(因为句号连接)”hello” . “world”  #等同于”helloworld” string repetition operator :x, 此操作符会将其左边的操作数(也就是要重复的字符串)与它本身重复连接,重复次数则由右边的操作数指定。 “hsl” x 3 #”hslhslhsl”

“前置零”的技巧只对直接量有效,不能用于字符串的自动转换,自动转换总是按照10进制数字来处理的。 

0377  #十进制数字255的八进制写法;‘0377’ #会转换成十进制数377;**操作符向右结合,4**3**2 #4**(3**2),得到4**9

这是第二个代码,让我进一步了解变量的引用以及字符串的应用。结果如下:


以下是第二章给出的习题:


下面是我写的代码,都已经在linux平台上跑通。

1-3题:

#!/usr/bin/perl

print "Please input the radius to calculate the Perimeter: \n";

$Pi = 3.141592654;

$Radius = <STDIN>;

chop($Radius);

if($Radius lt 0){

print "The Perimeter is 0.\n";}

else{

$Peri = 2*$Pi*$Radius;

print "The Perimeter is $Peri.\n";}

4题:

#!/usr/bin/perl

print "This is 2-Multipler Multiplication Program \n";

print "Input the first Multiplier : ";

$input1 = <STDIN>;

chop($input1);

print "Input the second Multiplier : ";

$input2 = <STDIN>;

chop($input2);

$results = $input1 * $input2;

print "The results is $results.\n";

5题:

#!/usr/bin/perl

print "Input the strings you want to repeat: \n";

$Str = <STDIN>;

chop($Str);

print "Input the number of repetition: \n";

$Num = <STDIN>;

chop($Num);

print "$Str\n" x $Num;


在Learning Perl这本书的最后,有每章的习题答案,我看了以后发现有这么几个可以改进的地方:

1、$XX=<STDIN>; 和chop($XX)可以直接合并为一句: chop($XX=<STDIN>),其中的chop也可以改为chomp

2、在第5题中,按照题目的要求,我没有必要用chop($Str)这句,因为题中说了输出是要有空行,而chop的作用就是去掉最后一个换行符

3、把第一句改为:#!/usr/bin/perl -w,启用警告信息,能让我们更清楚地了解代码的运行情况


以上就是我对Perl语言的初步接触,在之后的日子里我也会继续,但是应该做不到每章都写这么多了~~期末考试就要来了,我还没有预习,god bless me.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值