Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Roles definitely sounds like the right way to go, and are probably the Perl 6 solution.

    But the common Perl 5 solution does seem to be "If it got passed in as a filehandle, assume it's a filehandle". Though I'm not claiming that's not problematic (many modules die spectactularly and unhelpfully if passed the wrong parameters, rather than giving a useful "invalid usage" exception), is it really worth getting your module's users to have to create an iterator function wrapping a filehandle purely because there isn't a convenient idiom to test for filehandleness?


    • Yeah, the bigger problem comes up when you don't even know that "it got passed in as a filehandle." Some modules try to allow many kinds of data to be passed in, each of which is used in a useful way. They'll say "if (ref $x eq 'ARRAY')" and so on. Of course, there's the same problem if you're passing in an Object::Array.

      So, yeah, a simple solution is to make it explicit: pass in a named foo_data that's a scalar or foo_stream that's a coderef... or something like that. Then again, with _CALLABLE, a litt