多个substr的连接有无简便快捷方法?

多个substr的连接有无简便快捷方法?

my $substr4=(substr($special,0,5).substr($area,-3,3).substr($special,-3,3));
上面这样是不行的,就是想把substr后的内容向字符串一样连接起来,不知道应该怎样搞?
my $substr4=substr($special,0,5) . substr($area,-3,3) . substr($special,-3,3);
unpack


QUOTE:
原帖由 dl0622 于 2008-11-5 16:09 发表
my $substr4=(substr($special,0,5).substr($area,-3,3).substr($special,-3,3));
上面这样是不行的,

使用 Perl 的常见错误之一,在错误的地方加括号。
方法倒是不少,都不是很高效,好像
my ($substr4)=(substr($special,0,5).substr($area,-3,3).substr($special,-3,3));

既然右边加了括号,左边也加一个,平衡一下嘛
各位兄台不要笑了,其实我那样也是可以的,之所以说不可以是因为自己要操作的配置文件的错误导致我以为不可以,真太不好意思了。


QUOTE:
原帖由 dl0622 于 2008-11-5 22:33 发表
各位兄台不要笑了,其实我那样也是可以的,

在这一点上 Perl 比较古怪,在 scalar context 中,list literal 和 array 的返回值是不同的,list literal 返回最后一个元素,而 array 则返回其元素个数,见 perldata 中的 List value constructors。

另外,加括号和不加括号,会导致右边表达式求值时的 context 发生变化。