• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

perl代码技巧

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

perl代码可以说要多简洁有多简洁,下面是一些我日常工作中积累的技巧

($a, $b) = ($b, $a);

列表移位

($a, $b, $c) = ($b, $c, $a);

将字符串拆分为字符

my $str = 'abcd';
my @chars = split //, $str;

巧用unless

unless(condition){
#do something
}

相当于

if(condition){
#...
}
else{
#do something
}

所以,使用unless可以减少代码行数,下面是一个例子

if(-e file){
#read file
}
else{
die"file not exists!\n" ;
}

可以写成

unless(-e file){
print"file not exists!\n" ;
}

使用or操作符

and和or都是短路操作符,a and b如果a为false,则不再计算b,a or b若a为真则不再计算b。所以用a or b可以实现和unless类似的功能,其语义是,除非满足条件a,否则执行b。看一个例子

chdir'/usr/spool/news' or die"Can't cd to spool: $!\n"

一次性读入整个文件

方法一:

my $text = do {local $/; <$XML>};

方法二:

sysread $fh, $text, -s $fh;

方法三: 使用Perl6::Slurp模块

use Perl6::Slurp;

sub test {
# Slurp file by name

my $xml_file = 'EJV.xml';
my $text = slurp $xml_file;
print $text, "\n";

# Slurp file by handle

my $xml_file = 'EJV.xml';
open my $XML, '<', $xml_file or die $!;
my $text = slurp $XML;
print $text, "\n";
}

获取引用参数并解引用为数组,shift前面的加号is just a placeholder to let perl know 'shift' is not a regular string.

sub bar {
    return @{ shift() };
    #return @{ +shift };
}

调用
sub test {
    my @a = (1, 2, 3);
    my @bar = bar(\@a);
}

==


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl 引用与匿名数组发布时间:2022-07-22
下一篇:
13-Perl子程序(函数)发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap