代码之家  ›  专栏  ›  技术社区  ›  Vijay

为什么我使用SQL从Perl得到奇怪的输出?

  •  2
  • Vijay  · 技术社区  · 14 年前

    foreach my $line  (@tmp_field_validation)
    {
            chomp $line;
            my ($cycle_code,$cycle_month,$cycle_year)= split /\s*\|\s*/, $line;
            $cycle_code=~ s/^\s*(.*)\s*$/$1/;
            $cycle_month=~ s/^\s*(.*)\s*$/$1/;
            $cycle_year=~ s/^\s*(.*)\s*$/$1/;
            print "$line\n";
            print "$cycle_code|$cycle_month|$cycle_year";
    }
    

    输出如下:

             1          10       2009
    1           10       2009||
    

    这里怎么了?

    编辑: tmp_field_validation是sql查询的输出,它有一个select语句,如:

    select cycle_code,cycle_month,cycle_year from ....
    

    2 回复  |  直到 14 年前
        1
  •  4
  •   toolic    14 年前

    您应该在代码的顶部添加以下行:

    use warnings;
    

    use strict;
    use warnings;
    
    my @tmp_field_validation = ("         1          10       2009\n");
    
    foreach my $line  (@tmp_field_validation)
    {
            chomp $line;
            $line =~ s/^\s*//;
            my ($cycle_code,$cycle_month,$cycle_year)= split /\s+/, $line;
            print "$line\n";
            print "$cycle_code|$cycle_month|$cycle_year";
    }
    

    1          10       2009
    1|10|2009
    
        2
  •  3
  •   Konerak    14 年前

    因为整行代码都存放在$cycle_code变量中。另外两个变量是空字符串。