Hi John
You'd make life easier for everyone if you prefixed each line of your
program with the line number. The Linux command
cat -n < file> will do that for you.
Andrew in Edinburgh,Scotland
John W. Krahn wrote:
> obdulio santana wrote:
>> I must mix 3 files, and produce a little report but in line 23 and 31
>> is a
>> warning of uninitalized value I really don't see the mistake.
>>
>>
>> use warnings;
>
> use strict;
>
>> @lfile0 = <DATA>;
>> chomp @lfile0;
>> @meses = qw(ene feb mar abr may jun jul ago sep oct nov dic);
>> @files= glob "78*";
>> my %textos;
>> for (@files){
>> open FILE,"<$_";
>
> You should *always* verify that the file opened correctly:
>
> open FILE, '<', $_ or die "Cannot open '$_' $!";
>
>
>> $textos{$_}=[<FILE>];
>> chomp @{$textos{$_}};
>> s/.{5}// for @{$textos{$_}};
>> }
>> ($day,$month,$year) = (localtime)[3..5];
>> $dec = $day /10;
>> $month++;
>> $dec = 3 if $dec < 1;
>> $year+=1900;
>> $file = sprintf "vcl%02d%02d%4d.txt",$day,$month,$year;
>> open FILEOUT, ">$file";
>
> You should *always* verify that the file opened correctly:
>
> open FILEOUT, '>', $file or die "Cannot open '$file' $!";
>
>
>> print FILEOUT "Resumen decadal \n" ;
>> printf FILEOUT "$meses[$month-1]/$year;#%d \n",$dec ;
>> $form = "%13s" x @files ;
>> printf FILEOUT "%23s" . "$form\n",sort keys %textos ;
>
> You have one more printf format then you have keys in %textos:
>
> printf FILEOUT '%23s' . ( '%13s' x ( @files - 1 ) ) . "\n", sort keys
> %textos ;
>
>
>> for $line (5..50){
>> @str=();
>> for (sort keys %textos){
>> push @str,${$textos{$_}}[$line];
>> }
>> $form = "%13s" x @files ;
>> $form = "%-10s".$form."\n";
>> printf FILEOUT $form,$lfile0[$line-6],@str;
>
> $line starts out with a value of 5. 5 - 6 == -1. $lfile0[ -1 ] is
> the *last* element of @lfile0. Did you really want to start with the
> last element?
>
> When $line contains 48, 49 or 50 the value of $lfile0[$line-6] is undef.
>
>
>> }
>> close FILEOUT;
>> __END__
>
>
>
> John
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/