The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=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;