Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Comparing strings from different files

by Lennotoecom (Pilgrim)
on Oct 08, 2013 at 20:48 UTC ( #1057461=note: print w/replies, xml ) Need Help??

in reply to Comparing strings from different files

If you are comparing actual lines from the files
and not the different "nodes"
then your task is even easier
something like that:
%hash = map{ s/E99/99/g; $_ => $hash{$_}++;} <>; foreach (sort keys %hash){ print "$_ $hash{$_}\n" if !$hash{$_}; }
will print you yours unique lines

Replies are listed 'Best First'.
Re^2: Comparing strings from different files
by Jalcock501 (Sexton) on Oct 09, 2013 at 08:59 UTC
    Thanks for this it works great, however I need to run this on loads of files, I've had a play and can't seem to automate the command line arguments. Here's what I have but it doesn't work (probably because I'm not doing it right)
    #!/usr/bin/perl -w use strict; my @files = <*.in.sep>; my %hash; for(@files) { s/[.]in[.]sep//g } for my $file (@files) { open (my $in, "<", "$") || die ("cannot open $file"); open (my $out,"<", "$file.out.sep") || die ("cannot open search.tx +t"); %hash = map{ s/E99/99/g; $_ => $hash{$_}++;} <$in, $out>; foreach (sort keys %hash){ print "$_ $hash{$_}\n" if !$hash{$_}; } }
    Thanks Jim
      well I tested it on different files,
      but the main idea is:
      foreach (<*.in.sep>){ $name = $` if /.in.sep/; open IN, $_ or die $!; open OUT, $name.'.out.sep' or die $!; %hash = map{ s/E99/99/g; $_ => $hash{$_}++;} <IN>, <OU +T>; close IN, OUT; foreach (sort keys %hash){ print "$_ $hash{$_}\n" if !$hash{$_}; } }
      correct if there are mistakes,
      or if it might be optimized

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1057461]
NodeReaper suddenly falls through the false ceiling

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (10)
As of 2018-05-23 13:18 GMT
Find Nodes?
    Voting Booth?