, , , . , , . , . , - , .
, . , A B .
my $file_a = qq~Fiona\tNicole Sherry
James\tAlan Nicole
Michelle\tCrystal
Racheal\tBobby Dan Nicole
~;
my $file_b = qq~Fiona\tRacheal,Jack
Michelle\tRacheal
Racheal\tFiona,Michelle
Jack\tFiona
~;
"".
my (%file_a);
foreach my $a (split /\n/, $file_a) {
my @temp = split /\t/, $a;
$file_a{$temp[0]} = $temp[1];
}
foreach my $b (split /\n/, $file_b) {
my @line_b = split /\t/, $b;
if (exists $file_a{$line_b[0]}) {
my (%new_hash_table, @teachers);
$new_hash_table{$_} = '' foreach split / /, $file_a{$line_b[0]};
foreach my $teacher (split /,/, $line_b[1]) {
if (exists $file_a{$teacher}) {
push @teachers, $teacher;
foreach (keys %new_hash_table) {
$new_hash_table{$_} = join(',', split(/ /, $file_a{$teacher}));
}
}
}
foreach my $student (keys %new_hash_table) {
print join("\t",
$student, $new_hash_table{$student},
$line_b[0], @teachers);
print "\n";
}
}
}
:
Sherry Bobby,Dan,Nicole Fiona Racheal
Nicole Bobby,Dan,Nicole Fiona Racheal
Crystal Bobby,Dan,Nicole Michelle Racheal
Bobby Crystal Racheal Fiona Michelle
Nicole Crystal Racheal Fiona Michelle
Dan Crystal Racheal Fiona Michelle
, , , .
, , .
, $data=~/^(\S+)\s+(.*)$/;, . -.
<FILEHANDLE>, , , while, :
while (my $data = <GROUP>) {
chomp $data
, , .
"Learning Perl". , , . , .