Perl - 如何在 Perl shell/interpreter 中直接 type/execute/run Perl 语句?

Perl - How do you type/execute/run Perl statements directly in the Perl shell/interpreter?

如何直接在 Perl 中键入然后 (execute/run) Perl 语句 shell/interpreter?

首先,我在 Windows... 我安装了为 MSWin32-x64-多线程构建的 Strawberry Perl (v5.32.1)。

所以,如果我在命令行输入,只需:

perl

...它似乎输入了一个 Perl“shell/interpreter”,但是如果我输入一些 Perl 语句:

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

...我该如何制作“execute/run”这两个语句?

如果我Ctrlc,那么它只会说:Terminating on signal SIGINT(2)

如果重要的话,我想这样做的原因是我可以在学习 Perl 时测试 Perl 语言。

输入Ctrl + Z(最后回车)对应Ctrl + D 在 *nix 上意味着 文件结束 。您还可以输入 __END__.

您可以只使用所谓的一行 (*) 并直接在 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 中,您可以根据需要在一行中添加多个语句。

您可以使用调试器获取 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 expressionp expression 计算表达式并以不同方式显示结果。