perl - 如何在 Perl 中将多行获取到单个变量?

标签 perl

以下是我的 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/

相关文章:

perl - 匈牙利符号是否适用于 Perl?

perl - 使用 perl s/.../.../e 打印到文件描述符

perl - 如何获取 perl 模块中当前启用的一组警告检查?

linux - 试图计算 perl 中一行中的字符数,但失败了

perl - 有没有系统的方法来检查 `strict refs` ?

perl - 为什么我从 Perl 收到 "Day too big"错误?

perl - Inline::Python 的不安全依赖

xml - 注销上下文节点范围内的命名空间

python - 如何在Linux环境中解码丝绸文件并将其转换为PCM/WAV格式

perl - 在perl中解析日期字符串