[ale] Perl Help split stopped working recently

DJPfulio at jdpfu.com DJPfulio at jdpfu.com
Thu Dec 1 13:59:05 EST 2022


Thanks!  So I'm not crazy. It should work!

For perl-5.33.8 and 5.30.x:

$ ./t.pl in.test
Use of uninitialized value $stop_time in concatenation (.) or string at ./t.pl line 17, <> line 1.
Line:   5:00 AM - 6:00 AM Live
           5:00 AM - 6:00 AM Live,
Use of uninitialized value $stop_time in concatenation (.) or string at ./t.pl line 17, <> line 2.
Line:   6:00 AM - 7:00 AM New
           6:00 AM - 7:00 AM New,


Note how the output with 2 parameters shows the ',' at the end? That's because split() didn't do anything.  Initially, I thought a different '-' character was being provided. Nope. Nothing different there.

So, that got me thinking.  The input source changed the whitespace characters! Because I only email with 7-bit ASCII, nobody here saw that.

Thanks again.  I'll be replacing whitespace in the input lines to ASCII now. That should prevent any likely issues. Hopefully.


On 12/1/22 12:57, Leam Hall via Ale wrote:
> Here's what I got From Perl 5.32.1:
> 
> ./for_dj.pl < dj.file
> Line: 5:00 AM - 6:00 AM Live
>        5:00 AM, 6:00 AM Live
> Line: 6:00 AM - 7:00 AM New
>        6:00 AM, 7:00 AM New
> 
> 
>  From (hand typed):
> 
> #!/usr/bin/env perl
> 
> use strict;
> use warnings;
> use utf8;
> 
> my $start_time = "";
> my $stop_time = "";
> 
> while (<>){
>      chomp;
>      my $line = $_;
> 
>      ($start_time, $stop_time ) = split( / - /, $line, 2 );
>      print "Line: $line\n \t $start_time, $stop_time \n";
> }
> 
> On 12/1/22 11:11, DJPfulio--- via Ale wrote:
>>
>> I have this complete, simple, perl program ...
>>
>> ==
>> #!/usr/bin/env perl
>> use strict;
>> use warnings;
>> use utf8;
>>
>> my $start_time = "";
>> my $stop_time = "";
>>
>> while (<>){
>>   chomp;
>>   my $line = $_;
>>
>>    ( $start_time, $stop_time ) = split( / - /, $line, 2);
>>
>>     print "Line: $line\n \t $start_time, $stop_time\n";
>> }
>> ==
>>
>> And I feed it this input file:
>>
>> ==
>>    5:00 AM - 6:00 AM Live
>>    6:00 AM - 7:00 AM New
>> ==
>>
>> This pattern for split is something I've used for over 25 yrs and 2 weeks ago, it was working as expected.  Today, it doesn't work.  The $stop_time isn't being set.  split() ain't workin'.  The $start_time ends up with a copy of the line.
>>
>> Tried with perl v5.30 and v5.33 on 2 different systems. Same results.
>>
>> I expect the start to be "  5:00 AM" and the stop to be "6:00 AM Live" for the first input after the split().
>>
>> Any ideas?  I'm assuming it is something dumb, but for something this simple, I'm just missing it.
>> _______________________________________________
>> Ale mailing list
>> Ale at ale.org
>> https://mail.ale.org/mailman/listinfo/ale
>> See JOBS, ANNOUNCE and SCHOOLS lists at
>> http://mail.ale.org/mailman/listinfo
> 



More information about the Ale mailing list