Perl - 如何在Perl shell/解释器中直接键入/执行/运行Perl语句?

4

如何在Perl shell/解释器中输入和执行Perl语句?

首先,我使用的是Windows系统...并且已经安装了适用于MSWin32-x64-multi-thread的Strawberry Perl(v5.32.1)。

因此,如果我只是在命令行中键入:

perl

...似乎进入了Perl的“shell/解释器”,但如果我输入一些Perl语句:

my $greeting = "Hello World :-)\n";
print($greeting);

我该如何使它执行这两个语句呢?

如果我按下Ctrlc,则会显示:Terminating on signal SIGINT(2)

如果有关系的话,我想这样做是为了在学习Perl语言时可以进行测试。


1
尝试使用Ctrl+Z,在MSWin上应该是文件结束符(在*nix上是Ctrl+D)。或者输入__END__ - choroba
Devel::REPL自带一个名为re.pl的脚本,您可能会发现它非常方便。 - Jim Davis
1
请记住,perl不是一个REPL。它是Perl编译器,因此它期望一个完整的程序。您不能逐行运行。在现场运行东西的最简单方法是使用IDE并配置快捷方式以运行当前文件。在VSCode中,我使用code runner。或者您可以保存,Alt+Tab,然后在终端中重新运行upenter - simbabque
1
你可以将Perl代码作为一行命令运行:perl -we"print qq(Hello world!\n)" - TLP
1
在Windows cmd中,您需要使用双引号来包围代码。因此,您需要使用qq()表示双引号字符串。我相信人们很少使用shell解释,例如人们用于Python的那种解释方式。 - TLP
显示剩余5条评论
3个回答

3

按下 Ctrl + Z (最后还需按下 Enter) 相当于在*nix系统中按下Ctrl+D,意味着到达了文件结尾(End of file)。你也可以输入__END__


2

你可以通过调试器获取 REPL:

$ perl -d -e 1

Loading DB routines from perl5db.pl version 1.49
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(-e:1):   1
  DB<1> x "blah" x 5
0  'blahblahblahblahblah'

使用x表达式p表达式来评估一个表达式并以不同的方式显示结果。


那似乎不是被问到的内容。如果是这样,他们应该参考如何为Perl启动交互式控制台? - ikegami

1
您可以使用所谓的一行代码(*),直接在shell中输入代码。这是测试Perl语句的惯用方式:
perl -we"my $greeting = qq(Hello World :-)\n); print $greeting;"

请注意,在Windows cmd shell中,您需要用双引号括起来代码,因此在代码内部使用qq()表示双引号字符串。
我总是在命令行上使用-l开关,这样我就不必添加换行符即可打印:
perl -lwe"my $greeting = 'Hello World :-)'; print $greeting;"

您也可以考虑使用 -Esay,这样会添加一个换行符:

perl -wE"say 'Hello world :-)'"

您甚至可以在某些 shell 中使用多行,尽管在 Windows 中不能。

(*) = 不要被“单行代码”这个词所迷惑。那不是您可以使用的语句数量,那只是一种称呼,用于表示位于“一行”上的语句。在 Perl 中,如果您愿意,可以在一行上添加多个语句。


1
如果你想的话,甚至可以使用多行,只要shell允许它。(cmd不允许) - ikegami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接