r20384 - in /branches/upstream/liblist-compare-perl/current: Changes MANIFEST META.yml README lib/List/Compare.pm lib/List/Compare/Base/_Auxiliary.pm lib/List/Compare/Base/_Engine.pm lib/List/Compare/Functional.pm t/IO/ t/IO/CaptureOutput.pm t/Test/IO/

gregoa at users.alioth.debian.org gregoa at users.alioth.debian.org
Sat May 24 22:26:58 UTC 2008


Author: gregoa
Date: Sat May 24 22:26:58 2008
New Revision: 20384

URL: http://svn.debian.org/wsvn/?sc=1&rev=20384
Log:
[svn-upgrade] Integrating new upstream version, liblist-compare-perl (0.36)

Added:
    branches/upstream/liblist-compare-perl/current/t/IO/
    branches/upstream/liblist-compare-perl/current/t/IO/CaptureOutput.pm
Removed:
    branches/upstream/liblist-compare-perl/current/t/Test/IO/
Modified:
    branches/upstream/liblist-compare-perl/current/Changes
    branches/upstream/liblist-compare-perl/current/MANIFEST
    branches/upstream/liblist-compare-perl/current/META.yml
    branches/upstream/liblist-compare-perl/current/README
    branches/upstream/liblist-compare-perl/current/lib/List/Compare.pm
    branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Auxiliary.pm
    branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Engine.pm
    branches/upstream/liblist-compare-perl/current/lib/List/Compare/Functional.pm

Modified: branches/upstream/liblist-compare-perl/current/Changes
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/Changes?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/Changes (original)
+++ branches/upstream/liblist-compare-perl/current/Changes Sat May 24 22:26:58 2008
@@ -139,3 +139,7 @@
       get_intersection and get_intersection_ref.
     - Complete overhaul of test suite.  Tests are now grouped by interface in
       a more logical order.
+
+0.36 Fri May 23 21:41:55 EDT 2008
+    - IO::CaptureOutput was mispositioned:  should have been directly under t/
+      rather than under t/Test/.

Modified: branches/upstream/liblist-compare-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/MANIFEST?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/MANIFEST (original)
+++ branches/upstream/liblist-compare-perl/current/MANIFEST Sat May 24 22:26:58 2008
@@ -58,5 +58,5 @@
 t/47_func_hashes_alt_mult_sorted.t
 t/48_func_hashes_alt_mult_unsorted.t
 t/91_func_errors.t
-t/Test/IO/CaptureOutput.pm
+t/IO/CaptureOutput.pm
 t/Test/ListCompareSpecial.pm

Modified: branches/upstream/liblist-compare-perl/current/META.yml
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/META.yml?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/META.yml (original)
+++ branches/upstream/liblist-compare-perl/current/META.yml Sat May 24 22:26:58 2008
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:                List-Compare
-version:             0.35
+version:             0.36
 abstract:            Compare elements of two or more lists
 license:             ~
 author:              

Modified: branches/upstream/liblist-compare-perl/current/README
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/README?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/README (original)
+++ branches/upstream/liblist-compare-perl/current/README Sat May 24 22:26:58 2008
@@ -1,15 +1,15 @@
 #$Id: README 1306 2008-05-18 23:59:08Z jimk $
 List::Compare - Compare elements of two or more lists
 
-This document refers to version 0.35 of List::Compare.  This version was
-released May 18, 2008.
+This document refers to version 0.36 of List::Compare.  This version was
+released May 23, 2008.
 
 To install this module on your system, place the tarball archive file in a 
 temporary directory and call the following:
 
-% gunzip List-Compare-0.35.tar.gz
-% tar xf List-Compare-0.35.tar
-% cd List-Compare-0.35
+% gunzip List-Compare-0.36.tar.gz
+% tar xf List-Compare-0.36.tar
+% cd List-Compare-0.36
 % perl Makefile.PL
 % make
 % make test

Modified: branches/upstream/liblist-compare-perl/current/lib/List/Compare.pm
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/lib/List/Compare.pm?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/lib/List/Compare.pm (original)
+++ branches/upstream/liblist-compare-perl/current/lib/List/Compare.pm Sat May 24 22:26:58 2008
@@ -1,6 +1,6 @@
 package List::Compare;
 #$Id: Compare.pm 1305 2008-05-18 23:58:27Z jimk $
-$VERSION = '0.35';
+$VERSION = '0.36';
 use strict;
 local $^W = 1;
 use Carp;
@@ -1750,8 +1750,8 @@
 
 =head1 VERSION
 
-This document refers to version 0.35 of List::Compare.  This version was
-released May 18, 2008.
+This document refers to version 0.36 of List::Compare.  This version was
+released May 23, 2008.
 
 =head1 SYNOPSIS
 
@@ -3182,7 +3182,7 @@
 James E. Keenan (jkeenan at cpan.org).  When sending correspondence, please 
 include 'List::Compare' or 'List-Compare' in your subject line.
 
-Creation date:  May 20, 2002.  Last modification date:  May 18, 2008.
+Creation date:  May 20, 2002.  Last modification date:  May 23, 2008.
 
 =head1 COPYRIGHT
 

Modified: branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Auxiliary.pm
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Auxiliary.pm?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Auxiliary.pm (original)
+++ branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Auxiliary.pm Sat May 24 22:26:58 2008
@@ -1,6 +1,6 @@
 package List::Compare::Base::_Auxiliary;
 #$Id: _Auxiliary.pm 1305 2008-05-18 23:58:27Z jimk $
-$VERSION = 0.35;
+$VERSION = 0.36;
 use Carp;
 @ISA = qw(Exporter);
 @EXPORT_OK = qw|
@@ -769,8 +769,8 @@
 
 =head1 VERSION
 
-This document refers to version 0.35 of List::Compare::Base::_Auxiliary.
-This version was released May 18, 2008.
+This document refers to version 0.36 of List::Compare::Base::_Auxiliary.
+This version was released May 23, 2008.
 
 =head1 SYNOPSIS
 
@@ -782,7 +782,7 @@
 James E. Keenan (jkeenan at cpan.org).  When sending correspondence, please 
 include 'List::Compare' or 'List-Compare' in your subject line.
 
-Creation date:  May 20, 2002.  Last modification date:  May 18, 2008. 
+Creation date:  May 20, 2002.  Last modification date:  May 23, 2008. 
 Copyright (c) 2002-04 James E. Keenan.  United States.  All rights reserved. 
 This is free software and may be distributed under the same terms as Perl
 itself.

Modified: branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Engine.pm
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Engine.pm?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Engine.pm (original)
+++ branches/upstream/liblist-compare-perl/current/lib/List/Compare/Base/_Engine.pm Sat May 24 22:26:58 2008
@@ -1,6 +1,6 @@
 package List::Compare::Base::_Engine;
 #$Id: _Engine.pm 1305 2008-05-18 23:58:27Z jimk $
-$VERSION = 0.35;
+$VERSION = 0.36;
 # Holds subroutines used within 
 # List::Compare::Base::Accelerated and List::Compare::Functional
 # As of:  09/18/2005
@@ -83,8 +83,8 @@
 
 =head1 VERSION
 
-This document refers to version 0.35 of List::Compare::Base::_Engine.
-This version was released May 18, 2008.
+This document refers to version 0.36 of List::Compare::Base::_Engine.
+This version was released May 23, 2008.
 
 =head1 SYNOPSIS
 
@@ -96,7 +96,7 @@
 James E. Keenan (jkeenan at cpan.org).  When sending correspondence, please 
 include 'List::Compare' or 'List-Compare' in your subject line.
 
-Creation date:  May 20, 2002.  Last modification date:  May 18, 2008. 
+Creation date:  May 20, 2002.  Last modification date:  May 23, 2008. 
 Copyright (c) 2002-04 James E. Keenan.  United States.  All rights reserved. 
 This is free software and may be distributed under the same terms as Perl
 itself.

Modified: branches/upstream/liblist-compare-perl/current/lib/List/Compare/Functional.pm
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/lib/List/Compare/Functional.pm?rev=20384&op=diff
==============================================================================
--- branches/upstream/liblist-compare-perl/current/lib/List/Compare/Functional.pm (original)
+++ branches/upstream/liblist-compare-perl/current/lib/List/Compare/Functional.pm Sat May 24 22:26:58 2008
@@ -1,6 +1,6 @@
 package List::Compare::Functional;
 #$Id: Functional.pm 1305 2008-05-18 23:58:27Z jimk $
-$VERSION = 0.35;
+$VERSION = 0.36;
 @ISA = qw(Exporter);
 @EXPORT_OK = qw|
     get_intersection
@@ -523,8 +523,8 @@
 
 =head1 VERSION
 
-This document refers to version 0.35 of List::Compare::Functional.  
-This version was released May 18, 2008.  The first released 
+This document refers to version 0.36 of List::Compare::Functional.  
+This version was released May 23, 2008.  The first released 
 version of List::Compare::Functional was v0.21.  Its version numbers 
 are set to be consistent with the other parts of the List::Compare 
 distribution.
@@ -1688,7 +1688,7 @@
 include 'List::Compare::Functional' or 'List-Compare-Functional' in your 
 subject line.
 
-Creation date:  May 20, 2002.  Last modification date:  May 18, 2008. 
+Creation date:  May 20, 2002.  Last modification date:  May 23, 2008. 
 Copyright (c) 2002-04 James E. Keenan.  United States.  All rights reserved. 
 This is free software and may be distributed under the same terms as Perl
 itself.

Added: branches/upstream/liblist-compare-perl/current/t/IO/CaptureOutput.pm
URL: http://svn.debian.org/wsvn/branches/upstream/liblist-compare-perl/current/t/IO/CaptureOutput.pm?rev=20384&op=file
==============================================================================
--- branches/upstream/liblist-compare-perl/current/t/IO/CaptureOutput.pm (added)
+++ branches/upstream/liblist-compare-perl/current/t/IO/CaptureOutput.pm Sat May 24 22:26:58 2008
@@ -1,0 +1,266 @@
+# $Id: CaptureOutput.pm,v 1.3 2005/03/25 12:44:14 simonflack Exp $
+package IO::CaptureOutput;
+use strict;
+use vars qw/$VERSION @ISA @EXPORT_OK %EXPORT_TAGS/;
+use Exporter;
+ at ISA = 'Exporter';
+ at EXPORT_OK = qw/capture capture_exec qxx capture_exec_combined qxy/;
+%EXPORT_TAGS = (all => \@EXPORT_OK);
+$VERSION = '1.06';
+
+sub capture (&@) { ## no critic
+    my ($code, $output, $error) = @_;
+    for ($output, $error) {
+        $_ = \do { my $s; $s = ''} unless ref $_;
+        $$_ = '' unless defined($$_);
+    }
+    my $capture_out = IO::CaptureOutput::_proxy->new('STDOUT', $output);
+    my $capture_err = IO::CaptureOutput::_proxy->new(
+        'STDERR', $error, $output == $error ? 'STDOUT' : undef
+    );
+    &$code();
+}
+
+sub capture_exec {
+    my @args = @_;
+    my ($output, $error);
+    capture sub { system _shell_quote(@args) }, \$output, \$error;
+    return wantarray ? ($output, $error) : $output;
+}
+
+*qxx = \&capture_exec;
+
+sub capture_exec_combined {
+    my @args = @_;
+    my $output;
+    capture sub { system _shell_quote(@args) }, \$output, \$output;
+    return $output;
+}
+
+*qxy = \&capture_exec_combined;
+
+# extra quoting required on Win32 systems
+*_shell_quote = ($^O =~ /MSWin32/) ? \&_shell_quote_win32 : sub {@_};
+sub _shell_quote_win32 {
+    my @args;
+    for (@_) {
+        if (/[ \"]/) { # TODO: check if ^ requires escaping
+            (my $escaped = $_) =~ s/([\"])/\\$1/g;
+            push @args, '"' . $escaped . '"';
+            next;
+        }
+        push @args, $_
+    }
+    return @args;
+}
+
+# Captures everything printed to a filehandle for the lifetime of the object
+# and then transfers it to a scalar reference
+package IO::CaptureOutput::_proxy;
+use File::Temp 'tempfile';
+use File::Basename qw/basename/;
+use Symbol qw/gensym qualify qualify_to_ref/;
+use Carp;
+
+sub _is_wperl { $^O eq 'MSWin32' && basename($^X) eq 'wperl.exe' }
+
+sub new {
+    my $class = shift;
+    my ($fh, $capture, $merge_fh) = @_;
+    $fh       = qualify($fh);         # e.g. main::STDOUT
+    my $fhref = qualify_to_ref($fh);  # e.g. \*STDOUT
+
+    # Duplicate the filehandle
+    my $saved;
+    {
+        no strict 'refs'; ## no critic - needed for 5.005
+        if ( defined fileno($fh) && ! _is_wperl() ) {
+            $saved = gensym;
+            open $saved, ">&$fh" or croak "Can't redirect <$fh> - $!";
+        }
+    }
+
+    # Create replacement filehandle if not merging
+    my ($newio, $newio_file);
+    if ( ! $merge_fh ) {
+        $newio = gensym;
+        (undef, $newio_file) = tempfile;
+        open $newio, "+>$newio_file" or croak "Can't create temp file for $fh - $!";
+    }
+    else {
+        $newio = qualify($merge_fh);
+    }
+
+    # Redirect (or merge)
+    {
+        no strict 'refs'; ## no critic -- needed for 5.005
+        open $fhref, ">&".fileno($newio) or croak "Can't redirect $fh - $!";
+    }
+
+    bless [$$, $fh, $saved, $capture, $newio, $newio_file], $class;
+}
+
+sub DESTROY {
+    my $self = shift;
+
+    my ($pid, $fh, $saved) = @{$self}[0..2];
+    return unless $pid eq $$; # only cleanup in the process that is capturing
+
+    # restore the original filehandle
+    my $fh_ref = Symbol::qualify_to_ref($fh);
+    select((select ($fh_ref), $|=1)[0]);
+    if (defined $saved) {
+        open $fh_ref, ">&". fileno($saved) or croak "Can't restore $fh - $!";
+    }
+    else {
+        close $fh_ref;
+    }
+
+    # transfer captured data to the scalar reference if we didn't merge
+    my ($capture, $newio, $newio_file) = @{$self}[3..5];
+    if ($newio_file) {
+        # some versions of perl complain about reading from fd 1 or 2
+        # which could happen if STDOUT and STDERR were closed when $newio
+        # was opened, so we just squelch warnings here and continue
+        local $^W; 
+        seek $newio, 0, 0;
+        $$capture = do {local $/; <$newio>};
+        close $newio;
+    }
+
+    # Cleanup
+    return unless defined $newio_file && -e $newio_file;
+    unlink $newio_file or carp "Couldn't remove temp file '$newio_file' - $!";
+}
+
+1;
+
+__END__
+
+=pod
+
+=begin wikidoc
+
+= NAME
+
+IO::CaptureOutput - capture STDOUT and STDERR from Perl code, subprocesses or XS
+
+= VERSION
+
+This documentation describes version %%VERSION%%.
+
+= SYNOPSIS
+
+    use IO::CaptureOutput qw(capture capture_exec);
+
+    my ($stdout, $stderr);
+
+    sub noisy {
+        warn "this sub prints to stdout and stderr!";
+        print "arguments: @_";
+    }
+
+    capture sub {noisy(@args)}, \$stdout, \$stderr;
+
+    ($stdout, $stderr) = capture_exec( 'perl', '-e', 
+        'print "Hello"; print STDERR "World!"');
+
+= DESCRIPTION
+
+This module provides routines for capturing STDOUT and STDERR from perl 
+subroutines, forked system calls (e.g. {system()}, {fork()}) and from 
+XS or C modules.
+
+= FUNCTIONS
+
+The following functions will be exported on demand.
+
+== capture()
+
+    capture(\&subroutine, \$stdout, \$stderr);
+
+Captures everything printed to {STDOUT} and {STDERR} for the duration of
+{&subroutine}. {$stdout} and {$stderr} are optional scalars that will contain
+{STDOUT} and {STDERR} respectively. 
+
+Returns the return value(s) of {&subroutine}. The sub is called in the same
+context as {capture()} was called e.g.:
+
+    @rv = capture(sub {wantarray}); # returns true
+    $rv = capture(sub {wantarray}); # returns defined, but not true
+    capture(sub {wantarray});       # void, returns undef
+
+{capture()} is able to capture output from subprocesses and C code, which
+traditional {tie()} methods of output capture are unable to do.
+
+If the two scalar references refer to the same scalar, then {STDERR} will be
+merged to {STDOUT} before capturing and the scalar will hold the combined
+output of both.
+
+    capture(\&subroutine, \$combined, \$combined);
+
+*Note:* {capture()} will only capture output that has been written or flushed
+to the filehandle.
+
+== capture_exec()
+
+    ($stdout, $stderr) = capture_exec(@args);
+
+Captures and returns the output from {system(@args)}. In scalar context,
+{capture_exec()} will return what was printed to {STDOUT}. In list context,
+it returns what was printed to {STDOUT} and {STDERR}
+
+    $stdout = capture_exec('perl', '-e', 'print "hello world"');
+
+    ($stdout, $stderr) = capture_exec('perl', '-e', 'warn "Test"');
+
+{capture_exec} passes its arguments to {system()} and on MSWin32 will protect
+arguments with shell quotes if necessary.  This makes it a handy and slightly
+more portable alternative to backticks, piped {open()} and {IPC::Open3}.
+
+You can check the exit status of the {system()} call with the {$?}
+variable. See [perlvar] for more information.
+
+== capture_exec_combined()
+
+    $combined = capture_exec_combined(
+        'perl', '-e', 'print "hello\n"', 'warn "Test\n"
+    );
+
+This is just like {capture_exec()}, except that it merges {STDERR} with {STDOUT}
+before capturing output and returns a single scalar.
+
+*Note:* there is no guarantee that text printed to {STDOUT} and {STDERR} in the
+subprocess will be appear in order. The actual order will depend on how IO
+buffering is handled in the subprocess.
+
+== qxx()
+
+This is an alias for {capture_exec()}.
+
+== qxy()
+
+This is an alias for {capture_exec_combined()}.
+
+= SEE ALSO
+
+* [IPC::Open3]
+* [IO::Capture]
+* [IO::Utils]
+
+= AUTHORS
+
+* Simon Flack <simonflk _AT_ cpan.org> (original author)
+* David Golden <dagolden _AT_ cpan.org> (co-maintainer since version 1.04)
+
+= COPYRIGHT AND LICENSE
+
+Portions copyright 2004, 2005 Simon Flack.  Portions copyright 2007 David
+Golden.  All rights reserved.
+
+You may distribute under the terms of either the GNU General Public License or
+the Artistic License, as specified in the Perl README file.
+
+=end wikidoc 
+
+=cut




More information about the Pkg-perl-cvs-commits mailing list