summaryrefslogtreecommitdiffstats
path: root/MDK
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2001-07-24 22:58:36 +0000
committerPascal Rigaux <pixel@mandriva.com>2001-07-24 22:58:36 +0000
commit72e28b71c097e4f2b17b031416790090cefb8263 (patch)
tree7d76b1106d53506122086b57a1cfda99af714fa0 /MDK
parent5bef71a0c86613f95e154d08b5f8f0cc23226e27 (diff)
downloadperl-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.pm19
-rw-r--r--MDK/Common/DataStructure.pm9
-rw-r--r--MDK/Common/Func.pm18
-rw-r--r--MDK/Common/Globals.pm61
-rw-r--r--MDK/Common/System.pm4
-rw-r--r--MDK/Common/Various.pm4
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" }