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
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:$_
@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
very useful
Perl调用外部命令的方式和区别
http://www.cnblogs.com/itech/archive/2010/11/25/1887836.html$'代表匹配出来的内容之后的内容
$&代表匹配出来的内容
$`代表匹配出来的内容之前的内容