in reply to Re: match a portion of a string from a file
in thread match a portion of a string from a file

Sure here are 2 example files:

file 1:

Reno dermatologist,Melanoma treatment in Reno,Basal Cell treatment in +Reno,Carcinoma treatment in Reno

file 2:

dermatologist, 1945 Bluelake Lane dentist, 3 stars, office space

Both files above cvs files

Replies are listed 'Best First'.
Re^3: match a portion of a string from a file
by choroba (Cardinal) on Feb 11, 2018 at 23:06 UTC
    It seems you want to search for terms from file2 in file1. I'm not sure why you are building the hash, but if you just want to search for all the elements of file2 in all the elements of file1, you can build a large regex from the second csv and use that to search the first one:
    #!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use autodie; use Text::CSV; sub build_regex { my ($filename) = @_; my @regexes; my $csv = 'Text::CSV'->new; open my $fh, '<', $filename; while (my $row = $csv->getline($fh)) { push @regexes, join '|', map quotemeta, @$row; } return join '|', @regexes } sub find_matches { my ($filename, $regex) = @_; my $csv = 'Text::CSV'->new; open my $fh, '<', $filename; while (my $row = $csv->getline($fh)) { /$regex/ and say for @$row; } } my ($f1, $f2) = qw( 1.csv 2.csv ); find_matches($f1, build_regex($f2));
    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,