If Else in Perl
If Else in Perl
if-elsif-else这样的语句在我们的code里再常见不过了。
my $name = "John";
sub name_solute {
my $item = shift;
my $ret;
if ($item eq "Tom") {
$ret = "Hi Tom.";
}
elsif ($item eq "Jerry") {
$ret = "Run! Run!";
}
elsif ($item eq "Lucy") {
$ret = "Where is Lily?";
}
else {
$ret = "I do not know you.";
}
return $ret;
}
my $solute = name_solute($name);
如果我们换一种方式,比如三元式,可能更好看一点。
my $solute =
$name eq "Tom" ? "Hi Tom." :
$name eq "Jerry" ? "Run! Run!" :
$name eq "Lucy" ? "Where is Lily?" :
"I do not know you." ;
另外提一种比较好的数据结构,可以用来实现比较复杂的逻辑或者小环境。
my $ref_var = {
"name" => [[],\&name_proc] ,
"address" => [[],\&addr_proc] ,
"mail" => [[],\&mail_proc]
};
push( @{ $ref_var->{name}->[0] }, "John Smith");
push( @{ $ref_var->{address}->[0] }, "Beijing, China");
push( @{ $ref_var->{mail}->[0] }, "john\@gmail.com");
&{ $ref_var->{name}->[1] }( @{ $ref_var->{name}->[0]} );
&{ $ref_var->{address}->[1] }( @{ $ref_var->{address}->[0]} );
&{ $ref_var->{mail}->[1] }( @{ $ref_var->{mail}->[0]} );
sub name_proc {
my $item = shift;
print "Hello, $item\n";
}
sub addr_proc {
my $item = shift;
print "He lives in $item\n";
}
sub mail_proc {
my $item = shift;
print "You can contact to $item\n";
}
首先,$ref-var是一个hash的reference ,它的各个key所对应的都是一个list的reference。每一个list里面,又分成一个空的list的reference,用来存input变量,以及一个函数指针。这个结构不错呦,我也是从大神那搬过来的,O(∩_∩)O哈哈~