【本文原创,转载请说明】
唉,虽然立志搞硬件,但并不是弄底层电路,需要和大量代码打交道,看到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.