on Fri, 09 Aug 2002 09:11:24 GMT, [EMAIL PROTECTED] (John W. Krahn) wrote:
> sub mysub { > my $a = shift; > my $b = shift || 5; > } This only works when 0 or '' are not allowed for the second parameter. my $a = $_[0]; my $b = defined($_[1]) ? $_[1] : 5; takes care of this. An elegant solution, especially when you have a lot of possible parameters, is to use named parameters: #! /usr/bin/perl -w use strict; use Carp; mysub (A => 10, C => 'Hello, world'); sub mysub { croak "Invalid parameter list" if @_ % 2; my %defaults = ( A => 1, B => 2, C => 'A string'); my %parameters = (%defaults, @_); for my $p (sort keys %parameters) { print "$p has value '$parameters{$p}'\n"; } return; } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]