tags:

views:

77

answers:

2
+3  A: 

Because the entire line got stocked in the $cycle_code variable. The other two variables are empty strings.

Konerak
This is actually an entirely correct answer, but it would be helpful to mention that the *reason* it happens is because the split is on vertical vertical bars (surrounded by optional whitespace), and there are no vertical bars in the input.
hobbs
+4  A: 

You should add the following line to the top of your code:

use warnings;

Or, if your already have it there, you should pay attention to the warning messages you receive. Others have correctly pointed out that your input line does not have any literal pipes. I think you really want something like this:

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";
}

Outputs the following:

1          10       2009
1|10|2009
toolic