サブルーチン
- 「あ!
これ進研ゼミPerl入学式でやったところだ!」
- ってことで、あまり苦労せずに進むことが出来たでござる。
練習問題10-3
use strict;
use warnings;
my @data = ( 'How', 'I', 'wonder', 'what', 'you', 'are.', '' );
print join( ', ', &get_length_list(@data) ), "\n";
sub get_length_list {
my @word_list = @_;
my @word_count;
for my $i (@word_list) {
push @word_count, length $i;
}
return @word_count;
}
練習問題10-4
use strict;
use warnings;
print &factorial(-1), "\n";
for ( my $n = 0; $n < 10; $n++ ) {
print &factorial($n), "\n";
}
print &factorial(10.5), "\n";
sub factorial {
my $number = shift @_;
$number = int $number;
my $fac = 1;
if ( $number < 0 ) {
return 0;
}
elsif ( $number == 0 ) {
return 1;
}
else {
for my $i ( 1 .. $number ) {
$fac *= $i;
}
return $fac;
}
}
練習問題10-6
use strict;
use warnings;
my @data = &get_data;
print join( ', ', @data ), "\n";
my $data = &get_data;
print $data;
sub get_data {
my ( $sec, $min, $hour, $day, $mon, $year ) = localtime;
$year += 1900;
$mon += 1;
unless ( defined(wantarray) ) {
}
elsif (wantarray) {
return ( $year, $mon, $day );
}
else {
$mon = '0' . $mon if ( $mon < 10 );
$day = '0' . $day if ( $day < 10 );
return ("$year-$mon-$day");
}
}