home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_mlb.zip / SelectSaver.pm < prev    next >
Text File  |  1997-11-25  |  1KB  |  53 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 = select;
  42.     my $self = bless [$fh], $_[0];
  43.     select qualify($_[1], caller) if @_ > 1;
  44.     $self;
  45. }
  46.  
  47. sub DESTROY {
  48.     my $this = $_[0];
  49.     select $$this[0];
  50. }
  51.  
  52. 1;
  53.