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?"$Strn"?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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |