Re: [PATCH 5.6.1] OS2::DLL
Ilya Zakharevich [Mon, 25 Jun 2001 05:04:32 +0000 (01:04 -0400)]
Message-ID: <20010625050432.A24128@math.ohio-state.edu>

p4raw-id: //depot/perl@10918

os2/OS2/REXX/DLL/DLL.pm

index 7e54371..b1503a6 100644 (file)
@@ -22,6 +22,17 @@ sub AUTOLOAD {
 
 # Cannot autoload, the autoloader is used for the REXX functions.
 
+sub new {
+  confess 'Usage: OS2::DLL->new( <file> [<dirs>] )' unless @_ >= 2;
+  my ($class, $file) = (shift, shift);
+  my $handle;
+  $handle = $class->load($file, @_) and return $handle;
+  my $path = @_ ? " from '@_'" : '';
+  my $err = DynaLoader::dl_error();
+  $err =~ s/\s+at\s+\S+\s+line\s+\S+\s*\z//;
+  croak "Can't load '$file'$path: $err";
+}
+
 sub load
 {
        confess 'Usage: load OS2::DLL <file> [<dirs>]' unless $#_ >= 1;
@@ -108,7 +119,15 @@ is performed in default DLL path (without adding paths and extensions).
 
 The DLL is not unloaded when the variable dies.
 
-Returns DLL object reference, or undef on failure.
+Returns DLL object reference, or undef on failure (in this case one can
+get the reason via C<DynaLoader::dl_error()>).
+
+=head2 Create a REXX DLL handle
+
+       $dll = OS2::DLL->new( NAME [, WHERE] );
+
+Same as L<C<load>|Load REXX DLL>, but croaks with a meaningful message on
+failure.
 
 =head2 Check for functions (optional):