Viewing file: stdinorfile.pl (1.06 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl use strict; use warnings;
use Term::ProgressBar 2.00;
my $input_file = shift; my $output_file = shift; my $in_fh = \*STDIN; my $out_fh = \*STDOUT; my $message_fh = \*STDERR; my $num_lines = -1;
if(defined($input_file) and $input_file ne '-') { open($in_fh, $input_file) or die "Couldn't open file, '$input_file', for reading: $!"; my $wc_output = `wc -l $input_file`; chomp($wc_output); $wc_output =~ /^\s*(\d+)(\D.*)?/ or die "Couldn't parse wc output: $wc_output"; $num_lines = $1; }
if(defined($output_file)) { !-f $output_file or die "Specified output file, '$output_file', already exists"; open($out_fh, '>', $output_file) or die "Couldn't open output file, '$output_file', for writing: $!"; }
my $progress = Term::ProgressBar->new({ name => 'file processor', count => $num_lines, remove => 1, fh => $message_fh, });
while(my $line = <$in_fh>) { chomp($line); print $out_fh "I found a line: $line\n"; $progress->message("Found 10000!") if($line =~ /10000/); $progress->update(); }
$progress->update($num_lines);
print $message_fh "Finished\n";
|