my $001= "prob_001";
my $002= "prob_002";
my $003= "prob_003";
@filter: ("001", "002", "003");
#Brainextraction
foreach ("001", "002", "003")
####
$ cat zombie
cp $1 $2
####
ken@titan ~/tmp/pm_11137850/whole_head
$ for i in `ls -1 wh_*`; do echo $i; cat $i; done
wh_001
W_001
wh_002
X_002
wh_003
Y_003
wh_004
Z_004
ken@titan ~/tmp/pm_11137850/just_brain
$ ls -l
total 0
####
#!/usr/bin/env perl
use strict;
use warnings;
BEGIN { delete @ENV{qw{PATH IFS CDPATH ENV BASH_ENV}} }
use autodie ':all';
use constant {
INDIR => '/home/ken/tmp/pm_11137850/whole_head',
OUTDIR => '/home/ken/tmp/pm_11137850/just_brain',
ZOMBIE => '/home/ken/tmp/pm_11137850/zombie',
};
use Getopt::Long;
my ($in_dir, $out_dir);
my $filter_string = '';
GetOptions(
'indir=s' => \$in_dir,
'outdir=s' => \$out_dir,
'filters=s' => \$filter_string,
);
my @filters;
my @raw_filters = split /,/, $filter_string;
my @problems;
_set_dirs(\$in_dir, \$out_dir, \@problems);
_get_filters(\@raw_filters, \@filters, \@problems);
die @problems if @problems;
system(ZOMBIE, INDIR."/wh_$_", OUTDIR."/jb_$_") for @filters;
sub _get_filters {
my ($raw_filters, $filters, $problems) = @_;
my $re = qr{^(\d+)$};
if (! @$raw_filters) {
push @$problems, "No filters specified.\n";
}
else {
for my $raw_filter (@$raw_filters) {
if ($raw_filter =~ $re) {
push @$filters, $1;
}
else {
push @$problems, "Invalid filter: '$raw_filter'\n";
}
}
}
return;
}
sub _set_dirs {
my ($in, $out, $problems) = @_;
my $re = qr{^(\/[\w\/]+)$};
if (length $$in) {
if ($$in =~ $re) {
$$in = $1;
if (! -d $$in) {
push @$problems, "Non-existent input directory: '$$in'\n";
}
}
else {
push @$problems, "Invalid input directory name: '$$in'\n";
}
}
else {
$$in = INDIR;
}
if (length $$out) {
if ($$out =~ $re) {
$$out = $1;
if (! -d $$out) {
push @$problems, "Non-existent output directory: '$$out'\n";
}
}
else {
push @$problems, "Invalid output directory name: '$$out'\n";
}
}
else {
$$out = OUTDIR;
}
return;
}
####
system(ZOMBIE, INDIR."/wh_$_", OUTDIR."/jb_$_") for @filters;
####
ken@titan ~/tmp/pm_11137850
$ perl -T ./pm_11137850_system.pl -filters 001,004
ken@titan ~/tmp/pm_11137850/just_brain
$ for i in `ls -1 jb_*`; do echo $i; cat $i; done
jb_001
W_001
jb_004
Z_004
####
ken@titan ~/tmp/pm_11137850
$ ./pm_11137850_system.pl -filters 003
ken@titan ~/tmp/pm_11137850/just_brain
$ for i in `ls -1 jb_*`; do echo $i; cat $i; done
jb_001
W_001
jb_003
Y_003
jb_004
Z_004
####
ken@titan ~/tmp/pm_11137850
$ ./pm_11137850_system.pl -outdir /fred -indir wilma
Invalid input directory name: 'wilma'
Non-existent output directory: '/fred'
No filters specified.