I have two files: log_ca.txt and log_aa.txt contents of log_ca.txt: 333333333->ca_filename3 444444444->ca_filename4 111111111->ca_filename1 222222222->ca_filename2
contents of log_aa.txt: 111111111->aa_filename1 333333333->aa_filename3 222222222->aa_filename2 444444444->aa_filename4 The program extracts the values after the -> delimiter of both files Makes an association between the values on both of the files. Meaning, this is desired output: CA FILENAME => AA_FILENAME --------------------------- ca_filename1 => aa_filename1 ca_filename2 => aa_filename2 ca_filename3 => aa_filename3 ca_filename4 => aa_filename4 Outputs I'm getting (see "double pop" in code below for details) CA FILENAME => AA_FILENAME --------------------------- => ca_filename3 => aa_filename3 ca_filename4 => aa_filename4 and (after adding the "double pop" below prints all records but still get the => delimiter) CA FILENAME => AA_FILENAME --------------------------- => ca_filename1 => aa_filename1 ca_filename2 => aa_filename2 ca_filename3 => aa_filename3 ca_filename4 => aa_filename4 Questions: How do I get the desired output without resorting to the 'double pop'? How do I get rid of the extra "=>"? Thanks in advance. #!/usr/bin/perl use warnings; use strict; my $ca_path = "log_ca.txt"; my $aa_path = "log_aa.txt"; my %final_report; my @ca_filenames; my @aa_filenames; open (CAFILE, $ca_path) or die $!; my @ca_files = <CAFILE>; open(AAFILE, $aa_path) or die $!; my @aa_files = <AAFILE>; #sort arrays my @ca_files_sorted = sort @ca_files; my @aa_files_sorted = sort @aa_files; my $total_items = @ca_files_sorted; foreach(@ca_files_sorted){ s/[\r\t\n]+//; #Remove carriage returns and new lines my @temp = split (/\d+->/, $_); push @ca_filenames, @temp; } foreach(@aa_files_sorted){ s/[\r\t\n]+//; #Remove carriage returns and new lines my @temp = split (/\d+->/, $_); push @aa_filenames, @temp; } ###problems start here #why do I need to put [EMAIL PROTECTED] twice? #otherwise it won't display all items. #I don't put that this is the outcome. #CA FILENAME => AA_FILENAME # => #ca_filename3 => aa_filename3 #ca_filename4 => aa_filename4 for (1..$total_items){ $final_report{ pop @ca_filenames } = pop @aa_filenames; $final_report{ pop @ca_filenames } = pop @aa_filenames; } #why do I get the '=>' symbol there? print "CA FILENAME => AA_FILENAME\n"; foreach (sort { $a cmp $b } keys(%final_report) ){ print "$_ => $final_report{$_}\n"; } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/