SankoR has asked for the wisdom of the Perl Monks concerning the following question:
Still working through old reported issues and think I have another upstream bug. Take this:
use Tie::Array; tie my @array_t, 'Tie::StdArray'; my @array = @array_t = qw[aaa bbb ccc ddd eee]; print "plain smatch: " . (/a/ ~~ @array) . "\n"; print "plain grep: " . (grep {/a/} @array) . "\n"; print "tied smatch: " . (/a/ ~~ @array_t) . "\n"; print "tied grep: " . (grep {/a/} @array_t) . "\n";
When run on my v5.16.3 install, the smartmatch doesn't correctly match against the magically tied @array_t. Devel::Trace shows that it calls the array's FETCHSIZE method just like the tied grep but never bothers to FETCH the correct values. So, I end up with output that looks like:
Use of uninitialized value in pattern match (m//) at bugs.t line 6. Use of uninitialized value in pattern match (m//) at bugs.t line 6. Use of uninitialized value in pattern match (m//) at bugs.t line 6. Use of uninitialized value in pattern match (m//) at bugs.t line 6. Use of uninitialized value in pattern match (m//) at bugs.t line 6. plain smatch: 1 plain grep: 1 tied smatch: tied grep: 1
The warnings are obviously from smartmatch trying to match against undefined values. Can anyone verify that I'm not 'doing it wrong' before I submit a bug report to p5p?
Update: Reported as RT#120122.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Buggy smartmatch on tied array?
by davido (Cardinal) on Oct 05, 2013 at 16:42 UTC | |
by ikegami (Patriarch) on Oct 06, 2013 at 17:50 UTC | |
Re: Buggy smartmatch on tied array?
by kcott (Archbishop) on Oct 05, 2013 at 18:00 UTC |
Back to
Seekers of Perl Wisdom