git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Eliminate Scalar::Util usage from private-Error.pm

From
Petr Baudis <pasky@suse.cz>
Date
Jul 26, 2006, 01:03 UTC
Message-ID
<20060726010358.20964.80443.stgit@machine>
In-Reply-To
<Pine.LNX.4.63.0607251809340.29667@wbgn013.biozentrum.uni-wuerzburg.de>

We used just the blessed() routine so steal it from Scalar/Util.pm. ;-) (Unfortunately, Scalar::Util is not bundled with older Perl versions.)

This is a newer much saner blessed() version by Randal L. Schwarz.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
 perl/private-Error.pm |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/perl/private-Error.pm b/perl/private-Error.pm
index ebd0749..8fff866 100644
--- a/perl/private-Error.pm
+++ b/perl/private-Error.pm
@@ -43,8 +43,6 @@ sub throw_Error_Simple
 
 # Exported subs are defined in Error::subs
 
-use Scalar::Util ();
-
 sub import {
     shift;
     local $Exporter::ExportLevel = $Exporter::ExportLevel + 1;
@@ -290,6 +288,14 @@ use vars qw(@EXPORT_OK @ISA %EXPORT_TAGS
 
 @ISA = qw(Exporter);
 
+
+sub blessed {
+	my $item = shift;
+	local $@; # don't kill an outer $@
+	ref $item and eval { $item->can('can') };
+}
+
+
 sub run_clauses ($$$\@) {
     my($clauses,$err,$wantarray,$result) = @_;
     my $code = undef;
@@ -312,7 +318,7 @@ sub run_clauses ($$$\@) {
 		    $i -= 2;
 		    next CATCHLOOP;
 		}
-		elsif(Scalar::Util::blessed($err) && $err->isa($pkg)) {
+		elsif(blessed($err) && $err->isa($pkg)) {
 		    $code = $catch->[$i+1];
 		    while(1) {
 			my $more = 0;
@@ -421,7 +427,7 @@ sub try (&;$) {
 
     if (defined($err))
     {
-        if (Scalar::Util::blessed($err) && $err->can('throw'))
+        if (blessed($err) && $err->can('throw'))
         {
             throw $err;
         }
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 6 of 21 in “cvsserver: avoid warning about active db handles”
  1. cvsserver: avoid warning about active db handlesJohannes Schindelin, Jul 25, 2006
  2. Martin Langhoff (CatalystIT)Jul 25, 2006
  3. Johannes SchindelinJul 25, 2006
  4. Petr BaudisJul 25, 2006
  5. Git.xs problem, was Re: [PATCH] cvsserver: avoid warning about active db handlesJohannes Schindelin, Jul 25, 2006
  6. Eliminate Scalar::Util usage from private-Error.pmPetr Baudis, Jul 26, 2006
  7. Johannes SchindelinJul 26, 2006
  8. Johannes SchindelinJul 26, 2006
  9. Petr BaudisJul 26, 2006
  10. Johannes SchindelinJul 26, 2006
  11. Petr BaudisJul 26, 2006
  12. Johannes SchindelinJul 26, 2006
  13. Jakub NarebskiJul 26, 2006
  14. Johannes SchindelinJul 26, 2006
  15. Luben TuikovJul 26, 2006
  16. Randal L. SchwartzJul 27, 2006
  17. Johannes SchindelinJul 27, 2006
  18. Randal L. SchwartzJul 27, 2006
  19. Johannes SchindelinJul 27, 2006
  20. Petr BaudisJul 26, 2006
  21. Petr BaudisJul 26, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.