this works, thanks. I thought you had to declare the function before
you called it? That is not right?
#!/usr/bin/perl
use warnings;
use strict;
my $num;
print "enter a number: \n";
chomp($num = <STDIN>);
my $x = fact($num);
print "the factorial is: $x\n";
sub fact {
my $num = shift @_;
my $res = 1;
while ($num > 1) {
$res *= $num;
$num--;
}
return $res;
}
On Tue, Dec 30, 2008 at 7:20 AM, Mr. Shawn H. Corey
<[email protected]> wrote:
> On Tue, 2008-12-30 at 07:10 -0600, David Ehresmann wrote:
>> I have a factorial script that calls a sub fact that does the
>> factorial and returns a value. But I get this error when I execute
>> the script:
>>
>> Use of uninitialized value in numeric gt (>) at fact.pl line 22.
>>
>> Here is the script:
>>
>> #!/usr/bin/perl
>>
>> use warnings;
>> use strict;
>>
>> fact();
>
> This calls the sub with an undef arguement. Just delete this line.
>
>> my $num;
>>
>> print "enter a number: \n";
>> chomp($num = <STDIN>);
>>
>> my $x = fact($num);
>> print "the factorial is: $x\n";
>>
>> sub fact {
>> my $num = 0;
>> $num = shift;
>
> Can be done in one line : my $num = shift @_;
>
>> my $res = 1;
>> while ($num > 1) {
>> $res *= $num;
>> $num--;
>> }
>> return $res;
>> }
> --
> Just my 0.00000002 million dollars worth,
> Shawn
>
> Believe in the Gods but row away from the rocks.
> -- ancient Hindu proverb
>
>
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/