Perl使用总结

1. 如何检查变量是否初始化?

if(defined($var))

对于数组的初始化检测,可以同样适用,但并不提倡这么做,运行会提示使用了Deprecate函数。可以通过检测数组长度判断:

if($#array eq -1){}

2. 数组遍历

my $i = 0;

while($i < $#ar) #$#取得数组@ar的最后一个索引

3. HASH遍历

while(my ($key, $value) = each %hash)

4. 获取HASH中数组或HASH

my @msgs = @{$data->{Message}};

my %msgs = %{$data->{Message}};

@{}和%{}是必要的

5. 常见的比较操作

lt(小于)、gt(大于)、eq(等于)、le(小于等于)、ge(大于等于)、ne(等于)、cmp(比较)

6. 文件读取

open(OUTPUT, ">>$output_file") || die "Could not write into file, program halting.";

print OUTPUT "\tHello World\n";

>>添加到文件末尾,>将替换文件

open(INPUT, "<$input_file") || die "Could not read from file, program halting.";

my @lines = <INPUT>;

将文件读入到数组,每行(包括换行符)为数组的一个元素

close(OUTPUT);

close(INPUT);

7. XML操作

use XML::Simple;

use Data::Dumper;

my $simple = XML::Simple->new();

my $data = $simple->XMLin('a.xml');

XML::Simple将XML文件转化为一种由数组和HASH构成的内部表示形式,非常方便处理。对于较大的XML可能造成内存不足。

Data::Dumper帮组输出数组和HASH的内容。

8. 去掉换行符

chomp,删除末尾\n。它的返回值表示是否成功,不是处理后串

$str =~ s/[\r\n]//;

9. 正则匹配

If($str =~ /^/) 如果匹配

如果想取出匹配的子串,需要添加(),这样便可以通过Perl的内部标量$i访问。(i是括号编号)

取出函数名:

$fn =~ /^\w+\s+(\w+)\s*\(.*\)/;
$fn = $1;

10. 字符串处理

length($str)

substr($str, 0) # substr($str, 0, length($str))

index($str, $substr)

uc,lc,\U,\L来修改变量的大小写

11. 参数传递

脚本参数存放在@ARGV中

函数参数存放在@_中

可以通过类似于$ARGV[0]和$_[0]进行访问

12. 执行其他程序

``命令输入,可获取命令输出

System 执行系统中的程序,并返回退出状态

Exec 结束当前程序,执行另一个外部程序,不返回

13. GUI

http://www.ibm.com/developerworks/cn/aix/library/au-perltkmodule2/

14. 找出指定串中所有匹配模式的子串

while($doc =~ /<sc\s+?id=[\w\W]+?<\/sc>/g)
{
    print "$&\n------------\n";
}

模式//g表明匹配所有可能的子串。正则表达式中的+?是为了修正表达式的贪婪性。

while循环将匹配的完整串放在变量$&中,如果使用了括号进行部分匹配,匹配的子串放在$i,其中i是括号的编号。

[\w\W]或者[\s\S]匹配所有字符,包含换行。.匹配不包含空格。

14. 获取文件绝对路径

use Cwd 'abs_path';

my $abs_file_path = abs_path($file_path);


15. 判断变量是否为HASH或数组,判断HASH或数组是否为空


%hash=('Tom'=>'Male','Jerry'=>'Female');
if ( ref($hash) eq "HASH" ) {
 print "href is a reference to a hash./n";
}

my @list = () ;
if(@list){   
 print "Not empty!\n" ;
}

my %hash = () ;
if(%hash){   
 print "Not empty!\n" ;
}

 16.s

你可能感兴趣的:(Perl使用总结)