代码之家  ›  专栏  ›  技术社区  ›  Aaron

为什么不能在Perl中设置$list_分隔符?

  •  3
  • Aaron  · 技术社区  · 16 年前

    我想用Perl设置列表分隔符,但我得到的只是以下警告:

    Name "main::LIST_SEPARATOR" used only once: possible typo at ldapflip.pl line 7.
    

    这是我的计划:

    #!/usr/bin/perl -w
    
    @vals;
    push @vals, "a";
    push @vals, "b";
    
    $LIST_SEPARATOR='|';
    
    print "@vals\n";
    

    我确信我遗漏了一些明显的东西,但我看不到。

    谢谢

    4 回复  |  直到 13 年前
        1
  •  9
  •   Chris Lutz    16 年前

    perlvar 是你的朋友:

    艾斯蒂 $LIST_SEPARATOR
    艾斯蒂 $"

    这就像 $, 但它适用于插入到双引号字符串(或类似的解释字符串)中的数组和切片值。默认为空格。(助记符:我觉得很明显。)

    利斯塔分离器 只有在您 use English; 如果你不想 使用英语; 在所有程序中,使用 $ 相反。相同的变量,只是有一个更简洁的名称。

        2
  •  12
  •   ephemient    16 年前

    只有助记键可用

    $" = '|';
    

    除非你

    use English;
    

    第一。

    如上所述 perlvar . 请看一下文件。

    以下名称对Perl有特殊意义。大多数标点符号名称在外壳中都有合理的助记法或类似物。不过,如果您希望使用长变量名,只需说

    使用英语;
    

    在你的计划的顶端。这会将当前包中的所有短名称命名为长名称。有些甚至有中等的名字,通常是从awk借来的。一般来说,最好使用

    use English '-no_match_vars';
    

    如果不需要$prematch、$match或$postpatch,则调用它,因为它避免了使用正则表达式会影响某些性能。见 English .

        3
  •  7
  •   Telemachus MrJames    16 年前

    稍微偏离主题(这个问题已经得到了很好的回答),但我不明白 English .

    欺骗:

    • 更多的打字
    • 名字不太明显 仍然 必须查清楚)

    赞成的意见:

    • ?

    我可以看到 其他 读者,尤其是对Perl不太了解的人。但在这种情况下,如果这是一个使代码更具可读性的问题 后来 ,我宁愿这样:

    {
      local $" = '|'; # Set interpolated list separator to '|'
      # fun stuff here...
    }
    
        4
  •  2
  •   Yann    16 年前

    您应该使用严格的pragma:

    use strict;
    

    您可能希望使用diagnostics pragma获取有关警告的其他点击(您已经使用-w标志启用了这些警告):

    use diagnostics;
    
    推荐文章