home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _9f140e820f9a3f66f8d583bf22dd5e60 < prev    next >
Text File  |  2004-06-01  |  1KB  |  55 lines

  1. package SelectSaver;
  2.  
  3. our $VERSION = '1.00';
  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 $this = $_[0];
  51.     select $$this[0];
  52. }
  53.  
  54. 1;
  55.