我想在perl中设置LIST_SEPARATOR,但我得到的就是这个警告:
Name "main::LIST_SEPARATOR" used only once: possible typo at ldapflip.pl line 7.
这是我的计划:
#!/usr/bin/perl -w
@vals;
push @vals, "a";
push @vals, "b";
$LIST_SEPARATOR='|';
print "@vals\n";
我确信我错过了一些明显的东西,但我没有看到它。
由于
答案 0 :(得分:12)
只有助记符可用
$" = '|';
除非你
use English;
第一
如perlvar所述。请阅读文档。
以下名称对Perl具有特殊含义。大多数标点符号都有合理的助记符或shell中的类比。不过,如果你想使用长变量名,你只需要说
use English;
位于程序的顶部。这会将所有短名称别名化为当前包中的长名称。有些人甚至有中等名字,通常是从awk借来的。一般来说,最好使用
如果你不需要$ PREMATCH,$ MATCH或$ POSTMATCH,那么use English '-no_match_vars';
调用,因为它避免了使用正则表达式造成的某种性能损失。请参阅English。
答案 1 :(得分:9)
perlvar是你的朋友:
•
$LIST_SEPARATOR
•$"
这与
$,
类似,不同之处在于它适用于插入到双引号字符串(或类似的解释字符串)中的数组和切片值。默认是一个空格。 (助记符:很明显,我认为。)
$LIST_SEPARATOR
仅在use English;
use English;
时才可用。如果您不想在所有程序中使用$"
,请改用{{1}}。相同的变量,只是一个更简洁的名称。
答案 2 :(得分:7)
稍微偏离主题(问题已经得到很好的回答),但我没有得到English
的吸引力。
缺点:
优点:
我可以看到其他读者的好处 - 特别是那些根本不了解Perl的人。但在这种情况下,如果这是一个让代码更易于阅读以后的问题,我宁愿这样做:
{
local $" = '|'; # Set interpolated list separator to '|'
# fun stuff here...
}
答案 3 :(得分:2)
你应该使用严格的编译指示:
use strict;
您可能希望使用诊断编译指示获取有关警告的更多命中(已使用-w标志启用):
use diagnostics;