Perl tips series 1
print中内嵌函数
有的时候,我们想要print一些信息,但是又要对信息处理后打印,我们不得不分成两部分来做。
my @array = qw(abc de fgh);
my $tmp = join ':', @array;
print "$tmp\n";
如果特别想省去$tmp这个临时变量,可以像下面的方式来写。
@array = qw(abc de fgh);
print "@{[join ':',@array]}";
@{[code]}这种写法是把code的执行结果先转成array reference,然后在变成array,很巧妙的写法!
按照文件的创建时间排序
这个需求的出发场景是,比如一个工具生成autohref.txt文件,等再run一次,工具生成autohref1.txt,以此类推。 如果我想对最新的autohref*.txt文件进行处理,一般的方法是找匹配/autohref(\d+)\.txt/的文件,同时$1是最大的。 但是,如果用户删除了其中一个autohref4.txt,那么下次run这个工具,就有可能破坏了这个前提。所以,去找最新的这个文件是比较保险的。
my @files = glob './autohref*.txt';
my @files_in_order = sort {(stat $b)[10] <=> (stat $a)[10]} @files;
my $latest_file = shift @files_in_order;
函数stat的用法,来这里看 。