Код: Выделить всё
#!/usr/bin/perl
use Time::Local 'timelocal_nocheck';
sub cal($$){
my ($month,$year)=@_;
my $ret;
my ($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst)=localtime(timelocal_nocheck(0,0,0,1,$month-1,$year));
$wday=($wday==0 ? 6 : $wday - 1);
$ret.=" " x $wday;
my $i = $wday;
foreach (1 .. 31) {
($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst)=localtime(timelocal_nocheck(0,0,0,$_,$month,$year));
last if( $day != $_ );
$ret.=sprintf("%02d ", $day);
$ret.="\n" if( ++$i % 7 == 0);
}
chomp($ret);
return $ret."\n";
}
my ($m,$y)=@ARGV;
print cal($m,$y);только как это сделать, чтобы покороче было?