package PM::SharedFileTasks;
use strict;
use warnings;
use autodie;
my %handler_for = (
modify => \&handle_modify,
move => \&handle_move,
);
sub handle {
my ($function, $files) = @_;
for my $file (@$files) {
open my $fh, '<', $file;
chomp(my @record = split /:/ => (<$fh>)[-1]);
print "Function: '$function'; File: '$file'\n";
$handler_for{$function}->(\@record);
close $fh;
}
}
sub handle_modify {
my $status = shift->[5];
# Do something with $status, e.g.
print "$status\n";
return;
}
sub handle_move {
my $city = shift->[3];
# Do something with $city, e.g.
print "$city\n";
return;
}
1;
####
#!/usr/bin/env perl
use strict;
use warnings;
use PM::SharedFileTasks;
{
# In modify.pl
my @files = qw{pm_1076160_1.txt pm_1076160_2.txt};
PM::SharedFileTasks::handle(modify => \@files);
}
{
# In move.pl
my @files = qw{pm_1076160_2.txt pm_1076160_3.txt};
PM::SharedFileTasks::handle(move => \@files);
}
####
$ cat pm_1076160_1.txt
Record 1
...
Record n-1
ID1:Name1:Street1:City1:State1:Status1
$ cat pm_1076160_2.txt
Record 1
...
Record n-1
ID2:Name2:Street2:City2:State2:Status2
$ cat pm_1076160_3.txt
Record 1
...
Record n-1
ID3:Name3:Street3:City3:State3:Status3
####
Function: 'modify'; File: 'pm_1076160_1.txt'
Status1
Function: 'modify'; File: 'pm_1076160_2.txt'
Status2
Function: 'move'; File: 'pm_1076160_2.txt'
City2
Function: 'move'; File: 'pm_1076160_3.txt'
City3