Perl 5 的 pick-your-own-quotes 运算符的合法分隔符是什么?
What are the legal delimiters for Perl 5's pick-your-own-quotes operators?
perlop 提供了可用于 q
、qq
、s
等的各种分隔符示例,包括 '
、/
、 #
和 {
(以 }
而不是自身结束)。但是,允许的规则究竟是什么?我注意到您不能使用例如空格或字母(编辑:如果您在运算符名称后放置空格,则允许使用字母)。
我们在 Regex Quote-Like Operators in perlop 下 m/PATTERN/msixpodualngc
With the m
you can use any pair of non-whitespace (ASCII) characters as delimiters
[...]
When using a delimiter character valid in an identifier, whitespace is required after the m
.
所以如果你想使用单词字符作为分隔符,你需要用白色space将它与运算符分开。这适用于正则表达式和非正则表达式的使用。
$ perl -le'print qq afooa'
foo
唯一不需要 m
的是斜线 (/
)。
唯一不需要 q
的是撇号 ('
)。
唯一不需要 qq
的是引号 ("
).
唯一不需要 qx
的是重音符号 (`
)。
显然,与所选分隔符相同的引号字符必须转义。
有用的读物是Gory details of parsing quoted constructs (perlop)
可以在 Programming Perl 中的第 2 章 Pick Your Own Quotes 下找到一般引用的简化直接规则 点点滴滴(第3版)
... any nonalphanumeric, nonwhitespace delimiter may be used
参考 table 很像 in perlop。
虽然这直接来自 Camel,请注意在运算符和字符串之间使用 space 我们 也可以使用字母数字分隔符 ,如开头所示.在 use utf8;
Unicode may be used as well, thanks to ysth 下。
感谢 ikegami 的评论和编辑。
由于问题是关于确切的规则,我想指出我在文档中找不到一个全面的声明。虽然这里的第一个引用是完整的,但它指的是 Regex 的使用。 perlop
中有关一般 Quote-Like 运算符的前一节未指定定界符(但适用相同的规则)。
perlop 提供了可用于 q
、qq
、s
等的各种分隔符示例,包括 '
、/
、 #
和 {
(以 }
而不是自身结束)。但是,允许的规则究竟是什么?我注意到您不能使用例如空格或字母(编辑:如果您在运算符名称后放置空格,则允许使用字母)。
我们在 Regex Quote-Like Operators in perlop 下 m/PATTERN/msixpodualngc
With the
m
you can use any pair of non-whitespace (ASCII) characters as delimiters
[...]
When using a delimiter character valid in an identifier, whitespace is required after them
.
所以如果你想使用单词字符作为分隔符,你需要用白色space将它与运算符分开。这适用于正则表达式和非正则表达式的使用。
$ perl -le'print qq afooa'
foo
唯一不需要 m
的是斜线 (/
)。
唯一不需要 q
的是撇号 ('
)。
唯一不需要 qq
的是引号 ("
).
唯一不需要 qx
的是重音符号 (`
)。
显然,与所选分隔符相同的引号字符必须转义。
有用的读物是Gory details of parsing quoted constructs (perlop)
可以在 Programming Perl 中的第 2 章 Pick Your Own Quotes 下找到一般引用的简化直接规则 点点滴滴(第3版)
... any nonalphanumeric, nonwhitespace delimiter may be used
参考 table 很像 in perlop。
虽然这直接来自 Camel,请注意在运算符和字符串之间使用 space 我们 也可以使用字母数字分隔符 ,如开头所示.在 use utf8;
Unicode may be used as well, thanks to ysth 下。
感谢 ikegami 的评论和编辑。
由于问题是关于确切的规则,我想指出我在文档中找不到一个全面的声明。虽然这里的第一个引用是完整的,但它指的是 Regex 的使用。 perlop
中有关一般 Quote-Like 运算符的前一节未指定定界符(但适用相同的规则)。