]> git.vpit.fr Git - perl/modules/subs-auto.git/commitdiff
Refactor the package name validation in a proper sub
authorVincent Pit <vince@profvince.com>
Thu, 28 Aug 2008 12:45:57 +0000 (14:45 +0200)
committerVincent Pit <vince@profvince.com>
Thu, 28 Aug 2008 12:45:57 +0000 (14:45 +0200)
lib/subs/auto.pm

index 6c4bf274c10334ae9f6e8ff9c252656fe2e5f82b..c0beebe8d10dab298246591a33d1d34d9f846381 100644 (file)
@@ -146,25 +146,27 @@ my $wiz = wizard data  => sub { +{ pkg => $_[1] } },
 
 my %pkgs;
 
+sub _validate_pkg {
+ my ($pkg, $cur) = @_;
+ return $cur unless $pkg;
+ croak 'Invalid package name' if ref $pkg
+                              or $pkg =~ /(?:-|[^\w:])/
+                              or $pkg =~ /(?:\A\d|\b:(?::\d|(?:::+)?\b))/;
+ $pkg =~ s/::$//;
+ $pkg = $cur . $pkg if $pkg eq '' or $pkg =~ /^::/;
+ $pkg;
+}
+
 sub import {
  shift;
  croak 'Optional arguments must be passed as keys/values pairs' if @_ % 2;
  my %args = @_;
- my $cur = (caller 1)[0];
- my $pkg;
- if ($pkg = $args{in}) {
-  croak 'Invalid package name' if ref $pkg
-                               or $pkg =~ /(?:-|[^\w:])/
-                               or $pkg =~ /(?:\A\d|\b:(?::\d|(?:::+)?\b))/;
-  $pkg =~ s/::$//;
-  $pkg = $cur . $pkg if $pkg eq '' or $pkg =~ /^::/;
- } else {
-  $pkg = $cur;
- }
+ my $cur  = (caller 1)[0];
+ my $in   = _validate_pkg $args{in}, $cur;
  $^H{bareword} = 1;
- ++$pkgs{$pkg};
+ ++$pkgs{$in};
  no strict 'refs';
- cast %{$pkg . '::'}, $wiz, $pkg;
+ cast %{$in . '::'}, $wiz, $in;
 }
 
 sub unimport {