【问题标题】:perl string escape [closed]perl 字符串转义 [关闭]
【发布时间】:2012-07-26 19:31:32
【问题描述】:

我希望在 Perl 字符串中转义特殊字符,例如引号和空格。

我想避免使用正则表达式和安装额外的模块。

【问题讨论】:

  • 转义为什么数据格式/语言? (为 HTML 转义数据与为 SQL 等转义数据是完全不同的问题)
  • “我想避免使用正则表达式和安装额外的模块。” - 这些是(IMO)首先选择 Perl 的两个最大原因。你为什么要避开他们?
  • 你能举个例子说明你想要什么吗?
  • 很难说出这里究竟问的是什么。请阅读Writing the perfect question 并重试。
  • 在这种情况下使用正则表达式是一种非常糟糕的做法,因为要重新发明轮子,而且有很多方法会让你忘记一些事情并搞砸。我不想安装额外的模块,因为我在没有太多权限的服务器上运行我的脚本。所以我一直在寻找@Borodin 似乎已经知道的标准程序。我真正的错误确实是没有具体说明我想要什么样的逃避。无论如何,谢谢。

标签: string perl escaping


【解决方案1】:

使用quotemeta 可能会对您有所帮助。

my $escaped = quotemeta $string_with_quotes_and_spaces;

任何不是字母数字或下划线的东西都会用反斜杠转义。

【讨论】:

    【解决方案2】:

    如果您收到的是字符串,那么 Borodin 的 quotemeta 解决方案将起作用。

    如果是声明字符串,可以使用qq开关声明自己的字符串分隔符。例如使用 # 而不是 ' 或 ":

    my $string = qq#Didn't know I could do this!"how" amazing#;
    

    这将转义通常的字符串分隔符。

    【讨论】:

    • 是的,这对我的情况并没有真正的帮助,但无论如何还是谢谢你的小费;)
    • qq// 不会逃避任何事情。这只是一种将" 以外的分隔符用于双引号字符串的一种方式。
    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多