我的perl替换有什么问题?

时间:2013-04-25 10:35:24

标签: regex perl

由于文件数量的原因,我有一个文件目录,我试图使用perl拆分成子目录。文件名的格式为开头的日期,格式为YYYYMMDD,我正在尝试拆分。我使用的以下代码改编自this StackOverflow Answer

#!/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行终止'。当我尝试运行此代码时。据我所知,我正在逃避并正确终止替换?

1 个答案:

答案 0 :(得分:4)

您使用!作为正则表达式分隔符。你有一个可以启动它,一个用于将匹配部分与替换部分分开,但最后没有一个。