一、<>运算符,多用于文件操作。
$kkk=<STDIN>; chomp $kkk; print($kkk);
第一句<STDIN>指从标准输入中获得输入。
第二句chomp为去除串尾多余字符,因收到的输入是带回车换行符的。
第三句,打印出输入内容。
在Perl中,print “ffffff”;和print(“ffffff”);均为可接受形式。类似于哪种语言?好象是vb吧。
二、if 语句
$expr=<STDIN>; chomp $expr; if ($expr>5) { print ">5"; }elsif($expr==5) { print "=5"; } else {print "<5";}
注意其中的elsif,windows或unix shell脚本跟它挺象。
三、循环语句:
for ,while 循环与C等类似。
对应于break和continue语句,有last和next对应。
$kkk=<STDIN>; chomp $kkk; $i=1; while($i<$kkk) { print $i; last if ($i>5); $i++; }
若输入10时,程序将在打印6之后退出。
$kkk=<STDIN>; chomp $kkk; $i=1; while($i<$kkk) { print $i; next if($i==3); last if ($i>5); $i++; }
中间加入next if($i==3);后是什么情况?悲剧的陷入了死循环。因为值为3时$i++被跳过,所以会重复打印3。
四、文件操作
open(MYTXT,"nnn.txt")||die;
此程序执行时,若nnn.txt不存在,则会在屏幕打印Died at open line 1.并结束。
若在die后加上 “ffffffffffffffffff”,则会打印 fffffffffffffff at open line 1.
有一特殊变量$!,将返回程序最后一个错误,因此可用die $!;来输出错误信息,是不是跟shell的系统变量很象?
$line=<MYTXT>;
此时$line即为文件的一行,若文件至结尾,则返回为空。
while (defined($a=<MYTXT>)) { print $a; }
打印文件每行。
open my $aaa ">tttt.txt"; print $aaa "gggggggggggg"; close my $aaa
将向文件tttt.txt中写入一行gggggggggggg
注意,$aaa与”ggggggggggggg”切不可有逗号,否则print无法识别$aaa为文件描述符。
五哈希表,其实也就是键值对,与python中的dict类型变量相似。
在perl中hash表是一种特殊的数组。
%aa=(aaa=>"111",bbbb=>"222");#很有特色的哈希表初始化形式。若直接打印%aa,则为aaa111bbbb222等等。 $aa{ccc}='333333333'; print $aa{ccc};
其实ccc加不加引号都不影响结果,perl会自动转换。
六 模块
use Cwd;
这是引入一个目录操作模块的用法,当然use strict;是use的一种不同用法,可见use 后并非一定跟有模块名。
执行后,将会把Cwd模块中一些函数导入空间中。可在系统命令下用perldoc Cwd查看相关帮助说明。
如:
use Cwd; print "-----------------"; print getcwd; print "\n";
即是使用Cwd中的getcwd函数。获取当前所在目录。
七 系统变量
@INC 是系统默认查找模块的路径
print @INC可在程序中打印出来。
foreach (@INC){ print $_; print "\n"; }
$_是个特殊的变量,用于依次取得集合中的值。
perl -v显示perl的版本说明。
perl-V则会显示当前安装的perl的详细信息。也包含有@INC的值。
八 正则表达式
正则表达式显然是perl的核心,如下一个正则的例子:
while ( <$in> ) { s/^PROJECTDIR=(.*)$/PROJECTDIR=$pwd/g; s/^PREFIX=(.*)$/PREFIX=$prefix/g; print $out $_; }
<$in>显然是从文件中读取一行。
而while体内,并无行变量,那么$_通常在没有明确声明变量时出现。
用过vi的,会理解s/^PROJECTDIR=(.*)$/PROJECTDIR=$pwd/g;这句的用法,即在本行($_)中搜索^PROJECTDIR=(.*)$,即所有PROJECTDIR起头的行,然后替换为PROJECTDIR=$PWD。若在vi中使用,与此处用法完全一样,但若要全文内替换,则前面加上%即可。
print $out $_;即是将替换后的本行写入输出文件。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/336.html