in reply to multi-arg bless

I have always considered this a non-problem, because i never use that ref($_[0]) mumbo jumbo. Consider the following code:

my $foo = Foo->new1; print $foo->{bar}; # here is the problem, Jim #my $bar = $foo->new1; #print $bar->{bar}; my $baz = $foo->new2; print $baz->{bar}; package Foo; sub new1 { bless { bar => 'baz' }, $_[0] } sub new2 { bless { bar => 'baz' }, ref($_[0]) || $_[0] }
The only reason why you need that ref($_[0]) mumbo jumbo is so the the commented out code will work. I never construct a new object from another ... i use Clone instead.

As for the open stuff, i totally agree ... but if you do really need to abstract open, use IO::File

my $fh = foo('foo.pl','r'); print while <$fh>; sub foo { IO::File->new(@_) }
Again, i do not consider this much of problem because there are clean workarounds.

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)