Исходя из моего понимания, я пишу этот код:
use strict;
use warnings;
#use ReadWrite;
use Array::Utils qw(:all);
use vars qw($my1file $myfile1cnt $my2file $myfile2cnt @output);
$my1file = "did1.txt"; $my2file = "did2.txt";
Мы собираемся прочитать как первый, так и второй файлы (DID1
и DID2
).
readFileinString($my1file, \$myfile1cnt); readFileinString($my2file, \$myfile2cnt);
В первом файле, согласно запросу OP, первые четыре символа должны быть сопоставлены со вторым файлом, а затем, если они совпадают, нам нужно проверить остальные символы в первом файле со вторым.
while($myfile1cnt=~m/^((\w){4})\:([^\n]+)$/mig)
{
print "<LineStart>";
my $lineChk = $1; my $full_Line = $3; #print ": $full_Line\n";
my @First_values = split /\:/, $full_Line; #print join "\n", @First_values;
Если первые четыре di git совпадают, тогда
if($myfile2cnt=~m/^$lineChk\:([^\n]+)$/m)
{
Сохраняет остальное содержимое в том же виде и разделяется двоеточиями и получает символы для сопоставления с первым содержимым файла.
my $FullLine = $1; my @second_values = split /:/, $FullLine;
Затем ищите каждую букву по первому и второму содержимому, которое соответствует строке ...
foreach my $sngletter(@First_values)
{
Если буквы сопоставляются с первым и вторым файлом, оно будет напечатано.
if( grep {$_ eq "$sngletter"} @second_values)
{
print "Matched: $sngletter\t";
}
}
}
else { print "Not Matched..."; }
Это просто информация о том, что конец строки.
print "<LineEnd>\n"
}
#------------------>Reading a file
sub readFileinString
#------------------>
{
my $File = shift;
my $string = shift;
use File::Basename;
my $filenames = basename($File);
open(FILE1, "<$File") or die "\nFailed Reading File: [$File]\n\tReason: $!";
read(FILE1, $$string, -s $File, 0);
close(FILE1);
}