Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Perl中向固定字符串追加字符串变量_String_Perl_Append - Fatal编程技术网

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"