If you change the last block to this it should do what you want.
Modify the "$output" filename to suit your needs.
for my $customer ( keys %$cust ) {
# If you want to write to a file named with the customer ID
# my $output = "./$customer.out";
# If you want to write to a file named with the customer name
my $output = "./$cust->{$customer}->{name}.out";
open (CUST_OUT, ">$output") || die "Can't write to '$output': $!\n
+";
print CUST_OUT "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 CUST_OUT "$device $short_port $direction " .
$bill_data->{$customer}->{$device}->{$port}->{$dir
+ection} . $/;
}
}
}
close CUST_OUT;
}