由于文件数量的原因,我有一个文件目录,我试图使用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行终止'。当我尝试运行此代码时。据我所知,我正在逃避并正确终止替换?
答案 0 :(得分:4)
您使用!
作为正则表达式分隔符。你有一个可以启动它,一个用于将匹配部分与替换部分分开,但最后没有一个。