String 在Perl中向固定字符串追加字符串变量
我有一个在提示符下输入的变量:String 在Perl中向固定字符串追加字符串变量,string,perl,append,String,Perl,Append,我有一个在提示符下输入的变量: my $name = <>; ^当我打印出来时,\u one会出现在下一行,当我使用它时,\u one根本不包括在内 此外: ^“u one”出现在字符串的开头 以及: 所有这些都不会产生我想要的结果,因此我可能遗漏了一些与如何从提示符格式化输入相关的内容。感谢您的想法 您的问题与字符串附加无关:当您读取一行(例如通过)时,记录输入分隔符包含在该字符串中;这通常是一个新行\n。要删除换行符,chomp变量: my $name = <ST
my $name = <>;
^当我打印出来时,\u one
会出现在下一行,当我使用它时,\u one根本不包括在内
此外:
^“u one”
出现在字符串的开头
以及:
所有这些都不会产生我想要的结果,因此我可能遗漏了一些与如何从提示符格式化输入相关的内容。感谢您的想法 您的问题与字符串附加无关:当您读取一行(例如通过
)时,记录输入分隔符包含在该字符串中;这通常是一个新行\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"
这会将\u one
附加到字符串中,并仍将其存储在$name
中:
$name .= "_one"
啊,这是有趣的关于新行字符-chomp立即解决了问题!我也尝试过那些附加的方法,但运气不好——但现在它们都起作用了!谢谢有趣的我在想,使用
“${name}\u one”
比使用像“$name\\u one”
或$name>这样笨拙的结构要好得多。“\u one”
@JonathanLeffler感谢您的编辑。到目前为止,我还处于“${foo}
是清晰的语法,而不是过时的bash”阵营,我最初的建议更糟。我做了相应的编辑。
my $end = '_one';
my $one = $name.$end;
or
my $one = "$name$end";
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" # what you used
"$name\_one" # _ must be escaped, else the variable $name_one would be interpolated
$name . "_one"
sprintf "%s_one", $name
# etc.
$name .= "_one"