El Módulo

El módulo System::Commands proporciona una interfaz funcional a los comandos del sistema operativo:

lhp@nereida:~/Lperl/src/systemcommand$ cat -n lib/System/Commands.pm
 1  package System::Commands;
 2  use warnings;
 3  use strict;
 4  use File::Which qw(which);
 5  use List::Util qw{first};
 6
 7  my @ALLOWED;
 8
 9  our $AUTOLOAD;
10  sub AUTOLOAD {
11    $AUTOLOAD =~ m{.*::(\w+)$};
12    my $command = $1;
13
14    die "Error! sub $AUTOLOAD does not exists!\n" unless first { $command eq $_ } @ALLOWED;
15    no strict 'refs';
16    *{$AUTOLOAD} = sub {
17      return `$command @_`;
18    };
19
20    goto &{$AUTOLOAD};
21
22  }
23
24  sub import {
25    my $mypackage = shift;
26    push @ALLOWED, @_;
27
28    my ($caller_package) = caller;
29    {
30      no strict 'refs';
31      for my $command (@_) {
32        # Comprobar si existe el comando
33        die "Error! '$command' command does not exists!\n" unless which($command);
34        *{$caller_package."::".$command} = \&{$command};
35      }
36    }
37  }
38
39  1;

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19