首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

perl中if ( not defined $ARGV[1] )的含义解决方法

2012-03-27 
perl中if ( not defined $ARGV[1] )的含义Perl codeif ( not defined $ARGV[1] ){$start 20080101$en

perl中if ( not defined $ARGV[1] )的含义

Perl code
if ( not defined $ARGV[1] ){        $start = '20080101';        $end = '20200101';}else{        $start= $ARGV[0];        $end = $ARGV[1];}


请问$ARGV[1]不是参数吗 这句话怎么理解呢 有什么必要这么写吗 


初看别人的程序 还不太了解


所有程序如下

Perl code
use strict;use warnings;use Time::Local;my $start;my $end;if ( not defined $ARGV[1] ){        $start = '20080101';        $end = '20200101';}else{        $start= $ARGV[0];        $end = $ARGV[1];}open my $DAY, ">","days.dat";my $day= $start;while ( $day < $end){        my $today = getSeconds($day);        my $yesterday = ($today - 24*60*60 );        print $DAY transDate($yesterday).' '.transDate($today)."\n";        $day = transDate($today + 24*60*60);}sub getSeconds{        my $date = shift;        $date =  timelocal ( 0, 0, 0, substr($date,6,2), substr($date,4,2) - 1, substr($date,0,4) );  ##若第三个参数没有则一直到string尾部        return $date;}sub transDate{        my $date = shift;        my ( $sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst )  = localtime( $date );        $mon = $mon +1;        if ( length( $mon ) == 1 && $mon <10 )        {                $mon = '0'.$mon;        }        if ( $mday < 10 )        {                $mday = '0'.$mday;        }        return ($year + 1900).$mon.$mday;}


[解决办法]
Perl code
# 如果没有指定第二个参数,设置默认的开始日期和结束日期# 有没有必要看怎么设计了,亦可以在没有结束日期的情况下(没有指定第二个参数)退出,给出提示# 因为下面的必须有结束日期才可以while ($day < $end)if ( not defined $ARGV[1] ) {    $start = '20080101';    $end = '20200101';# 如果指定了第二个参数,结束日期 和 开始日期 都是用输入的参数} else {    $start= $ARGV[0];    $end = $ARGV[1];}
[解决办法]
$ARGV[0]
$ARGV[1]
两个锚点文件,
依据它们处理源文件后会生成两个数据文件
[解决办法]
@ARGV里面存放的是从外部传进来的参数,$ARGV[1]就是第二个参数,如果没有第二个参数,也就是 "not defined $ARGV[1]"。
另外,你open文件写入后,没有close。

热点排行