#use strict;
#use warnings;
####
open(CUST_DATA,'<', $cust_file) || die("Could not open file!");
##
##
#!/usr/bin/perl
#
#
#
use warnings;
use strict;
my $cust_file = "customer.txt";
my $billing_file = "2010.bill";
my $cust;
open (CUST_DATA, $cust_file) || die "Can't read '$cust_file': $!\n";
while (defined (my $line = )) {
chomp $line; # Remove trailing newline
my ($cust_id,$cust_name) = split(/:/,$line);
$cust->{$cust_id}->{name} = $cust_name;
}
close(CUST_DATA);
my @bill_fields = qw(cust_id x_cust_id2 Device_Code Port Traf_Dir x_start_date x_end_date x_number Data_Usage);
my $bill_line;
my $bill_data;
open(BILL_DATA, $billing_file) || die "Can't read '$billing_file': $!\n";
while (defined (my $line = )) {
chomp $line;
@{$bill_line}{@bill_fields} = split(/\s/, $line);
if ( ! $cust->{ $bill_line->{cust_id} }->{name} ) {
die "$0: Found unknown customer ID [$bill_line->{cust_id}] on line $. of '$billing_file'\n";
}
$bill_data->{ $bill_line->{cust_id} }->{ $bill_line->{Device_Code} }->{ $bill_line->{Port} }->{ $bill_line->{Traf_Dir} } = $bill_line->{Data_Usage};
}
close(BILL_DATA);
sub by_name ($$) {
return $cust->{$a}->{name} <=> $cust->{$b}->{name};
}
for my $customer ( keys %$cust ) {
print "CUSTOMER NAME: $cust->{$customer}->{name}\n" .
"Device_Code Port Traf_Dir Data_Usage\n";
for my $device ( sort by_name keys %{$bill_data->{$customer}} ) {
for my $port ( sort keys %{$bill_data->{$customer}->{$device}} ) {
(my $short_port = $port) =~ s/^FastEthernet/Fa/g;
for my $direction qw(OUT IN) {
print "$device $short_port $direction " .
$bill_data->{$customer}->{$device}->{$port}->{$direction} . $/;
}
}
}
}