可以在Perl脚本中使用Perl单行程吗?

时间:2012-08-14 00:30:41

标签: perl

我是Perl的新手,我使用Perl单行程序以及几个简单的Perl脚本来完成我的任务。

我想知道是否可以在代码格式中组合一堆单行并运行包含单行的特定文件?例如,如果我要逐个运行3个单行,我可以将这3个单行放在名为 file.pl 的单个文件中并运行吗?

oneliner....
oneliner....

code

oneliner....

上面显示了我感兴趣的格式。

3 个答案:

答案 0 :(得分:4)

听起来你想要一个shell脚本,你只需要一个衬里:

 #!/bin/sh

 perl -le '...'
 perl -ane '...'
 perl -e '...'

如果你想在Perl程序的中间运行一个单行程序,你可以使用system来完成:

#!/usr/bin/perl

system( q( perl -le '...' ) );

但是,如果您已经在Perl程序中,您可以将单行代码扩展为非速记代码并将其放入程序中。例如,请参阅How can I consolidate several Perl one-liners into a single script?

答案 1 :(得分:0)

基本上,是的。您可以获取实际命令并将它们放在一个文件中。因此,使用上一个答案中的示例,创建一个包含以下内容的文件:

print reverse <>

然后使用perl运行它。在类似Unix的机器上

perl file.pl

在Windows上,我猜它会是类似的。在Google中搜索“在Windows下运行perl脚本”或类似内容。

答案 2 :(得分:-1)

一般来说,这不起作用,也没有多大意义。通常,perl oneliner使用一些命令和参数调用perl。例如,这是一个典型的oneliner

perl -e 'print reverse <>' foo.txt

但是,如果将其放在脚本中,则会得到以下内容:

Bareword found where operator expected at .\one.pl line 1, near "'print reverse <>' foo"
        (Missing operator before foo?)
syntax error at .\one.pl line 1, near "perl -e "
Execution of .\one.pl aborted due to compilation errors.

因此,脚本的格式和oneliner的格式不兼容。但是,通常可以通过从oneliner中提取命令和参数将oneliners转换为脚本格式。