#!/usr/bin/perl use warnings; use strict; use File::Copy; while (my $filename=<*.txt>) { next if !($filename =~ m/_(\d{6})\.txt\z/); my $date=$1; if (!-e $date) { mkdir $date; } else { if (!-d $date) { die "$date already exists and is not a folder"; } elsif (!-x $date) { die "Wrong permissions on preexisting folder $date"; } } move($filename,"$date/") or die "Couldn't move $filename to $date: $!"; } #### my $newname = $filename; $newname =~ s/_\d{6}//; move($filename,"$date/$newname") or die "Couldn't move $filename to $date/$newname: $!";