Filename | /usr/share/perl/5.10/FileHandle.pm |
Statements | Executed 84 statements in 741µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
2 | 2 | 2 | 62µs | 3.73ms | import | FileHandle::
1 | 1 | 1 | 25µs | 25µs | BEGIN@3 | FileHandle::
1 | 1 | 1 | 17µs | 30µs | BEGIN@46 | FileHandle::
1 | 1 | 1 | 9µs | 13µs | BEGIN@4 | FileHandle::
0 | 0 | 0 | 0s | 0s | pipe | FileHandle::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package FileHandle; | ||||
2 | |||||
3 | 3 | 41µs | 1 | 25µs | # spent 25µs within FileHandle::BEGIN@3 which was called:
# once (25µs+0s) by Storable::BEGIN@23 at line 3 # spent 25µs making 1 call to FileHandle::BEGIN@3 |
4 | 3 | 133µs | 2 | 17µs | # spent 13µs (9+4) within FileHandle::BEGIN@4 which was called:
# once (9µs+4µs) by Storable::BEGIN@23 at line 4 # spent 13µs making 1 call to FileHandle::BEGIN@4
# spent 4µs making 1 call to strict::import |
5 | 1 | 800ns | our($VERSION, @ISA, @EXPORT, @EXPORT_OK); | ||
6 | |||||
7 | 1 | 700ns | $VERSION = "2.02"; | ||
8 | |||||
9 | 1 | 87µs | require IO::File; | ||
10 | 1 | 14µs | @ISA = qw(IO::File); | ||
11 | |||||
12 | 1 | 3µs | @EXPORT = qw(_IOFBF _IOLBF _IONBF); | ||
13 | |||||
14 | 1 | 7µs | @EXPORT_OK = qw( | ||
15 | pipe | ||||
16 | |||||
17 | autoflush | ||||
18 | output_field_separator | ||||
19 | output_record_separator | ||||
20 | input_record_separator | ||||
21 | input_line_number | ||||
22 | format_page_number | ||||
23 | format_lines_per_page | ||||
24 | format_lines_left | ||||
25 | format_name | ||||
26 | format_top_name | ||||
27 | format_line_break_characters | ||||
28 | format_formfeed | ||||
29 | |||||
30 | |||||
31 | printf | ||||
32 | getline | ||||
33 | getlines | ||||
34 | ); | ||||
35 | |||||
36 | # | ||||
37 | # Everything we're willing to export, we must first import. | ||||
38 | # | ||||
39 | 1 | 24µs | 1 | 194µs | import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK; # spent 194µs making 1 call to Exporter::import |
40 | |||||
41 | # | ||||
42 | # Some people call "FileHandle::function", so all the functions | ||||
43 | # that were in the old FileHandle class must be imported, too. | ||||
44 | # | ||||
45 | { | ||||
46 | 4 | 253µs | 2 | 43µs | # spent 30µs (17+13) within FileHandle::BEGIN@46 which was called:
# once (17µs+13µs) by Storable::BEGIN@23 at line 46 # spent 30µs making 1 call to FileHandle::BEGIN@46
# spent 13µs making 1 call to strict::unimport |
47 | |||||
48 | 1 | 8µs | my %import = ( | ||
49 | 'IO::Handle' => | ||||
50 | [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets | ||||
51 | eof flush error clearerr setbuf setvbuf _open_mode_string)], | ||||
52 | 'IO::Seekable' => | ||||
53 | [qw(seek tell getpos setpos)], | ||||
54 | 'IO::File' => | ||||
55 | [qw(new new_tmpfile open)] | ||||
56 | ); | ||||
57 | 1 | 7µs | for my $pkg (keys %import) { | ||
58 | 3 | 5µs | for my $func (@{$import{$pkg}}) { | ||
59 | 22 | 31µs | my $c = *{"${pkg}::$func"}{CODE} | ||
60 | or die "${pkg}::$func missing"; | ||||
61 | 22 | 43µs | *$func = $c; | ||
62 | } | ||||
63 | } | ||||
64 | } | ||||
65 | |||||
66 | # | ||||
67 | # Specialized importer for Fcntl magic. | ||||
68 | # | ||||
69 | # spent 3.73ms (62µs+3.67) within FileHandle::import which was called 2 times, avg 1.86ms/call:
# once (44µs+3.15ms) by Storable::BEGIN@23 at line 23 of Storable.pm
# once (18µs+517µs) by MIME::Lite::BEGIN@331 at line 331 of MIME/Lite.pm | ||||
70 | 2 | 3µs | my $pkg = shift; | ||
71 | 2 | 2µs | my $callpkg = caller; | ||
72 | 2 | 2µs | require Exporter; | ||
73 | 2 | 5µs | 2 | 2.19ms | Exporter::export($pkg, $callpkg, @_); # spent 2.19ms making 2 calls to Exporter::export, avg 1.10ms/call |
74 | |||||
75 | # | ||||
76 | # If the Fcntl extension is available, | ||||
77 | # export its constants. | ||||
78 | # | ||||
79 | 2 | 14µs | eval { | ||
80 | 2 | 2µs | require Fcntl; | ||
81 | 2 | 7µs | 2 | 40µs | Exporter::export('Fcntl', $callpkg); # spent 40µs making 2 calls to Exporter::export, avg 20µs/call |
82 | }; | ||||
83 | } | ||||
84 | |||||
85 | ################################################ | ||||
86 | # This is the only exported function we define; | ||||
87 | # the rest come from other classes. | ||||
88 | # | ||||
89 | |||||
90 | sub pipe { | ||||
91 | my $r = new IO::Handle; | ||||
92 | my $w = new IO::Handle; | ||||
93 | CORE::pipe($r, $w) or return undef; | ||||
94 | ($r, $w); | ||||
95 | } | ||||
96 | |||||
97 | # Rebless standard file handles | ||||
98 | 1 | 14µs | bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle"; | ||
99 | 1 | 4µs | bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle"; | ||
100 | 1 | 7µs | bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle"; | ||
101 | |||||
102 | 1 | 26µs | 1; | ||
103 | |||||
104 | __END__ |