在字符串perl中调用shift方法

时间:2013-12-20 04:01:52

标签: perl string-concatenation

我们有什么办法可以做点什么来实现这样的目标:

$str .= "some content shift(arr) some_other_content"

基本上我想在不声明任何其他变量的情况下调用数组上的shift并将值连接到字符串的中间。代码越短越好。

我尝试过类似的东西并且有效:

$str .= (("some_content" . shift(arr)) . "some_other_content");

但有更清洁或优雅(没有支架)。这不是什么大问题,但我只是好奇。

3 个答案:

答案 0 :(得分:4)

是的,有:

use strict;
use warnings;

my @arr = qw/ and even /;
my $str = "This is ";

$str .= "some content @{[shift @arr]} some_other_content.";

print $str;

输出:

This is some content and some_other_content.

这是baby cart

答案 1 :(得分:3)

Perl在这里并不像Ruby那样整洁,而且很大程度上取决于上下文,但你可以写

$str .= sprintf "some content %s some_other_content", shift @arr

这有帮助吗?

答案 2 :(得分:2)

表达式永远不会在带引号的字符串中进行求值,您必须使用连接。但是您不需要括号,默认优先级适用于此表达式。

$str .= "some content" . shift(@arr) . "some_other_content";