Perl:在引号中使用变量的语法

标签 perl

在引用中,如何将变量与其他文本分开:

例如,我想打印“YellowBrick”:

my $var = 'Yellow';

print "$varBrick";

# $varBrick not defined!!

您可以使用:

print "@{[$var]}Brick"

我不明白的是语法:每次转义一个变量时都需要全部 5 个字符 (@{[]}) 吗? @{} 或 [] 有什么意义吗?这是在创建一个数组,然后是一个数组的引用还是什么?

基本上我的问题是可以用 @{[]}

做哪些其他技巧

谢谢!

最佳答案

@{[...]} 不需要。你只需要

print "${var}Brick";

print $var."Brick";

"@{ EXPR }" 插入由表达式返回的引用引用的数组。

[ LIST ] 是数组构造器。它返回对新数组的引用,该数组通过将括号内的列表分配给数组来初始化。

这意味着

"@{[$var]}Brick"

相同
"@{ my @anon = $var; \@anon }Brick"

显然,我上面提出的解决方案要好得多。 @{[...]} 将允许您在字符串文字中嵌入 Perl 代码。

"...@{[ uc($var) ]}..."

如果只是一个标量,也可以使用以下方法:

"...${\ uc($var) }..."

也就是说,我更喜欢使用连接而不是创建不必要的引用。

"...".( uc($var) )."..."   # The parens aren't needed here.

关于Perl:在引号中使用变量的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15354392/

相关文章:

perl - 如何将参数传递给 perl qw[]?

mysql - 测试脚本 - 查找打开的 MySQL 端口并检查数据库

perl - 在 Perl 中取消引用字符串

perl - 如何从 cron 运行的 Perl 脚本中运行 shell 脚本?

Perl:如何漂亮地打印时间差(持续时间)

regex - 如何使用 UNIX 从多个文件中删除所有 <script> 标记(以及其间的所有内容)?

perl - Net::Server 与 MongoDB 不兼容

perl - 我可以在递减值的同时推送到数组吗?

perl - 如何在不使用 Perl 格式的情况下格式化列?

perl - 什么意思 "Can' t locate object method.."在这个使用 Perl 的具体例子中?