fileno is 2 fileno is 2 That's all, folks! #### sub new { die "$0: main::new() sub called\n"; } sub Class { die "$0: main::Class() sub called\n"; } ### PICK EXACTLY ONE OF: #1# local *new ; #2# local *new = Class new ; #3# local *new = Class->new() ; #4# local *new = Class::->new() ; #5# local *new = new Class ; #6# local *new = new Class:: ; ### PICK EXACTLY ONE OF: #1# open( new, "> &=STDERR") || die; #2# open( new, "> &STDERR") || die; #3# open( new, ">& STDERR") || die; #4# open( new, ">&", *STDERR) || die; #5# open( new, ">&=STDERR") || die; #6# open(*new, ">&=STDERR") || die; #7# open(*new, ">&", *STDERR) || die; my $fd = fileno(*new) // die "no fileno"; die "wrong fileno" unless $fd == 2; my $output = "fileno is $fd\n"; syswrite(*main::STDOUT, $output, length($output)); ### PICK EXACTLY ONE OF: #1# (print new $output ) || die; #2# (print "new" $output ) || die; #3# (print *new $output ) || die; #4# (print ::new $output ) || die; #5# (print {*new} $output ) || die; ### PICK EXACTLY ONE OF: #1# close( new ) ? done() : die "can't close new: $!"; #2# close( new::) ? done() : die "can't close new: $!"; #3# close( "new" ) ? done() : die "can't close new: $!"; #4# close( *new ) ? done() : die "can't close new: $!"; #5# close( ::new ) ? done() : die "can't close new: $!"; #6# close(*::new ) ? done() : die "can't close new: $!"; sub done { print "That's all, folks!\n"; } package Class; sub new { require "IO/Handle.pm"; return IO::Handle::->new(); } #### print OUTPUT while ; #### $op = shift() || die; for (@ARGV) { $was = $_; eval $op; die if $@; rename($was, $_) || die "rename: $!" unless $was eq $_; } #### sub fhbits { my(@fhlist) = split(' ',$_[0]); my($bits); for (@fhlist) { vec($bits,fileno($_),1) = 1; } $bits; } $rin = fhbits('STDIN TTY SOCK'); #### sub fhbits { my @fhlist = split(" ", $_[0]); my $bits ; for (@fhlist) { vec($bits, fileno($_), 1) = 1; } return $bits; } $rin = fhbits(*STDIN, *TTY, *SOCK); #### no strict; no warnings; no less tricksy; foo(lish); his::bar(tab); silly->stuff; come on, please give up; package UNIVERSAL; sub AUTOLOAD { print "I am masquerading as $AUTOLOAD(@_)\n" }