Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:在引号中使用变量的语法_Perl - Fatal编程技术网

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

Perl:在引号中使用变量的语法,perl,Perl,在引号中,如何将变量与其他文本分开: 例如,我想打印“YellowBrick”: 您可以使用: print "@{[$var]}Brick" 我不明白的是语法:每次转义一个变量时是否都需要全部5个字符(@{[]})?@{}或[]有什么意义吗?这是一个数组,然后是对aarray的引用还是什么 基本上,我的问题是用@{[]} 谢谢 为什么不打印$var“brick”?。。保持简单:-)@{[…]}是不需要的。你只需要 print "${var}Brick"; 或 “@{EXPR}”插入表达式返

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

例如,我想打印“YellowBrick”:

您可以使用:

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

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


谢谢

为什么不打印$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.

对于简单标量,您可以只使用大括号作为分隔符:

"${var}Brick"
@{[]}
是一种允许插入任意表达式的黑客。就像它在字符串外部一样,
@{$x}
$x
视为数组引用并取消引用它<代码>[]是匿名数组引用构造函数。那么这个提法呢,

"@{[ $var ] }Brick"
表示“生成一个字符串。首先构建一个包含
$var
值的匿名数组引用,然后将此引用转换为包含
$var
值的数组,然后将一个元素的数组插入字符串中,并在其后加上文字字符串‘Brick’。”


请注意,由于
“@{[…]}”
依赖于数组插值,如果
..
是一个列表值,则它受
$list\u SEPARATOR

的约束,真正的诀窍是可以进行进一步的插值。例如,考虑[{SeaTrFF(%.02f),$var)] }。正如Aniket所暗示的,通常很少有理由使用这样的东西,但它在(比如)这里的文档中很有用,在这里,你不能跳出引号来插入一些东西,然后再返回。总而言之,使用它可能不是最好的主意,因为它可能会让其他试图理解您的代码的人感到困惑。但这是一个巧妙的技巧。

问题的目的是如何在引号内使用变量,而不是在引号外使用变量。
"${var}Brick"
"@{[ $var ] }Brick"