2011-07-01 118 views
2
rename $ARGV[0], $ARGV[1] or warn "rename fails: $!\n"; 

當我運行./programe file.txt dir/它總是失敗。將文件移動到Perl中的另一個目錄?

這裏有什麼問題?

+0

什麼是錯誤訊息?在出現其他問題時總是顯示完整的示例程序及其輸入和輸出。 –

回答

7

從針對的perldoc重命名:

這個函數的行爲會有所不同瘋狂取決於你 系統實施。例如,跨文件系統邊界通常不會運行 ,即使系統命令有時會對此進行補償。其他限制 包括它是否適用於目錄,打開的文件或現有文件的前 。請檢查perlport以及重命名(2) 聯機幫助頁或等效系統文檔以瞭解詳細信息。

對於獨立於平臺的「移動」功能,請查看 File :: Copy模塊。

因此改爲使用File::Copy::move

4

rename更改文件的名稱,這不是你想要做的。您可能想要使用move函數File::Copy

5

重命名期望完整的目標路徑,而不僅僅是一個目錄。嘗試:

./progname file.txt dir/file.txt 

這將是很好,如果你能告訴什麼樣的錯誤是失敗,...

+0

可以在文件夾上重命名嗎? –

+0

是的(你可能剛剛嘗試過......) – ysth

+1

根據平臺的不同,它可能在或不可以在文件夾上工作。 C.F.我的答案。 – Quentin

相關問題