Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^2: How to grep exact string

by tobyink (Abbot)
on Nov 15, 2012 at 09:06 UTC ( #1003969=note: print w/ replies, xml ) Need Help??


in reply to Re: How to grep exact string
in thread How to grep exact string

The behaviour of smart match on arrays may well change in Perl 5.18 or 5.20.

This works quite nicely for me...

use strict; use warnings; use File::Slurp qw( slurp ); use Syntax::Keyword::Junction qw( any ); my @first = map { lc($_) } slurp('file1.txt'); my @second = map { lc($_) } slurp('file2.txt'); chomp(@first, @second); print "Machines extra in second list...\n"; for my $machine (@second) { if ($machine eq any(@first)) { print "$machine is already there\n"; } else { print "$machine is new\n"; } }
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'


Comment on Re^2: How to grep exact string
Download Code
Re^3: How to grep exact string
by ColonelPanic (Friar) on Nov 15, 2012 at 09:34 UTC
    I think (hope!) that smart match is mature enough at this point that you can rely on its behavior not changing for such a basic case.

    Nevertheless, another way of solving the problem is always useful.



    When's the last time you used duct tape on a duct? --Larry Wall

      I imagine that Perl will continue to support the old behaviour by default and an explicit use 5.xxx statement will enable the new behaviour via feature. (Much like how use 5.010 enables state, say, etc.)

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
Re^3: How to grep exact string
by Kenosis (Priest) on Nov 15, 2012 at 22:14 UTC

    Wasn't familiar with Syntax::Keyword::Junction, so I appreciate seeing it used here. Also, File::Slurp's a good module to use...

    Since the OP's comparing lists, List::Compare can help find unique entries in file2.txt:

    use Modern::Perl; use File::Slurp qw/read_file/; use List::Compare; my %hash; my @file1 = map { chomp; lc } read_file 'file1.txt'; my @file2 = map { chomp; lc } read_file 'file2.txt'; my $lc = List::Compare->new( \@file1, \@file2 ); my @file2Only = $lc->get_Ronly; say for @file2Only;

    Output:

    nt64osbld2 nt64osbld3 nt64oscitrix1 ntosbld4 ntosbld5 ntosbld6 vm-osw2k8x64-1 vm-osw2k8x64-2

    Not in the OP's output formatting, but that wouldn't take much more...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1003969]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (12)
As of 2014-11-24 09:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (137 votes), past polls