2012-08-14 99 views
0

我是新来的Perl和我使用Perl的单行用几个简单的Perl脚本我的任务一起。可以在Perl脚本中使用Perl单线程吗?

我想知道,如果它能够在代码格式一堆单行结合,运行包含单行只是特定的文件?举例来说,如果我有3个单行将被运行一个接一个,我可以把这些3单行名为file.pl并运行一个文件?

oneliner.... 
oneliner.... 

code 

oneliner.... 

什么我感兴趣的是上面显示所需的格式。

回答

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?

+0

非常感谢。这对我来说非常合适。 – unkaitha 2012-08-14 05:14:39

+0

我不确定我是否应该在此评论中询问此处。但是我非常需要解决方案来解决我之前关于“比较文件并将类似数据存储到不同文件中”的问题,即使已经得到解答,我也不确定为什么这些解决方案不适合我。我能期待你对这个问题的帮助吗?提前致谢。 – unkaitha 2012-08-14 05:20:00

+0

@unkaitha嗯...问题要求一个名为'file.pl'的脚本,即perl脚本,而不是shell脚本。问题应该表明你愿意采取任何类型的剧本。 – David 2012-08-14 16:46:20

-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中提取命令和参数将oneliner转换为脚本格式。

+0

刚刚发现可以将oneliners转换为perl脚本,然后可以将它们加在一起。但想知道是否可以按照问题中所述完成。谢谢你的答案@大卫 – unkaitha 2012-08-14 01:08:49

0

本质上说,是的。你把实际的命令放在一个文件中。因此,使用从以前的答案的例子中,创建一个包含文件:

print reverse <> 

然后用perl运行它。在类Unix的机器,这将是

perl file.pl 

在Windows上我想这将是类似的。搜索“在Windows下运行perl脚本”或类似的,在谷歌。

+0

但什么ü建议心不是一个oneliner我猜... @terdon – unkaitha 2012-08-14 01:24:13

+0

@unkaitha顾名思义,包含多个oneliners一个文件不是一个oneliner。如果你想运行多个内衬,你只需要在“单引号”之间提取代码并粘贴到一个文件中即可。 – terdon 2012-08-14 01:43:04