- 论坛徽章:
- 0
|
- #!/usr/bin/perl
- use 5.016;
- my @ARRAY_STRING_Files_Name = qw/NewDocument document1 document2 document3/;
- open my $FILEHANDLE_NewDocument, '>', $ARRAY_STRING_Files_Name[0]
- or die "Could not create file [ $ARRAY_STRING_Files_Name[0] ] $!";
- open my $FILEHANDLE_document1, '<', $ARRAY_STRING_Files_Name[1]
- or die "Could not open file [ $ARRAY_STRING_Files_Name[1] ] $!";
- open my $FILEHANDLE_document2, '<', $ARRAY_STRING_Files_Name[2]
- or die "Could not open file [ $ARRAY_STRING_Files_Name[2] ] $!";
- open my $FILEHANDLE_document3, '<', $ARRAY_STRING_Files_Name[3]
- or die "Could not open file [ $ARRAY_STRING_Files_Name[3] ] $!";
- my %HASHTABLE_STRING_id_STRING_idalia =
- map {
- my ( $STRING_ID, $STRING_alia ) = split;
- $STRING_ID => "$STRING_ID,$STRING_alia;"
- } <$FILEHANDLE_document3>;
- close $FILEHANDLE_document3;
- # %HASHTABLE_STRING_id_STRING_idalia
- # ( "2" => "2,2.1;", "3" => "3,3.1;", "ID" => "ID,alia;", "1" => "1,1.1;" )
- my %HASHTABLE_STRING_Symbol_STRING_idalia;
- my %HASHTABLE_STRING_Symbol_REFERENCE_HASHTABLE_STRING_Id_INTEGER_count;
- while (<$FILEHANDLE_document2>) {
- my ( $STRING_id, $STRING_symbol ) = split;
- next if not exists $HASHTABLE_STRING_id_STRING_idalia{$STRING_id};
- if (
- !$HASHTABLE_STRING_Symbol_REFERENCE_HASHTABLE_STRING_Id_INTEGER_count{
- $STRING_symbol}{$STRING_id}++ )
- {
- $HASHTABLE_STRING_Symbol_STRING_idalia{$STRING_symbol} .=
- $HASHTABLE_STRING_id_STRING_idalia{$STRING_id};
- }
- }
- close $FILEHANDLE_document2;
- # %HASHTABLE_STRING_Symbol_STRING_idalia
- # ( A1 => "1,1.1;2,2.1;3,3.1;", A2 => "3,3.1;1,1.1;", symbol => "ID,alia;", D1 => "1,1.1;" )
- # %HASHTABLE_STRING_Symbol_REFERENCE_HASHTABLE_STRING_Id_INTEGER_count
- # ( D1 => { '1' => 2 }, symbol => { 'ID' => 1 }, A2 => { '1' => 1, '3' => 1 }, A1 => { '3' => 1, '2' => 1, '1' => 2 } )
- chomp( my $STRING_document1_firstline = <$FILEHANDLE_document1> );
- # $STRING_document1_firstline
- # "Symbol A B C D"
- say $FILEHANDLE_NewDocument $STRING_document1_firstline, "\t", 'V';
- while (<$FILEHANDLE_document1>) {
- chomp;
- my ($STRING_symbol) = split;
- say $FILEHANDLE_NewDocument $_, "\t",
- $HASHTABLE_STRING_Symbol_STRING_idalia{$STRING_symbol} // '';
- }
- close $FILEHANDLE_document1;
- close $FILEHANDLE_NewDocument;
- # NewDocument
- #Symbol A B C D V
- #A1 1 1 1 1 1,1.1;2,2.1;3,3.1;
- #A2 1 1 1 1 3,3.1;1,1.1;
- #D1 1 1 1 1 1,1.1;
- say '久等啦!', "\n", join( ', ', @ARRAY_STRING_Files_Name[ 1, 2, 3 ] ),
- "\n", '已整合为 ',
- $ARRAY_STRING_Files_Name[0];
复制代码 |
|