一个常见的“Perlism”是生成一个列表,作为某种东西以这种形式循环:
for($str=~/./g) { print "the next character from \"$str\"=$_\n"; }
$str
,并将该值赋给
$_
而不是正则表达式,
split
'a'..'z'
,
map
我正在调查
unpack
生成字符串的逐字段解释。我总是发现
作为一个简单的例子,我想使用unpack从字符串中生成一个列表,每个元素中有一个字符(是的,我知道我可以用
split(//,$str)
/./g
但我真的很想看看解包是否可以这样使用……)
unpack("A1" x length($str), $str)
但是有没有其他的方式看起来像是全球化?艾丽,我能打电话吗
unpack(some_format,$str)
The Perl 5.12 Pack pod
以及
Perl 5.12 pack tutorial
和
the Perkmonks tutorial
以下是示例代码:
#!/usr/bin/perl
use warnings;
use strict;
my $str=join('',('a'..'z', 'A'..'Z')); #the alphabet...
$str=~s/(.{1,3})/$1 /g; #...in groups of three
print "str=$str\n\n";
for ($str=~/./g) {
print "regex: = $_\n";
}
for(split(//,$str)) {
print "split: \$_=$_\n";
}
for(unpack("A1" x length($str), $str)) {
print "unpack: \$_=$_\n";
}