File | /project/perl/lib/Clone.pm |
Statements Executed | 18 |
Statement Execution Time | 492µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
5 | 1 | 2 | 833µs | 833µs | clone (xsub) | Clone::
1 | 1 | 2 | 29µs | 29µs | bootstrap (xsub) | Clone::
0 | 0 | 0 | 0s | 0s | BEGIN | Clone::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | # $Id: Clone.pm,v 0.31 2009/01/20 04:54:37 ray Exp $ | ||||
2 | package Clone; | ||||
3 | |||||
4 | 3 | 89µs | 1 | 25µs | use strict; # spent 25µs making 1 call to strict::import |
5 | 3 | 102µs | 1 | 242µs | use Carp; # spent 242µs making 1 call to Exporter::import |
6 | 3 | 196µs | 1 | 421µs | use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); # spent 421µs making 1 call to vars::import |
7 | |||||
8 | 1 | 7µs | require Exporter; | ||
9 | 1 | 5µs | require DynaLoader; | ||
10 | 1 | 5µs | require AutoLoader; | ||
11 | |||||
12 | 1 | 11µs | @ISA = qw(Exporter DynaLoader); | ||
13 | # Items to export into callers namespace by default. Note: do not export | ||||
14 | # names by default without a very good reason. Use EXPORT_OK instead. | ||||
15 | # Do not simply export all your public functions/methods/constants. | ||||
16 | 1 | 5µs | @EXPORT = qw(); | ||
17 | 1 | 7µs | @EXPORT_OK = qw( clone ); | ||
18 | |||||
19 | 1 | 5µs | $VERSION = '0.31'; | ||
20 | |||||
21 | 1 | 35µs | 1 | 10.6ms | bootstrap Clone $VERSION; # spent 10.6ms making 1 call to DynaLoader::bootstrap |
22 | |||||
23 | # Preloaded methods go here. | ||||
24 | |||||
25 | # Autoload methods go after =cut, and are processed by the autosplit program. | ||||
26 | |||||
27 | 1 | 25µs | 1; | ||
28 | __END__ | ||||
29 | |||||
30 | =head1 NAME | ||||
31 | |||||
32 | Clone - recursively copy Perl datatypes | ||||
33 | |||||
34 | =head1 SYNOPSIS | ||||
35 | |||||
36 | use Clone; | ||||
37 | |||||
38 | push @Foo::ISA, 'Clone'; | ||||
39 | |||||
40 | $a = new Foo; | ||||
41 | $b = $a->clone(); | ||||
42 | |||||
43 | # or | ||||
44 | |||||
45 | use Clone qw(clone); | ||||
46 | |||||
47 | $a = { 'foo' => 'bar', 'move' => 'zig' }; | ||||
48 | $b = [ 'alpha', 'beta', 'gamma', 'vlissides' ]; | ||||
49 | $c = new Foo(); | ||||
50 | |||||
51 | $d = clone($a); | ||||
52 | $e = clone($b); | ||||
53 | $f = clone($c); | ||||
54 | |||||
55 | =head1 DESCRIPTION | ||||
56 | |||||
57 | This module provides a clone() method which makes recursive | ||||
58 | copies of nested hash, array, scalar and reference types, | ||||
59 | including tied variables and objects. | ||||
60 | |||||
61 | |||||
62 | clone() takes a scalar argument and an optional parameter that | ||||
63 | can be used to limit the depth of the copy. To duplicate lists, | ||||
64 | arrays or hashes, pass them in by reference. e.g. | ||||
65 | |||||
66 | my $copy = clone (\@array); | ||||
67 | |||||
68 | # or | ||||
69 | |||||
70 | my %copy = %{ clone (\%hash) }; | ||||
71 | |||||
72 | |||||
73 | For a slower, but more flexible solution see Storable's dclone(). | ||||
74 | |||||
75 | =head1 AUTHOR | ||||
76 | |||||
77 | Ray Finch, rdf@cpan.org | ||||
78 | |||||
79 | Copyright 2001 Ray Finch. | ||||
80 | |||||
81 | This module is free software; you can redistribute it and/or | ||||
82 | modify it under the same terms as Perl itself. | ||||
83 | |||||
84 | =head1 SEE ALSO | ||||
85 | |||||
86 | Storable(3). | ||||
87 | |||||
88 | =cut | ||||
# spent 29µs within Clone::bootstrap which was called
# once (29µs+0s) by DynaLoader::bootstrap at line 253 of DynaLoader.pm | |||||
# spent 833µs within Clone::clone which was called 5 times, avg 167µs/call:
# 5 times (833µs+0s) by Class::DBI::_extend_meta at line 1040 of Class/DBI.pm, avg 167µs/call |