diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2001-07-24 22:58:36 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2001-07-24 22:58:36 +0000 |
commit | 72e28b71c097e4f2b17b031416790090cefb8263 (patch) | |
tree | 7d76b1106d53506122086b57a1cfda99af714fa0 /MDK | |
parent | 5bef71a0c86613f95e154d08b5f8f0cc23226e27 (diff) | |
download | perl-MDK-Common-72e28b71c097e4f2b17b031416790090cefb8263.tar perl-MDK-Common-72e28b71c097e4f2b17b031416790090cefb8263.tar.gz perl-MDK-Common-72e28b71c097e4f2b17b031416790090cefb8263.tar.bz2 perl-MDK-Common-72e28b71c097e4f2b17b031416790090cefb8263.tar.xz perl-MDK-Common-72e28b71c097e4f2b17b031416790090cefb8263.zip |
everything should work now
Diffstat (limited to 'MDK')
-rw-r--r-- | MDK/Common.pm | 19 | ||||
-rw-r--r-- | MDK/Common/DataStructure.pm | 9 | ||||
-rw-r--r-- | MDK/Common/Func.pm | 18 | ||||
-rw-r--r-- | MDK/Common/Globals.pm | 61 | ||||
-rw-r--r-- | MDK/Common/System.pm | 4 | ||||
-rw-r--r-- | MDK/Common/Various.pm | 4 |
6 files changed, 101 insertions, 14 deletions
diff --git a/MDK/Common.pm b/MDK/Common.pm index 4cccc21..dbc161c 100644 --- a/MDK/Common.pm +++ b/MDK/Common.pm @@ -1,12 +1,17 @@ package MDK::Common; -use MDK::Common::DataStructure ':all'; -use MDK::Common::File ':all'; -use MDK::Common::Func ':all'; -use MDK::Common::Math ':all'; -use MDK::Common::String ':all'; -use MDK::Common::System ':all'; -use MDK::Common::Various ':all'; +use MDK::Common::DataStructure qw(:all); +use MDK::Common::File qw(:all); +use MDK::Common::Func qw(:all); +use MDK::Common::Math qw(:all); +use MDK::Common::String qw(:all); +use MDK::Common::System qw(:all); +use MDK::Common::Various qw(:all); + +use vars qw(@ISA @EXPORT $VERSION); #); +@ISA = qw(Exporter); +# perl_checker: RE-EXPORT-ALL +@EXPORT = map { @$_ } map { values %{'MDK::Common::' . $_ . 'EXPORT_TAGS'} } grep { /::$/ } keys %MDK::Common::; $VERSION = "1.0"; diff --git a/MDK/Common/DataStructure.pm b/MDK/Common/DataStructure.pm index 8619e03..afc4ae1 100644 --- a/MDK/Common/DataStructure.pm +++ b/MDK/Common/DataStructure.pm @@ -1,6 +1,7 @@ package MDK::Common::DataStructure; use MDK::Common::Math; +use MDK::Common::Func; use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK); @@ -35,8 +36,12 @@ sub next_val_in_array { sub list2kv { - [ grep_index { MDK::Common::Math::even($::i) } @_ ], - [ grep_index { MDK::Common::Math::odd($::i) } @_ ]; + my (@k, @v); + for (my $i = 0; $i < @_; $i += 2) { + push @k, $_[$i + 0]; + push @v, $_[$i + 1]; + } + \@k, \@v; } 1; diff --git a/MDK/Common/Func.pm b/MDK/Common/Func.pm index 55277c9..1b30a7e 100644 --- a/MDK/Common/Func.pm +++ b/MDK/Common/Func.pm @@ -5,10 +5,26 @@ use MDK::Common::Math; use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK); @ISA = qw(Exporter); -@EXPORT_OK = qw(fold_left mapn mapn_ map_index grep_index find_index map_each grep_each before_leaving catch_cdie cdie); +@EXPORT_OK = qw(may_apply if_ if__ fold_left mapn mapn_ map_index grep_index find_index map_each grep_each before_leaving catch_cdie cdie); %EXPORT_TAGS = (all => [ @EXPORT_OK ]); +sub may_apply { $_[0] ? $_[0]->($_[1]) : (@_ > 2 ? $_[2] : $_[1]) } + +# prototype is needed for things like: if_(/foo/, bar => 'boo') +sub if_($@) { + my $b = shift; + $b or return (); + wantarray || @_ <= 1 or die("if_ called in scalar context with more than one argument " . join(":", caller())); + wantarray ? @_ : $_[0]; +} +sub if__($@) { + my $b = shift; + defined $b or return (); + wantarray || @_ <= 1 or die("if_ called in scalar context with more than one argument " . join(":", caller())); + wantarray ? @_ : $_[0]; +} + sub fold_left(&@) { my ($f, $initial, @l) = @_; local ($::a, $::b); diff --git a/MDK/Common/Globals.pm b/MDK/Common/Globals.pm new file mode 100644 index 0000000..32a4fc1 --- /dev/null +++ b/MDK/Common/Globals.pm @@ -0,0 +1,61 @@ +=head1 NAME + +Shares constant values between modules + +=head1 SYNOPSIS + +use MDK::Common::Globals "foo", qw($a $b); + +MDK::Common::Globals::init(a => 2, b => 3); + +print $a; # 2 + +=cut + + +package MDK::Common::Globals; + +sub import { + my (undef, $name, @globals) = @_; + foreach (@globals) { + $name =~ /^\$/ and die q(usage : use MDK::Common::Globals "group", qw($var1 $var2 ...);); + s/^\$// or die qq(bad parameter to "use MDK::Common::Globals": missing variable ``$_'' should be written ``\$$_''); #); + + no strict 'refs'; + my $v = caller() . '::' . $_; + my $lv = "$foo __ $_"; + *$v = *$lv; + eval { undef = $$lv; tie $$lv, 'MDK::Common::Globals', $_ }; + } +} + +sub init { + @_ % 2 == 0 or die "usage MDK::Common::Globals::init(key => val, key2 => val2, ...)\n"; + my %l = @_; + foreach (keys %l) { + my $v = caller() . '::' . $_; + no strict 'refs'; + $$v = $l{$_}; + } +} + +sub TIESCALAR { + my ($class, $name) = @_; + my $var; + bless [$var, undef, $name], $class; +} + +sub STORE { + my ($o, $val) = @_; + $o->[1] and die "MDK::Common::Globals::$o->[2] already set\n"; + $o->[1] = 1; + $o->[0] = $val; +} + +sub FETCH { + my ($o) = @_; + $o->[1] or die "MDK::Common::Globals::$o->[2] unset\n"; + $o->[0]; +} + +1; diff --git a/MDK/Common/System.pm b/MDK/Common/System.pm index c8c4535..d383a1f 100644 --- a/MDK/Common/System.pm +++ b/MDK/Common/System.pm @@ -6,7 +6,7 @@ use MDK::Common::File; use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK %compat_arch $printable_chars $sizeof_int $bitof_int); #); @ISA = qw(Exporter); -@EXPORT_OK = qw(%compat_arch $printable_chars $sizeof_int $bitof_int typeFromMagic list_passwd list_home list_skels syscall_ df sync psizeof availableMemory availableRamMB gettimeofday unix2dos getVarsFromSh setVarsInSh setVarsInShMode setVarsInCsh template2file template2userfile update_userkderc); #); +@EXPORT_OK = qw(%compat_arch $printable_chars $sizeof_int $bitof_int typeFromMagic list_passwd list_home list_skels syscall_ psizeof availableMemory availableRamMB gettimeofday unix2dos getVarsFromSh setVarsInSh setVarsInShMode setVarsInCsh template2file template2userfile update_userkderc); #); %EXPORT_TAGS = (all => [ @EXPORT_OK ]); @@ -74,7 +74,7 @@ sub syscall_ { my $f = shift; require 'syscall.ph'; - syscall(&{$common::{"SYS_$f"}}, @_) == 0; + syscall(&{"SYS_$f"}, @_) == 0; } diff --git a/MDK/Common/Various.pm b/MDK/Common/Various.pm index b012343..93fbb80 100644 --- a/MDK/Common/Various.pm +++ b/MDK/Common/Various.pm @@ -2,7 +2,7 @@ package MDK::Common::Various; use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK); @ISA = qw(Exporter); -@EXPORT_OK = qw(first second top bool to_int to_float bool2text bool2yesno text2bool chomp_ backtrace); +@EXPORT_OK = qw(first second top to_bool to_int to_float bool2text bool2yesno text2bool chomp_ backtrace); %EXPORT_TAGS = (all => [ @EXPORT_OK ]); @@ -10,7 +10,7 @@ sub first { $_[0] } sub second { $_[1] } sub top { $_[-1] } -sub bool { $_[0] ? 1 : 0 } +sub to_bool { $_[0] ? 1 : 0 } sub to_int { $_[0] =~ /(\d*)/; $1 } sub to_float { $_[0] =~ /(\d*(\.\d*)?)/; $1 } sub bool2text { $_[0] ? "true" : "false" } |