2013-04-25 69 views
-1

我有一個文件目錄我想分割成使用perl子目錄由於文件數量。文件名的格式是YYYYMMDD格式的開始日期,我試圖在這個文件上進行分割。我使用改編自this StackOverflow Answer下面的代碼:我的Perl替換有什麼問題?

#!/usr/bin/perl -w 
use strict; 

opendir DIR, "." or die "opendir: $!"; 
my @files = readdir(DIR); 
closedir DIR; 
foreach my $f (@files) { 
    -f $f or next; 
    (my $new_name = $f) =~ s!^((....)(..)(..).*)$!$2/$3/$4/$1/; 
    -e $new_name and die "$new_name already exists"; 
    rename($f, $new_name); 
} 

不過,我得到一個「換人替代在movefiles.pl線10沒有終止」當我嘗試運行此代碼時。據我所見,我正在逃避並正確終止替換?

+0

與你的問題無關,但你應該檢查重命名是否成功。 – 2013-04-25 10:54:57

+0

好點!我也會解決這個問題。謝謝。 – 2013-04-25 11:22:02

回答

4

您正在使用!作爲正則表達式分隔符。你有一個開始它,一個將匹配部分與替換部分分開,但最後沒有一個。

+0

是的,謝謝。我知道這是明顯的,但我錯過了。 – 2013-04-25 11:22:20