While the script works, it isn't perfect and if you have any comments, have an addendum, etc, please let me know!
The script is below. Please make sure to edit $file, the input file, and $outdir, the destination directory. Good Luck.
#!/usr/bin/perl -w
use strict;
use File::Spec;
use File::Path qw(mkpath);
my $file = '/exact/path/to/perl/module.pm';
my $outdir = '/tmp/';
open(my $fh, '<', "$file") or die $!;
my $contents = '';
my $filename = undef;
while (<$fh>) {
if ( $_ =~ /^package (.*);/g ) {
# construct a new file
$contents = '';
# its filename
$filename = File::Spec->catfile( $outdir, split( /::/, $1 ) ) . '.pm';
# its contents
$contents .= $_;
} elsif ( $_ =~ /^1;/g ) {
# put the contents into $filename
$contents .= $_;
my ( $volume, $directories, $file ) = File::Spec->splitpath($filename);
# make the path
mkpath(
$directories,
{
verbose => 1,
mode => 0711,
}
);
do {
open OUT, ">$filename" or die "Can't write to $filename: $!\n";
print OUT $contents;
close OUT;
} if $filename;
} else {
$contents .= $_;
}
}
close $fh;