=head1 LIBRARY Name: poxargs.pl Desc: Common argument parsing logic for POX_parser-derived scripts =cut for (my($j, $i) = (-1, 0); $i < @ARGV; $i++) { if ($ARGV[$i] eq '-out') { if ($i == $#ARGV) { croak "-out requires an argument"; } $OUT[$j] = $ARGV[++$i]; } else { $IN[++$j] = $ARGV[$i]; } } for (my $i; $i < @IN; $i++) { if (-d $IN[$i]) { my $d = $IN[$i]; my @pox = glob("$d/*.pox"); splice(@IN, $i, $i+1 - @IN || 1, @pox); splice(@OUT, $i, $i+1 - @OUT || 1, map {m,$d/(.*)\.pox,; $OUT[$i] ? "$OUT[$i]/$1.$OUT_EXT" : "$1.$OUT_EXT"} @pox); $i += @pox; } elsif (!$OUT[$i]) { $OUT[$i] = $IN[$i]; # Change the extension, or add it if it there's no extension: $OUT[$i] =~ s/([^.])(?:\..*$|$)/$1.$OUT_EXT/; if ($IN[$i] eq $OUT[$i]) { if ($IN[$i] =~ /\.html$/) { croak "Filename ends in .$OUT_EXT: [$IN[$i]]"; } else { # It must have been a .foo file $OUT[$i] .= ".$OUT_EXT"; } } } } 1;