@array = split(//, $string); # each element a single character<?xml:namespace prefix = o />
@array = unpack("C*", $string); # each element a code point (number)<?xml:namespace prefix = o />
当然也可以使用正则表达式。Perl中也有类似atoi()的函数,叫作POSIX::strtod,在POSIX模块中,使用前应该先包含它。
SWITCH: {<?xml:namespace prefix = o />
if ($value == 1) { print "One" };<?xml:namespace prefix = o />
if ($value == 2) { print "Two" };<?xml:namespace prefix = o />
if ($value == 3) { print "Three" };<?xml:namespace prefix = o />
if ($value > 3) { print "Unknown" };<?xml:namespace prefix = o />
}<?xml:namespace prefix = o />
#Or like this:<?xml:namespace prefix = o />
SWITCH: {<?xml:namespace prefix = o />
$value == 1 and print "One", last;<?xml:namespace prefix = o />
$value == 2 and print "Two", last;<?xml:namespace prefix = o />
$value == 3 and print "Three", last;<?xml:namespace prefix = o />
print "Unknown"; #default<?xml:namespace prefix = o />
}<?xml:namespace prefix = o />
当然你也可以使用goto,毕竟TMTOWTDI(There's More Than One Way To Do It.)。
8.没有struct和union
如果你决定使用Perl编程,那么你可以完全绕开struct这类东西。union 是更为底层的东西,更不应该出现在Perl中。如果你想用struct实现数据结构,比如单链表,那么在Perl 中你可以选择hash和reference。其实hash可以实现很多数据结构,更详细的内容见《Mastering Algorithms with Perl》一书。 如果你想用struct实现class,那么你可以使用Perl中的object。最后,如果你说:“我不用struct完成不了这个程序”, 那你怎么不考虑用C而用Perl呢?
if $test print "yes"; #This one is WRONG!<?xml:namespace prefix = o />
{print "yse"} if $test; #WRONG again!<?xml:namespace prefix = o />
print "yes" if $test; #This one is right.<?xml:namespace prefix = o /> 10.不一般的do
my $val;<?xml:namespace prefix = o />
sub canuse : lvalue {<?xml:namespace prefix = o />
$val;<?xml:namespace prefix = o />
}<?xml:namespace prefix = o />
canuse() = 9;<?xml:namespace prefix = o />
它可以很安全地把右值赋给$var。