use strict;
use Getopt::Std;
use Perl::Tidy;
use IO::File;
$| = 1;
use vars qw($opt_h);
my $usage = <<EOM;
usage: perllinetype filename >outfile
EOM
getopts('h') or die "$usage";
if ($opt_h) { die $usage }
my ($file, $fh, $source);
if ( @ARGV == 0 ) {
$source = '-';
}
elsif ( @ARGV == 1 ) {
$file = $ARGV[0];
$fh = IO::File->new( $file, 'r' );
unless ($fh) { die "cannot open '$file': $!\n" }
$source = $fh;
}
else { die $usage }
my $formatter = MyFormatter->new();
my $dest;
my $err=perltidy(
'formatter' => $formatter, 'source' => $source,
'destination' => \$dest, 'argv' => "-npro -se", );
if ($err) {
die "Error calling perltidy\n";
}
$fh->close() if $fh;
package MyFormatter;
sub new {
my ($class) = @_;
bless {}, $class;
}
sub write_line {
my $self = shift;
my $line_of_tokens = shift;
my $line_type = $line_of_tokens->{_line_type};
my $input_line_number = $line_of_tokens->{_line_number};
my $input_line = $line_of_tokens->{_line_text};
print "$input_line_number:$line_type:$input_line";
}
sub finish_formatting {
my $self = shift;
return;
}