ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/staticperl/perl/lib/SelectSaver.pm
Revision: 1.1
Committed: Thu Jun 30 14:27:08 2005 UTC (21 years, 4 months ago) by root
Branch: MAIN
CVS Tags: PERL-5-8-7, HEAD
Branch point for: PERL
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 package SelectSaver;
2    
3     our $VERSION = '1.01';
4    
5     =head1 NAME
6    
7     SelectSaver - save and restore selected file handle
8    
9     =head1 SYNOPSIS
10    
11     use SelectSaver;
12    
13     {
14     my $saver = new SelectSaver(FILEHANDLE);
15     # FILEHANDLE is selected
16     }
17     # previous handle is selected
18    
19     {
20     my $saver = new SelectSaver;
21     # new handle may be selected, or not
22     }
23     # previous handle is selected
24    
25     =head1 DESCRIPTION
26    
27     A C<SelectSaver> object contains a reference to the file handle that
28     was selected when it was created. If its C<new> method gets an extra
29     parameter, then that parameter is selected; otherwise, the selected
30     file handle remains unchanged.
31    
32     When a C<SelectSaver> is destroyed, it re-selects the file handle
33     that was selected when it was created.
34    
35     =cut
36    
37     require 5.000;
38     use Carp;
39     use Symbol;
40    
41     sub new {
42     @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]';
43     my $fh = select;
44     my $self = bless \$fh, $_[0];
45     select qualify($_[1], caller) if @_ > 1;
46     $self;
47     }
48    
49     sub DESTROY {
50     my $self = $_[0];
51     select $$self;
52     }
53    
54     1;