#!/usr/bin/perl -w use strict; use IO::File; my %in; my %out; $in{b} = new IO::File; $out{b} = new IO::File; $in{b}->open("open(">ramdata2") || die $!; my $fi = $in{b}; my $fo = $out{b}; &v1; # &v2; # this also works close($in{b}); close($fo); sub v1 { # works while (<$fi>) { print $fo "-> $_"; } } sub v2 { # works my $x = $in{b}; while (<$x>) { print {$out{b}} "-> $_"; # sneak by print: treat as object } } sub nogoods { # these doesn't compile # while (<{$in{b}}>) { # no obj allowed in diamond # ... } # while (readline($in{b})) { # bad: storing obj not fh glob # ... } }