You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
678 B
30 lines
678 B
use B::Assembler qw(assemble_fh);
|
|
use FileHandle;
|
|
|
|
my ($filename, $fh, $out);
|
|
|
|
if ($ARGV[0] eq "-d") {
|
|
B::Assembler::debug(1);
|
|
shift;
|
|
}
|
|
|
|
$out = \*STDOUT;
|
|
|
|
if (@ARGV == 0) {
|
|
$fh = \*STDIN;
|
|
$filename = "-";
|
|
} elsif (@ARGV == 1) {
|
|
$filename = $ARGV[0];
|
|
$fh = new FileHandle "<$filename";
|
|
} elsif (@ARGV == 2) {
|
|
$filename = $ARGV[0];
|
|
$fh = new FileHandle "<$filename";
|
|
$out = new FileHandle ">$ARGV[1]";
|
|
} else {
|
|
die "Usage: assemble [filename] [outfilename]\n";
|
|
}
|
|
|
|
binmode $out;
|
|
$SIG{__WARN__} = sub { warn "$filename:@_" };
|
|
$SIG{__DIE__} = sub { die "$filename: @_" };
|
|
assemble_fh($fh, sub { print $out @_ });
|