This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Reduce SelectSaver memory footprint
[perl5.git] / lib / SelectSaver.pm
index 4c764be..8899495 100644 (file)
@@ -1,5 +1,7 @@
 package SelectSaver;
 
+our $VERSION = '1.03';
+
 =head1 NAME
 
 SelectSaver - save and restore selected file handle
@@ -9,13 +11,13 @@ SelectSaver - save and restore selected file handle
     use SelectSaver;
 
     {
-       my $saver = new SelectSaver(FILEHANDLE);
+       my $saver = SelectSaver->new(FILEHANDLE);
        # FILEHANDLE is selected
     }
     # previous handle is selected
 
     {
-       my $saver = new SelectSaver;
+       my $saver = SelectSaver->new;
        # new handle may be selected, or not
     }
     # previous handle is selected
@@ -33,18 +35,19 @@ that was selected when it was created.
 =cut
 
 require 5.000;
-use Carp;
-use Symbol;
+use Symbol q{qualify};
 
 sub new {
-    @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]';
-    my $fh = (@_ > 1) ? (select qualify($_[1], caller)) : select;
-    bless [$fh], $_[0];
+    @_ >= 1 && @_ <= 2 or do { require Carp; Carp::croak('usage: SelectSaver->new( [FILEHANDLE] )') };
+    my $fh = select;
+    my $self = bless \$fh, $_[0];
+    select qualify($_[1], caller) if @_ > 1;
+    $self;
 }
 
 sub DESTROY {
-    my $this = $_[0];
-    select $$this[0];
+    my $self = $_[0];
+    select $$self;
 }
 
 1;