在 Perl 中将字符串变量附加到固定字符串

Posted

技术标签:

【中文标题】在 Perl 中将字符串变量附加到固定字符串【英文标题】:Appending a string variable to a fixed string in Perl 【发布时间】:2012-09-09 16:15:22 【问题描述】:

我有一个在提示符下输入的变量:

my $name = <>;

我想在此附加一个固定字符串'_one'(在一个单独的变量中)。

例如如果$name = Smith 则变为'Smith_one'

我尝试了几种不同的方法,但都没有给我正确的结果,例如:

my $one = "$name_one";

^ _one 在我打印出来时出现在下一行,而当我使用它时,_one 根本不包括在内。

还有:

my $one = $name."_one";

^ '_one' 出现在字符串的开头

还有:

my $end = '_one';
my $one = $name.$end;
or 
my $one = "$name$end";

这些都不会产生我想要的结果,所以我可能错过了一些与提示中的输入格式相关的内容。想法赞赏!

【问题讨论】:

【参考方案1】:

您的问题与字符串附加无关:当您读取一行时(例如通过&lt;&gt;),那么记录输入分隔符在该字符串中包含;这通常是换行符\n。要删除换行符,chomp 变量:

    my $name = <STDIN>; # better use explicit filehandle unless you know what you are doing
    # now $name eq "Smith\n"
    chomp $name;
    # now $name eq "Smith"

要将变量内插到字符串中,通常不需要您使用的$name 语法。这些行都会将_one 附加到您的字符串并创建一个新字符串:

    "$name_one"  # what you used
    "$name\_one"   # _ must be escaped, else the variable $name_one would be interpolated
    $name . "_one"
    sprintf "%s_one", $name
    # etc.

这会将_one 附加到您的字符串并仍将其存储在$name

    $name .= "_one"

【讨论】:

啊,换行符很有趣- chomp 立即解决了问题!我也尝试过这些附加方法,但没有运气 - 但现在它们都起作用了!谢谢! 有趣;我在想使用"$name_one" 比使用"$name\_one"$name . "_one" 之类的尴尬结构要好得多。 @JonathanLeffler 感谢您的编辑。到目前为止,我也属于“$foo 是清晰的语法,而不是过时的 bash 主义”阵营,而且我最初的建议更糟。我已经进行了相应的编辑。

以上是关于在 Perl 中将字符串变量附加到固定字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将 int 附加到字符串? [复制]

在 Perl6 中将多个值附加到数组

在 Perl 中将文件转换为字符串的最佳方法是啥?

在perl中将日期转换为纪元的最佳方法[关闭]

如何从 C 中将新的字符串元素附加到 Swift 中的数组

如何在 pandas 中将新类别附加到 HDF5?