http://www.perlmonks.org?node_id=1007902


in reply to Re^6: partial match between 2 files
in thread partial match between 2 files

The script that you write needs to insure that only matching words are compared for difference. You can place the code that inserts a "+" at the first string difference position into a subroutine that can be called from anywhere within your script. For example:

use strict; use warnings; my $string1 = 'amayaM'; my $string2 = 'amayamAn'; my $result = firstStrDiff( $string1, $string2 ); print $result, "\n"; sub firstStrDiff { my ( $s1, $s2 ) = @_; ( $s1 ^ $s2 ) =~ /[^\x00]/; substr( $s2, $-[0], 0 ) = '+' if defined $-[0]; return $s2; }

Output:

amaya+mAn

This can help you focus on just the remaining code that aligns the words you want send to this subroutine.

Hope this helps!

Replies are listed 'Best First'.
Re^8: partial match between 2 files
by lakssreedhar (Acolyte) on Dec 27, 2012 at 07:10 UTC

    How can i do a partial match between a word inputted through STDIN and a list of words in a file and print the partial matched word from the file.

      How can i ...

      Write some code? STDIN is just a filehandle, readline from it

        I need to print the word in the file which has the maximum partial match to the inputted string.ie if the inputted string is fallen and the file has words fal,fall,falle,the value to be printed is falle.The code below gives errors

        #!/usr/bin/perl-w use warnings; use strict; open my $fh1, '<', 'words' or die $!; my $a=$_; while (my $f1 = <$fh1> ) { chomp $f1; my $f2 = $a; chomp $f2; if($f2=~m/$f1/i){print"$f1\n";} }