1use B::Assembler qw(assemble_fh); 2use FileHandle; 3 4my ($filename, $fh, $out); 5 6if ($ARGV[0] eq "-d") { 7 B::Assembler::debug(1); 8 shift; 9} 10 11$out = \*STDOUT; 12 13if (@ARGV == 0) { 14 $fh = \*STDIN; 15 $filename = "-"; 16} elsif (@ARGV == 1) { 17 $filename = $ARGV[0]; 18 $fh = new FileHandle "<$filename"; 19} elsif (@ARGV == 2) { 20 $filename = $ARGV[0]; 21 $fh = new FileHandle "<$filename"; 22 $out = new FileHandle ">$ARGV[1]"; 23} else { 24 die "Usage: assemble [filename] [outfilename]\n"; 25} 26 27binmode $out; 28$SIG{__WARN__} = sub { warn "$filename:@_" }; 29$SIG{__DIE__} = sub { die "$filename: @_" }; 30assemble_fh($fh, sub { print $out @_ }); 31