use strict; use warnings; open ( my $foo, '>&=', 1 ); close( STDOUT ); print STDOUT "foo!\n"; print $foo "foo!\n"; open ( my $bar, '>&=', $foo ); close $foo; print $foo "foo!\n"; print $bar "bar!\n"; open ( my $baz, '>', 'files/baz' ); open ( my $quux, '>&=', $baz ); close $baz; print $quux "quux!\n"; open ( $baz, '>>', 'files/baz' ); open ( $quux, '>>&=', $baz ); close $quux; print $baz "baz!\n"; open ( my $prefork, '>', 'files/prefork.txt' ); if ( my $kidpid = fork ) { my $deadkid = wait(); print $prefork "child was pid $deadkid, which thankfully matches $kidpid (we'd be worried if it didn't)\n"; } elsif ( defined $kidpid ) { for ( 0..20 ) { open ( my $postfork, '>>&=', $_ ); close $postfork; print $postfork "Whee!\n"; } print $prefork "Dupes are just copies!\n"; } else { print "I couldn't fork!\n"; }