In perl.git, the branch dual/Search-Dict has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/50853f72ddfe1b1fd1796a17ed411a90c5878354?hp=acb40bf4d41855095824f7e8816c39c76fc6f55c>

- Log -----------------------------------------------------------------
commit 50853f72ddfe1b1fd1796a17ed411a90c5878354
Author: David Golden <dagol...@cpan.org>
Date:   Sat Mar 31 19:21:46 2012 +0200

    Search::Dict: suppress tied filehandle stat() warnings
-----------------------------------------------------------------------

Summary of changes:
 dist/Search-Dict/Changes            |    4 ++++
 dist/Search-Dict/Makefile.PL        |    1 +
 dist/Search-Dict/lib/Search/Dict.pm |    4 ++--
 dist/Search-Dict/t/Dict.t           |   21 ++++++++++++++++++++-
 4 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/dist/Search-Dict/Changes b/dist/Search-Dict/Changes
index 09ca617..612baf5 100644
--- a/dist/Search-Dict/Changes
+++ b/dist/Search-Dict/Changes
@@ -1,3 +1,7 @@
+1.06 2012-03-31
+
+  - suppress stat() warnings on tied filehandles
+
 1.05  2012-03-31
 
   - no longer requires stat() on filehandle
diff --git a/dist/Search-Dict/Makefile.PL b/dist/Search-Dict/Makefile.PL
index 26f2c84..e55eba7 100644
--- a/dist/Search-Dict/Makefile.PL
+++ b/dist/Search-Dict/Makefile.PL
@@ -13,6 +13,7 @@ my %WriteMakefileArgs = (
   "PREREQ_PM" => {
     "Exporter" => 0,
     "Test::More" => 0.47,
+    "Tie::StdHandle" => 0,
   },
   INSTALLDIRS => 'perl',
 );
diff --git a/dist/Search-Dict/lib/Search/Dict.pm 
b/dist/Search-Dict/lib/Search/Dict.pm
index 3032054..4c518b7 100644
--- a/dist/Search-Dict/lib/Search/Dict.pm
+++ b/dist/Search-Dict/lib/Search/Dict.pm
@@ -11,7 +11,7 @@ BEGIN {
 
 use strict;
 
-our $VERSION = '1.05';
+our $VERSION = '1.06';
 our @ISA = qw(Exporter);
 our @EXPORT = qw(look);
 
@@ -69,7 +69,7 @@ sub look {
     local($_);
     my $fno = fileno $fh;
     my @stat;
-    if ( defined $fno && $fno >= 0 ) { # real, open file
+    if ( defined $fno && $fno >= 0 && ! tied *{$fh} ) { # real, open file
       @stat = eval { stat($fh) }; # in case fileno lies
     }
     my($size, $blksize) = @stat[7,11];
diff --git a/dist/Search-Dict/t/Dict.t b/dist/Search-Dict/t/Dict.t
index f147623..d3d7cdb 100644
--- a/dist/Search-Dict/t/Dict.t
+++ b/dist/Search-Dict/t/Dict.t
@@ -2,7 +2,7 @@
 
 use strict;
 use Test::More;
-plan tests => 11;
+plan tests => 14;
 
 my $DICT = <<EOT;
 Aarhus
@@ -35,6 +35,7 @@ abating
 Abba
 EOT
 
+use Tie::StdHandle;
 use Search::Dict;
 
 open(DICT, "+>dict-$$") or die "Can't create dict-$$: $!";
@@ -80,6 +81,24 @@ cmp_ok $pos, ">=", 0;
 is $word, "Aarhus";
 
 close DICT or die "cannot close";
+
+{
+  local $^W = 1; # turn on global warnings for stat() in Search::Dict
+
+  my $warn = '';
+  local $SIG{__WARN__} = sub { $warn = join("\n",@_) };
+
+  tie *DICT, 'Tie::StdHandle', "<", "dict-$$";
+
+  $pos = look *DICT, "aarhus", 1, 1;
+  is( $warn, '', "no warning seen" );
+
+  chomp($word = <DICT>);
+
+  cmp_ok $pos, ">=", 0;
+  is $word, "Aarhus";
+
+}
 unlink "dict-$$";
 
 {

--
Perl5 Master Repository

Reply via email to