2012-08-14 115 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