Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package SelectSaver;
=head1 NAME
SelectSaver - save and restore selected file handle
=head1 SYNOPSIS
use SelectSaver;
{ my $saver = new SelectSaver(FILEHANDLE); # FILEHANDLE is selected } # previous handle is selected
{ my $saver = new SelectSaver; # new handle may be selected, or not } # previous handle is selected
=head1 DESCRIPTION
A C<SelectSaver> object contains a reference to the file handle that was selected when it was created. If its C<new> method gets an extra parameter, then that parameter is selected; otherwise, the selected file handle remains unchanged.
When a C<SelectSaver> is destroyed, it re-selects the file handle that was selected when it was created.
=cut
require 5.000; use Carp; use Symbol;
sub new { @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]'; my $fh = select; my $self = bless [$fh], $_[0]; select qualify($_[1], caller) if @_ > 1; $self; }
sub DESTROY { my $this = $_[0]; select $$this[0]; }
1;
|