in reply to Comparing two files
Your program has a couple of problems:
First, you are splitting on comma's, then the pc no (the first field) has index 0, index 1 gets you the ip-address.
Next, you are reading the entire second file for each line found in the first file, that will give you some serious I/O for big files.
Perl is not very good at finding out whether something is in a list. If you want to do that, think of a hash in stead. Lists are for processing bulk data element by element. Keeping this in mind, let's rewrite the program.
Assuming you have two files, pcs_old.csv and pcs_new.csv, starting with the opening stuff:
Read the old file line by line...use strict; use warnings; open (OLD, "<pcs_old.csv"); open (NEW, "<pcs_new.csv"); my %old; # where pc numbers will get stored...
Now do the same for the new pc file, but instead of storing them, see if an entry exists in the database with old pc's:while (<OLD>) { chomp; my @fields = split /,/; my $pc = $fields[0]; # get the first field $pc =~ s/"//g; # get rid of the quotes $old {$pc} = 1; # make an entry in the hash }
while (<OLD>) { chomp; my @fields = split /,/; my $pc = $fields[0]; # get the first field $pc =~ s/"//g; # get rid of the quotes if (! exists $old {$pc}) { # the new pc file has a pc which did not exist # in the old pc file print "new PC found: $pc\n"; } } # and cleanup close (OLD); close (NEW);
|
---|
In Section
Seekers of Perl Wisdom