perl 代码搜集

1. GETOPT 处理参数 代码简化

我的代码:

   'r=s' => sub{
                  my ($opt_name,$opt_value)=@_;
                  if($opt_value eq "all") {$replica=0;}
                 elsif($opt_value eq "1") {$replica=1;}
                  elsif($opt_value eq "2") {$replica=2;}
                  elsif($opt_value eq "3") {$replica=3;}
                  else {usage();}
              },
别人的精华:

   

【话唠】Mc
my $hash = { all => 0, 1 => 1, 2 => 2, 3 => 3 };

usage() unless exists $hash->{ $opt_value };
$replica = $hash->{ $opt_value };
【活跃】
my $hash = { all => 0, 1 => 1, 2 => 2, 3 => 3 };
【活跃】
%hash?
【话唠】
hash ref
my %hash = ( all => 0, … );
一直比较习惯用  ref

枚举 不在条件判断里枚举 就在其他地方枚举 比如hash key和value枚举
灰灰
@list =qw/all 1 2 3/;use List::Util qw/first/; $replica = first {$_ eq $opt_value} @list;  
小灰(3072574066)  9:46:42 PM
模块: List::Util
版本: 1.41
作者: PEVANS
简述: A selection of general-utility list subroutines
链接: https://metacpan.org/pod/List::Util
用法概要: 
        use List::Util qw(first max maxstr min minstr reduce shuffle sum);
灰灰
手机太难打字了 大一些示意代码 你参考吧
$_ eq "all"?0:$_


文件测试操作符

grep -f $directory/$_, readdir THEDIR;

黑哥
 因为当前目录不是 $directory, 而 $_ 只是 basename.
小七
要用完整的名字来测试它是不是一个普通文件或者目录 ?
黑哥
相对于当前目录下, 文件的全路径应该是 ./$directory/$_
直接 $_ 的话,会找不到文件啊.
不是必须用全路径测试,你也可以 cd 到 $directory, 再 -f,


捕捉执行其它脚本的错误

exit 1 $?>>8 
very useful

Perl调用外部命令的方式和区别

http://www.cnblogs.com/itech/archive/2010/11/25/1887836.html

$'代表匹配出来的内容之后的内容
$&代表匹配出来的内容
$`代表匹配出来的内容之前的内容



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值