以下是我的 Perl 编程案例:
案例1
print "User input :\n";
my $test = <>;
print "\nTest1:\n $test";
案例2
my $test2="hello
how are you";
print "\nTest2:$test2";
在情况 1 中,我传递的输出如下:
hello
how are you
但它只考虑 hello(第一行)
在情况 2 中,我分配给变量 test2。
它正在考虑两条线。
有人可以帮我从用户输入中将这两行读取到单个变量吗?
最佳答案
你可以设置$/
,这是一个特殊变量,告诉perl在遇到换行符时不要停止捕获输入。
然而,一旦你设置了这个,如果你从 STDIN 捕获,那么按 Enter 结束输入将不再有效 - 相反,你需要使用 ctrl+d在 posix 上或在 Windows 上按 ctrl+z 结束输入。
这是一个例子:
use Modern::Perl;
local $/ = undef;
my $value = <>; # enter multiline string end with Ctrl-D or Ctrl-Z
print "VALUE = $value";
最后,如果您在函数中使用 $/
,那么使用 local
关键字很重要。这意味着 $/
只会在您的函数范围内设置,不会影响其他捕获。
关于perl - 如何在 Perl 中将多行获取到单个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200049/