gpt4 book ai didi

Perl q 函数或单引号不能正确返回 UNC 路径的字符串文字

转载 作者:行者123 更新时间:2023-12-04 22:04:05 25 4
gpt4 key购买 nike

Perl 的 q 函数或单引号应该返回输入的字符串文字(除了 \' )。但对于以下场景,它不会按预期工作。
我想打印以下UNC路径

\\dir1\dir2\dir3

所以我用过
my $path = q(\\dir1\dir2\dir3); 

或者
my $path = '\\dir1\dir2\dir3'; 

但这在前面跳过了一个反斜杠。
所以如果我打印它,即 print $path; 它会打印
\dir1\dir2\dir3

我想知道为什么?我必须在 UNC 路径的开头键入 3 或 4 个反斜杠才能使其按预期工作。我错过了什么?

最佳答案

来自 perldoc perlop :

q/STRING/

'STRING'

A single-quoted, literal string. A backslash represents a backslash unless followed by the delimiter or another backslash, in which case the delimiter or backslash is interpolated.


改变:
my $path = q(\\dir1\dir2\dir3);
至:
my $path = q(\\\dir1\dir2\dir3);

至于为什么,这是因为 Perl 允许您通过使用反斜杠将引号分隔符转义到字符串中:
my $single_quote = 'This is a single quote: \'';
但是如果分隔符之前的反斜杠总是转义分隔符,就没有办法用反斜杠结束字符串:
my $backslash = 'This is a backslash: \'; # nope
允许转义反斜杠也可以解决这个问题:
my $backslash = 'This is a backslash: \\';

关于Perl q 函数或单引号不能正确返回 UNC 路径的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com