我们有什么办法可以做点什么来实现这样的目标:
$str .= "some content shift(arr) some_other_content"
基本上我想在不声明任何其他变量的情况下调用数组上的shift并将值连接到字符串的中间。代码越短越好。
我尝试过类似的东西并且有效:
$str .= (("some_content" . shift(arr)) . "some_other_content");
但有更清洁或优雅(没有支架)。这不是什么大问题,但我只是好奇。
答案 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";