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/


Reply via email to