Perl:字符串不转义反斜杠
我无法理解我这么简单的陈述到底做错了什么。问题发生在线路上:Perl:字符串不转义反斜杠,perl,string,escaping,Perl,String,Escaping,我无法理解我这么简单的陈述到底做错了什么。问题发生在线路上: $this->\u validate\u hash($hashref->{$key},$schemaref->{$key},$path.(ref($hashref->{$key})?$key./“:“\\\\@$key”),$errors) 所以我希望事情以/path/to/some/\@属性结束。然而,我现在得到的是path/to/some/\\@属性。在最后一部分中,我尝试了各种组合,包括'\\'.@'$键或“\@”$键或“\\@
$this->\u validate\u hash($hashref->{$key},$schemaref->{$key},$path.(ref($hashref->{$key})?$key./“:“\\\\@$key”),$errors)代码>
所以我希望事情以/path/to/some/\@属性
结束。然而,我现在得到的是path/to/some/\\@属性
。在最后一部分中,我尝试了各种组合,包括'\\'.@'$键
或“\@”$键
或“\\@”$键
但我仍然无法摆脱反斜杠。这是perl字符串中我不知道的一些怪癖吗?谢谢 这不是一个简单的说法;它被分成两行,包含各种各样的东西。正如我所看到的,这实现了相同的结果(假设脚本中的其他地方没有使用$xpath
):
然而,它更接近可读性-仍然不是特别容易,但比原来的可读性要高得多
你的问题孩子似乎可以减少到:
use strict;
use warnings;
my $key = "attribute";
my $path = "/path/to/some/";
my $localpath = $path . "\\\@$key";
print "Key: $key\n";
print "Path: $path\n";
print "Local: $localpath\n";
该代码工作得很干净:
Key: attribute
Path: /path/to/some/
Local: /path/to/some/\@attribute
所以,要么我使用了不同的Perl(在Linux x86/64上是5.12.1),要么您的设置有所不同。考虑到我们没有所有的哈希值等,这将是很难做到的-但你应该用类似的方式分解你的问题。对我有用。你能用尽可能少的代码复制吗?好吧,现在我觉得有点愚蠢。它确实可以工作,但似乎不行,因为当我打印散列时,值是用单引号打印的。因此,“/path/to/some/\@attribute”
被呈现为“key”=>“path/to/some/\@attribute”
。谢谢你的帮助:)
Key: attribute
Path: /path/to/some/
Local: /path/to/some/\@attribute