Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Re: Re: Re: Re: Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"

by stvn (Monsignor)
on Mar 24, 2004 at 15:11 UTC ( [id://339425]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Re: Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"
in thread Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"

You expected something to work, and it didn't, because of the circumstance.

The > operator is kind of difficult since it is really meant to be used in a boolean comparison. Perl will usually issue a warning if it is used in a void context (which makes sense). I had actually implemented both the > & >> operators in a file class I wrote once, and I found myself writing code like this to avoid warnings.

($f > "writing this to my file") || die "cannot write to file for some + reason";
Its a little overkill, but the project requirements actually dictated this level of strictness so it worked out.

IO::All actually catches the warnings, and dismisses them:

# line 800 in All.pm if ($_[0] !~ /^Useless use of .+ \(.+\) in void context/) { goto &$old_warn_handler if $old_warn_handler; warn(@_); }
Which IMHO is kinda dangerous as it hides real warnings too. But hey, TIMTOWTDI i suppose.

In the end, Perl's overloading is great, but is somewhat limited in the sense that the original "intention" of the operator is somewhat retained. Of course, you could also view this as a good thing, as it prevents people from doing really weird stuff.

I have to say, I like both the '>' and '>>' operators - they work just like in the shell, pretty much. '>>' is also a bit C++-ish. But, maybe it's just my brane.

Nah, its what coding in C++ has done to your brain, its not your fault. ;-)

-stvn
  • Comment on Re: Re: Re: Re: Re: Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"
  • Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://339425]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2024-04-18 07:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found