#!/usr/bin/perl -w
use strict;
# Filter specific strings from an input file into specific files.
{
# Open input and output files.
open ( INPUT, '<', 'html_LogFiles' ) or
die "Unable to open input file: $!";
open ( BSC, '>', 'BSC' ) or die "Unable to open BSC: $!";
# Update: Sorry, got the names of these two wrong.
# That's why copy and paste is bad, bad, bad.
open ( SBSCSubsystem, '>', 'SBSCSubsystem' ) or
die "Unable to open SBSCSubsystem: $!";
open ( MCBTSSubsystem, '>', 'MCBTSSubsystem' ) or
die "Unable to open MCBTSSubsystem: $!";
# Process input lines into output files. Note that an
# input line may match more than one pattern and
# therefore may appear in more than one output file.
while(<INPUT>) {
if ( /BSC-/ ) {
chomp;
my $copy = $_;
$copy =~ s/BSC-//;
print BSC "$_ $copy\n";
}
if ( /SBSCSubsystem/ ) {
chomp;
my $copy = $_;
$copy =~ s/SBSCSubsystem//;
print SBSCSubsystem "$_ $copy\n";
}
if ( /MCBTSSubsystem/ ) {
chomp;
my $copy = $_;
$copy =~ s/MCBTSSubsystem//;
print MCBTSSubsystem "$_ $copy\n";
}
}
# Close input and output files.
close ( INPUT );
close ( BSC );
close ( SBSCSubsystem );
close ( MCBTSSubsystem );
One comment at the top of the file, and three more comments after that. Your coding style adds too many comments, which means there's too much to read -- keep it simple.
If I had more time, I'd recommend a hash-based data structure to define the string you're looking for. That way, adding more filters would be a matter of adding an entry to a table, not cutting and pasting a block of code.
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds
Updates 1406, January 5: Sorry, bungled file names of last two output files. Fixed now. |