Hi! All
I am new to perl.I need to write modify report program for management. Below is a program file.
#!/usr/bin/perl
use strict;
use Win32::FileOp qw(OpenDialog SaveAsDialog);
my $Customers;
my $credit_list = OpenDialog( title => "Select Credit List", filters => [ 'Text File (*.txt)' => "*.txt" ]);
my $credit_limit = OpenDialog( title => "Select Credit Limit", filters => [ 'Text File (*.txt)' => "*.txt" ]);
if (!$credit_list || !$credit_limit) {
print "Error: Required input reports were not supplied.\n";
sleep 3;
exit;
}
open (IN, $credit_list);
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
my ($custname, $natl_acct, $credit_limit) = split(/\t/, $line);
$Customers->{$custname}->{natl_acct} = $natl_acct;
$Customers->{$custname}->{credit_limit} = $credit_limit;
$Customers->{$custname}->{'80percent'} = $credit_limit * .8;
$Customers->{$custname}->{over60} = 0;
}
open (IN, $credit_limit);
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
my ($natl_acct, $custname, $docnum, $total, $credit_limit, $doctype, $over60, $over90) = split(/\t/, $line);
$Customers->{$custname}->{natl_acct} = $natl_acct;
$Customers->{$custname}->{over60} = $over60;
$Customers->{$custname}->{over90} = $over90;
$Customers->{$custname}->{total} += $total;
}
close (IN);
# SA wip data
open (IN, '\\\\ftpserver\schedule\wip\today\sablog.txt') || die "Couldn't get SA WIP data: $!\n";
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
$line =~ s/^\s+//g;
$line =~ s/\s+$//g;
$line =~ s/\^\s+/^/g;
$line =~ s/\s+\^/^/g;
my (undef, $custname, undef, $total) = split(/\^/, $line);
next if (!$custname);
$Customers->{$custname}->{total} += $total;
$Customers->{$custname}->{wip} = "WIP";
}
close (IN);
# RD wip data
open (IN, '\\\\ftpserver\schedule\wip\today\rdblog.txt') || die "Couldn't get RD WIP data: $!\n";
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
$line =~ s/^\s+//g;
$line =~ s/\s+$//g;
$line =~ s/\^\s+/^/g;
$line =~ s/\s+\^/^/g;
my (undef, $custname, undef, $total) = split(/\^/, $line);
next if (!$custname);
$Customers->{$custname}->{total} += $total;
$Customers->{$custname}->{wip} = "WIP";
}
close (IN);
my $final_report = SaveAsDialog( title => "Save As", filters => [ 'CSV (Comma delimited) (*.csv)' => "*.csv" ]);
if (!$final_report) {
print "Error: Output file was not specified.\n";
sleep 3;
exit;
}
open (OUT, ">$final_report"
;
my ($day, $month, $year) = (localtime)[3,4,5];
$month++; $year += 1900;
print OUT ",$month/$day/$year,,Credit Limit Report,,,,\n\n";
print OUT "National Acct,Customer #,Trans. Amt,>60 Days,80\%C.L.,Credit Limit,\$-Over80%,\$-Over100%\n";
foreach my $custname (sort { $Customers->{$b}->{over60} <=> $Customers->{$a}->{over60} } keys %{$Customers}) {
my $Cust = $Customers->{$custname};
next if ($Cust->{total} <= $Cust->{'80percent'});
next if ($Cust->{credit_limit} == 0);
# Since we're sorting on over 60, if we've reached a zero then we're done since we don't show zeros.
last if ($Cust->{over60} == 0);
$Cust->{sover80} = $Cust->{total} - $Cust->{"80percent"};
$Cust->{sover100} = $Cust->{total} - $Cust->{credit_limit};
$Cust->{sover80} = 0 if ($Cust->{sover80} < 0);
$Cust->{sover100} = 0 if ($Cust->{sover100} < 0);
print OUT "$Cust->{natl_acct},$custname,\$$Cust->{total},\$$Cust->{over60},\$$Cust->{'80percent'},\$$Cust->{credit_limit},\$$Cust->{sover80},\$$Cust->{sover100},$Cust->{wip}\n";
}
close (OUT);
I do't understand below part what it means and does :
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
Is there anyone who can help me ? where can i find more meaningful information ?
Thanks in advance.
TTMTECH
I am new to perl.I need to write modify report program for management. Below is a program file.
#!/usr/bin/perl
use strict;
use Win32::FileOp qw(OpenDialog SaveAsDialog);
my $Customers;
my $credit_list = OpenDialog( title => "Select Credit List", filters => [ 'Text File (*.txt)' => "*.txt" ]);
my $credit_limit = OpenDialog( title => "Select Credit Limit", filters => [ 'Text File (*.txt)' => "*.txt" ]);
if (!$credit_list || !$credit_limit) {
print "Error: Required input reports were not supplied.\n";
sleep 3;
exit;
}
open (IN, $credit_list);
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
my ($custname, $natl_acct, $credit_limit) = split(/\t/, $line);
$Customers->{$custname}->{natl_acct} = $natl_acct;
$Customers->{$custname}->{credit_limit} = $credit_limit;
$Customers->{$custname}->{'80percent'} = $credit_limit * .8;
$Customers->{$custname}->{over60} = 0;
}
open (IN, $credit_limit);
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
my ($natl_acct, $custname, $docnum, $total, $credit_limit, $doctype, $over60, $over90) = split(/\t/, $line);
$Customers->{$custname}->{natl_acct} = $natl_acct;
$Customers->{$custname}->{over60} = $over60;
$Customers->{$custname}->{over90} = $over90;
$Customers->{$custname}->{total} += $total;
}
close (IN);
# SA wip data
open (IN, '\\\\ftpserver\schedule\wip\today\sablog.txt') || die "Couldn't get SA WIP data: $!\n";
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
$line =~ s/^\s+//g;
$line =~ s/\s+$//g;
$line =~ s/\^\s+/^/g;
$line =~ s/\s+\^/^/g;
my (undef, $custname, undef, $total) = split(/\^/, $line);
next if (!$custname);
$Customers->{$custname}->{total} += $total;
$Customers->{$custname}->{wip} = "WIP";
}
close (IN);
# RD wip data
open (IN, '\\\\ftpserver\schedule\wip\today\rdblog.txt') || die "Couldn't get RD WIP data: $!\n";
while (<IN>) {
my $line = $_;
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
$line =~ s/^\s+//g;
$line =~ s/\s+$//g;
$line =~ s/\^\s+/^/g;
$line =~ s/\s+\^/^/g;
my (undef, $custname, undef, $total) = split(/\^/, $line);
next if (!$custname);
$Customers->{$custname}->{total} += $total;
$Customers->{$custname}->{wip} = "WIP";
}
close (IN);
my $final_report = SaveAsDialog( title => "Save As", filters => [ 'CSV (Comma delimited) (*.csv)' => "*.csv" ]);
if (!$final_report) {
print "Error: Output file was not specified.\n";
sleep 3;
exit;
}
open (OUT, ">$final_report"
my ($day, $month, $year) = (localtime)[3,4,5];
$month++; $year += 1900;
print OUT ",$month/$day/$year,,Credit Limit Report,,,,\n\n";
print OUT "National Acct,Customer #,Trans. Amt,>60 Days,80\%C.L.,Credit Limit,\$-Over80%,\$-Over100%\n";
foreach my $custname (sort { $Customers->{$b}->{over60} <=> $Customers->{$a}->{over60} } keys %{$Customers}) {
my $Cust = $Customers->{$custname};
next if ($Cust->{total} <= $Cust->{'80percent'});
next if ($Cust->{credit_limit} == 0);
# Since we're sorting on over 60, if we've reached a zero then we're done since we don't show zeros.
last if ($Cust->{over60} == 0);
$Cust->{sover80} = $Cust->{total} - $Cust->{"80percent"};
$Cust->{sover100} = $Cust->{total} - $Cust->{credit_limit};
$Cust->{sover80} = 0 if ($Cust->{sover80} < 0);
$Cust->{sover100} = 0 if ($Cust->{sover100} < 0);
print OUT "$Cust->{natl_acct},$custname,\$$Cust->{total},\$$Cust->{over60},\$$Cust->{'80percent'},\$$Cust->{credit_limit},\$$Cust->{sover80},\$$Cust->{sover100},$Cust->{wip}\n";
}
close (OUT);
I do't understand below part what it means and does :
$line =~ s/\r|\n//g;
$line =~ s/\$//g;
$line =~ s/\"//g;
$line =~ s/,//g;
Is there anyone who can help me ? where can i find more meaningful information ?
Thanks in advance.
TTMTECH