--- nfo/perl/libs/libp.pm 2002/10/27 18:34:28 1.5 +++ nfo/perl/libs/libp.pm 2002/11/17 07:18:59 1.6 @@ -1,8 +1,11 @@ ################################# # -# $Id: libp.pm,v 1.5 2002/10/27 18:34:28 joko Exp $ +# $Id: libp.pm,v 1.6 2002/11/17 07:18:59 joko Exp $ # # $Log: libp.pm,v $ +# Revision 1.6 2002/11/17 07:18:59 joko +# + sub deep_copy +# # Revision 1.5 2002/10/27 18:34:28 joko # + sub now # @@ -35,6 +38,7 @@ array_getDifference getDirList now + deep_copy ); use strict; @@ -212,4 +216,17 @@ return strftime("%Y-%m-%d %H:%M:%S", localtime); } +sub deep_copy { + my $this = shift; + if (not ref $this) { + $this; + } elsif (ref $this eq "ARRAY") { + [map deep_copy($_), @$this]; + } elsif (ref $this eq "HASH") { + +{map { $_ => deep_copy($this->{$_}) } keys %$this}; + } elsif (ref $this eq "CODE") { + $this; + } else { die "what type is $_?" } +} + 1;