我用Perl编写了以下代码:
if (index ($retval, $_[2]) != -1) {
@fs = split ($_[2], $_[1]);
$_[2]
是分隔符变量,$_[1]
是分隔符可能存在的字符串。(在其他地方使用$_[0]
)您可能已经猜到,这段代码是通过这些变量名在子例程中的。
不管怎样,关于我的问题,当我的分隔符是像'a'
或':'
这样无害的东西时,代码就会像它应该的那样工作。但是,当它是由Perl regex解析的东西时,比如'\'
字符,它就不能正常工作了。这是有意义的,因为在split函数中,Perl将看到类似以下内容:
split (/\/, $_[1]);
这对它来说毫无意义,因为它想要的是:
split (/\//, $_[1]);
因此,考虑到所有这些,我无法回答的问题是:“我如何才能使我放入$_[2]
中的任何分隔符或所有ASCII码字符都被视为它应该是的字符,而不是被解释为其他字符?”
提前谢谢你,
罗伯特
发布于 2009-04-15 14:47:03
发布于 2009-04-15 14:46:46
split /\Q$_[2]/, $_[1]
发布于 2009-04-16 01:50:47
顺便说一句,我怀疑$_[1]
和$_[2]
变量引用了自动传入的sub的@_
数组。
这是很有帮助的--可以省去你在这里的一些解释,并让你的代码更容易理解--以及在sub的开头使用如下内容的常见做法:
sub mysub {
my ($param1, $string, $delim) = @_;
# ...
}
https://stackoverflow.com/questions/754028
复制相似问题