[EMAIL PROTECTED] wrote:
> $_ = shift @data until /Amount/; # start of transactions
>
>> and get this warning:
>
> Use of uninitialized value in pattern match (m//) at CMS2AP.pl line 138.
>
> One way to avoid the warning is to check for that first uninit'ed $_
Thank you Andy
I had been thinking my statement above was equiv to
do {$_ = shift @data;} until ($_ =~ /Amount);
when it is really equiv to
until ($_ =~ /Amount/) {$_ = shift @data;}
and couldn't see the wood for the trees so to speak.
John
> #!perl -w
> use strict;
> my @data = qw(hi ho hee ha Amount hoo hooh);
> print "t: ", $_ = shift @data, "\n" until ($_ and /Amount/); #
> start of transactions
> # $_ = shift @data until ($_ and /Amount/); # start of transactions
>
> But if you've got a bunch of noise in there before 'Amount' you're wasting
> a lot of assigns, I think. Similarly, you'll run for quite a ways if
> there *isn't* an "Amount" in there ;->
>
> I tried to use the '...' flip-flop:
> [the flip-flop '..' operator] can test the right operand and
> become false on the same evaluation it became true (as in awk), but
> it still returns true once. If you
> don't want it to test the right operand till the next evaluation,
> as in sed, just use three dots ("...")
> instead of two. In all other regards, "..." behaves just like ".."
> does.
>
> but couldn't get it to help here. I'd think you'd want to do this on the
> front end, though. Don't put it into @data in the first place
> while (<>) {
> next if 1 .. /Amount/;
> chomp;
> push @data, $_;
> ...
>
> or something.
>
> a
>
> Andy Bach
> Systems Mangler
> Internet: [EMAIL PROTECTED]
> VOICE: (608) 261-5738 FAX 264-5932
>
> The competent programmer is fully aware of the strictly limited size of
> his own skull; therefore he approaches the programming task in full
> humility, and among other things he avoids clever tricks like the
> plague. -- Edsger Dijkstra
>
--
Regards
John McMahon
[EMAIL PROTECTED]
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs