【发布时间】:2016-05-29 16:29:24
【问题描述】:
我正在使用 Perl 5.16.2 来尝试计算 $_ 字符串中特定分隔符的出现次数。分隔符通过@ARGV 数组传递给我的Perl 程序。我验证它在程序中是正确的。我计算字符串中分隔符数量的指令是:
$dlm_count = tr/$dlm//;
如果我硬编码分隔符,例如$dlm_count = tr/,//; 计数正确。但是当我使用变量 $dlm 时,计数是错误的。我修改了指令说
$dlm_count = tr/$dlm/\t/;
并从如何将制表符插入到字符串中意识到该操作正在替换“$”、“d”、“l”或“m”这四个字符中的任何一个的每个实例" 到 \t — 即构成我的变量名 $dlm 的四个字符中的任何一个。
这是一个说明问题的示例程序:
$_ = "abcdefghij,klm,nopqrstuvwxyz";
my $dlm = ",";
my $dlm_count = tr/$dlm/\t/;
print "The count is $dlm_count\n";
print "The modified string is $_\n";
$_ 字符串中只有两个逗号,但此程序会打印以下内容:
The count is 3
The modified string is abc efghij,k ,nopqrstuvwxyz
为什么$dlm 标记被视为四个字符的文字字符串而不是变量名?
【问题讨论】:
标签: perl