14a4f25f9Sdownsjpackage SelectSaver; 24a4f25f9Sdownsj 3*df042708Smillertour $VERSION = '1.02'; 479cd0b9aSmillert 54a4f25f9Sdownsj=head1 NAME 64a4f25f9Sdownsj 74a4f25f9SdownsjSelectSaver - save and restore selected file handle 84a4f25f9Sdownsj 94a4f25f9Sdownsj=head1 SYNOPSIS 104a4f25f9Sdownsj 114a4f25f9Sdownsj use SelectSaver; 124a4f25f9Sdownsj 134a4f25f9Sdownsj { 14*df042708Smillert my $saver = SelectSaver->new(FILEHANDLE); 154a4f25f9Sdownsj # FILEHANDLE is selected 164a4f25f9Sdownsj } 174a4f25f9Sdownsj # previous handle is selected 184a4f25f9Sdownsj 194a4f25f9Sdownsj { 20*df042708Smillert my $saver = SelectSaver->new; 214a4f25f9Sdownsj # new handle may be selected, or not 224a4f25f9Sdownsj } 234a4f25f9Sdownsj # previous handle is selected 244a4f25f9Sdownsj 254a4f25f9Sdownsj=head1 DESCRIPTION 264a4f25f9Sdownsj 274a4f25f9SdownsjA C<SelectSaver> object contains a reference to the file handle that 284a4f25f9Sdownsjwas selected when it was created. If its C<new> method gets an extra 294a4f25f9Sdownsjparameter, then that parameter is selected; otherwise, the selected 304a4f25f9Sdownsjfile handle remains unchanged. 314a4f25f9Sdownsj 324a4f25f9SdownsjWhen a C<SelectSaver> is destroyed, it re-selects the file handle 334a4f25f9Sdownsjthat was selected when it was created. 344a4f25f9Sdownsj 354a4f25f9Sdownsj=cut 364a4f25f9Sdownsj 374a4f25f9Sdownsjrequire 5.000; 384a4f25f9Sdownsjuse Carp; 394a4f25f9Sdownsjuse Symbol; 404a4f25f9Sdownsj 414a4f25f9Sdownsjsub new { 42*df042708Smillert @_ >= 1 && @_ <= 2 or croak 'usage: SelectSaver->new( [FILEHANDLE] )'; 43ba47ec9dSmillert my $fh = select; 44ad15181aSmillert my $self = bless \$fh, $_[0]; 45ba47ec9dSmillert select qualify($_[1], caller) if @_ > 1; 46ba47ec9dSmillert $self; 474a4f25f9Sdownsj} 484a4f25f9Sdownsj 494a4f25f9Sdownsjsub DESTROY { 50ad15181aSmillert my $self = $_[0]; 51ad15181aSmillert select $$self; 524a4f25f9Sdownsj} 534a4f25f9Sdownsj 544a4f25f9Sdownsj1; 55