home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / perl-5.003-base.tgz / perl-5.003-base.tar / fsf / perl / lib / SelectSaver.pm < prev    next >
Text File  |  1996-02-01  |  1KB  |  51 lines

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