2013-03-15 79 views
1

我很新的Perl和我想提出的是創建一個目錄,並使用Unix命令就像一個文件移動到該目錄中的程序:Perl中的Unix命令?

mkdir test 

我知道會創建一個名爲目錄「測試」。從那裏我想給更多的選項,如:

mv *.jpg test 

這將移動所有.jpg文件到我的新目錄。

到目前爲止,我有這樣的:

#!/usr/bin/perl 

print "Folder Name:"; 
$fileName = <STDIN>; 
chomp($fileType); 

$result=`mkdir $fileName`; 
print"Your folder was created \n"; 

誰能幫我這個?

+2

Perl有它自己的'mkdir'功能... – jordanm 2013-03-15 14:51:36

+2

'使用嚴格的;使用警告;' – mob 2013-03-15 14:52:25

+0

http://www.perlmonks.org/?node_id = 627015 – toolic 2013-03-15 14:53:23

回答

3

嘗試這樣做:

#!/usr/bin/perl 

use strict; use warnings; 

print "Folder Name:"; 
$dirName = <STDIN>; 
chomp($dirName); 

mkdir($dirName) && print "Your folder was created \n"; 
rename $_, "$dirName/$_" for <*.jpg>; 

你將不得不使用內置perl功能比使用Unix命令更好的控制。這是我的片段的重點。

+0

+1 - 您是否複製了我的鏈接? – 2013-03-15 14:54:58

+0

謝謝@sputnick,但它給了我這個:您的文件夾被創建 用法:mv [-f | -i | -n] [-v]源目標 mv [-f | -i | -n] [-v]源...目錄 – Scope 2013-03-15 14:55:43

+0

你的鏈接和我的頭頂之間的混合;) – 2013-03-15 14:55:43

1

大部分(如果不是全部)的Unix命令也有一個相應的版本作爲功能

的mkdir - 見here

MV - 見here

等等要麼得到一個打印在各種手冊頁面之外(或者可能到書店去旅行 - O'Reilly堅果殼書與其他書很好)。

+0

+1提醒! =) – 2013-03-15 15:15:27

0

在perl中,你可以在反引號中使用bash命令。但是,當目錄不是由mkdir命令創建時會發生什麼?你的程序沒有得到這個通知,並繼續以愉快的方式認爲一切都很好。

你應該在perl中使用內置命令來做同樣的事情。

它與那些功能捕獲錯誤更容易和失敗優雅。另外,它們的運行速度更快,因爲您不必爲每個運行的命令分配新的進程。

0

Perl有一些類似於shell的函數。你可以只用

mkdir $filename; 

可以使用反引號運行shell命令,但命令返回任何到其標準輸出,這mkdir沒有它只是有用。對於沒有輸出的命令,使用system

0 == system "mv *.jpg $folder" or die "Cannot move: $?";