如果你看一下文件运行:
perldoc -f split
你会看到三种形式的论点,即split
可以采取:
split /PATTERN/,EXPR,LIMIT
split /PATTERN/,EXPR
split /PATTERN/
这意味着,即使当你通过split
一个字符串作为第一个参数perl
将其强制为正则表达式。
如果我们在试图做这样的事情在re.pl
当我们得到的警告:
$ my $string_with_backslashes = "Hello\\there\\friend";
Hello\there\friend
$ my @arry = split('\\', $string_with_backslashes);
Compile error: Trailing \ in regex m/\/ at (eval 287) line 6.
我们看到,首先,作为一个反斜线后跟一个实际的反斜杠,其计算结果为'\\'
插值一个反斜杠。
split
然后把我们给它反斜杠,并强制转换为正则表达式,就好像我们已经写:
$ my @arry = split(/\/, $string_with_backslashes);
不工作,因为只有这被解释为只是逃避单反斜线它后面的正斜杠(没有终止/
)表明正则表达式已经结束。
你在路径中的逃跑是错误的。在双引号字符串中,“\ Folder”被解释为转义序列“\ F”。 – TLP
对split分隔符模式使用引号是不好的做法,因为它不能正确表达语义并导致双重编译。总是使用斜线,除非你想传递一个空格字符串来调用默认行为,当''''是正确的选择。 – Borodin
@TLP是的,我知道,我通常只为路径放置单引号。谢谢 –