Unless I'm mistaken, this snippet should go a good ways toward solving your problem.
use File::Spec::Functions;
use File::Copy;
our @files = glob "*.txt";
mkdir for qw( multiple single );
for my $file ( @files ) {
if ( 1 > number_of_headers( $file ) ) {
move( $file, catfile( "multiple", $file ) );
} else {
move( $file, catfile( "single", $file ) );
}
}
sub number_of_headers {
my $file = shift;
my $count = () = slurp( $file ) =~ /FULL/g;
return $count;
}
sub slurp {
my $file = shift;
local $/;
local *SLURP;
open SLURP, "<", $file or die "Couldn't open $file for reading: $!
+";
my $content = <SLURP>;
close SLURP or warn "Couldn't close $file: $!";
return $content;
}