如何为Perl脚本打印添加换行符

fsi*_*vic 3 macos perl

我遇到了一个基本的perl脚本问题.下面是脚本.

$message = "Hello, World!";
print $message;
Run Code Online (Sandbox Code Playgroud)

问题是它在同一行打印我的用户名命令提示符.我提供了所描述问题的屏幕截图.我只想在脚本中添加换行符.这可能吗?

在此输入图像描述

del*_*ver 10

我只想在脚本中添加换行符.这可能吗?

是的 - 使用换行符,\n.

my $msg = "Hello World!\n";
Run Code Online (Sandbox Code Playgroud)

注意perl中单引号和双引号之间的区别.以上将使用换行符打印.但是这个:

my $msg = 'Hello World!\n';
Run Code Online (Sandbox Code Playgroud)

最后会打印一个文字\n.区别在于双引号字符串是内插的:变量和转义序列,例如\n可预测地替换.单引号字符串不是,所以:

print '$msg';
Run Code Online (Sandbox Code Playgroud)

还会按字面打印$ msg,而不是变量的内容$msg.

\n或多或少是普遍的; 我不知道它是否源自C或之前的东西,但它和各种其他反斜杠字符(例如,\t对于制表符)对于我所知道的所有语言都是通用的,包括shell.正确的术语实际上是转义序列,因为它\是影响下一个字符解释的转义字符.要在插值字符串中打印单个反斜杠,必须先使用转义:

print "\\ <- A single backslash\n";
Run Code Online (Sandbox Code Playgroud)

反斜杠也用作正则表达式中的转义字符.单引号和双引号字符串之间的区别不像反斜杠转义那样通用,但它在某些其他高级语言中使用.