← Index
NYTProf Performance Profile   « line view »
For ../dm5dm6_ex3
  Run on Mon Feb 23 08:36:56 2015
Reported on Mon Feb 23 08:37:02 2015

Filename/usr/lib/perl5/5.20.1/x86_64-linux-thread-multi/IO/File.pm
StatementsExecuted 33 statements in 730µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1111.87ms2.03msIO::File::::BEGIN@130IO::File::BEGIN@130
111463µs494µsIO::File::::BEGIN@131IO::File::BEGIN@131
111237µs2.47msIO::File::::BEGIN@133IO::File::BEGIN@133
111148µs192µsIO::File::::BEGIN@132IO::File::BEGIN@132
11115µs27µsIO::File::::newIO::File::new
11111µs11µsIO::File::::BEGIN@127IO::File::BEGIN@127
11110µs16µsIO::File::::openIO::File::open
1117µs7µsIO::File::::CORE:openIO::File::CORE:open (opcode)
68114µs4µsIO::File::::CORE:matchIO::File::CORE:match (opcode)
1113µs10µsIO::File::::BEGIN@128IO::File::BEGIN@128
0000s0sIO::File::::binmodeIO::File::binmode
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1#
2
3package IO::File;
4
5=head1 NAME
6
7IO::File - supply object methods for filehandles
8
9=head1 SYNOPSIS
10
11 use IO::File;
12
13 $fh = IO::File->new();
14 if ($fh->open("< file")) {
15 print <$fh>;
16 $fh->close;
17 }
18
19 $fh = IO::File->new("> file");
20 if (defined $fh) {
21 print $fh "bar\n";
22 $fh->close;
23 }
24
25 $fh = IO::File->new("file", "r");
26 if (defined $fh) {
27 print <$fh>;
28 undef $fh; # automatically closes the file
29 }
30
31 $fh = IO::File->new("file", O_WRONLY|O_APPEND);
32 if (defined $fh) {
33 print $fh "corge\n";
34
35 $pos = $fh->getpos;
36 $fh->setpos($pos);
37
38 undef $fh; # automatically closes the file
39 }
40
41 autoflush STDOUT 1;
42
43=head1 DESCRIPTION
44
45C<IO::File> inherits from C<IO::Handle> and C<IO::Seekable>. It extends
46these classes with methods that are specific to file handles.
47
48=head1 CONSTRUCTOR
49
50=over 4
51
52=item new ( FILENAME [,MODE [,PERMS]] )
53
54Creates an C<IO::File>. If it receives any parameters, they are passed to
55the method C<open>; if the open fails, the object is destroyed. Otherwise,
56it is returned to the caller.
57
58=item new_tmpfile
59
60Creates an C<IO::File> opened for read/write on a newly created temporary
61file. On systems where this is possible, the temporary file is anonymous
62(i.e. it is unlinked after creation, but held open). If the temporary
63file cannot be created or opened, the C<IO::File> object is destroyed.
64Otherwise, it is returned to the caller.
65
66=back
67
68=head1 METHODS
69
70=over 4
71
72=item open( FILENAME [,MODE [,PERMS]] )
73
74=item open( FILENAME, IOLAYERS )
75
76C<open> accepts one, two or three parameters. With one parameter,
77it is just a front end for the built-in C<open> function. With two or three
78parameters, the first parameter is a filename that may include
79whitespace or other special characters, and the second parameter is
80the open mode, optionally followed by a file permission value.
81
82If C<IO::File::open> receives a Perl mode string ("E<gt>", "+E<lt>", etc.)
83or an ANSI C fopen() mode string ("w", "r+", etc.), it uses the basic
84Perl C<open> operator (but protects any special characters).
85
86If C<IO::File::open> is given a numeric mode, it passes that mode
87and the optional permissions value to the Perl C<sysopen> operator.
88The permissions default to 0666.
89
90If C<IO::File::open> is given a mode that includes the C<:> character,
91it passes all the three arguments to the three-argument C<open> operator.
92
93For convenience, C<IO::File> exports the O_XXX constants from the
94Fcntl module, if this module is available.
95
96=item binmode( [LAYER] )
97
98C<binmode> sets C<binmode> on the underlying C<IO> object, as documented
99in C<perldoc -f binmode>.
100
101C<binmode> accepts one optional parameter, which is the layer to be
102passed on to the C<binmode> call.
103
104=back
105
106=head1 NOTE
107
108Some operating systems may perform C<IO::File::new()> or C<IO::File::open()>
109on a directory without errors. This behavior is not portable and not
110suggested for use. Using C<opendir()> and C<readdir()> or C<IO::Dir> are
111suggested instead.
112
113=head1 SEE ALSO
114
115L<perlfunc>,
116L<perlop/"I/O Operators">,
117L<IO::Handle>,
118L<IO::Seekable>,
119L<IO::Dir>
120
121=head1 HISTORY
122
123Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>.
124
125=cut
126
127226µs111µs
# spent 11µs within IO::File::BEGIN@127 which was called: # once (11µs+0s) by Date::Manip::Obj::BEGIN@12 at line 127
use 5.006_001;
# spent 11µs making 1 call to IO::File::BEGIN@127
128224µs218µs
# spent 10µs (3+7) within IO::File::BEGIN@128 which was called: # once (3µs+7µs) by Date::Manip::Obj::BEGIN@12 at line 128
use strict;
# spent 10µs making 1 call to IO::File::BEGIN@128 # spent 7µs making 1 call to strict::import
1291300nsour($VERSION, @EXPORT, @EXPORT_OK, @ISA);
130277µs22.06ms
# spent 2.03ms (1.87+154µs) within IO::File::BEGIN@130 which was called: # once (1.87ms+154µs) by Date::Manip::Obj::BEGIN@12 at line 130
use Carp;
# spent 2.03ms making 1 call to IO::File::BEGIN@130 # spent 32µs making 1 call to Exporter::import
1312142µs2516µs
# spent 494µs (463+31) within IO::File::BEGIN@131 which was called: # once (463µs+31µs) by Date::Manip::Obj::BEGIN@12 at line 131
use Symbol;
# spent 494µs making 1 call to IO::File::BEGIN@131 # spent 23µs making 1 call to Exporter::import
132290µs1192µs
# spent 192µs (148+44) within IO::File::BEGIN@132 which was called: # once (148µs+44µs) by Date::Manip::Obj::BEGIN@12 at line 132
use SelectSaver;
# spent 192µs making 1 call to IO::File::BEGIN@132
1332278µs22.48ms
# spent 2.47ms (237µs+2.23) within IO::File::BEGIN@133 which was called: # once (237µs+2.23ms) by Date::Manip::Obj::BEGIN@12 at line 133
use IO::Seekable;
# spent 2.47ms making 1 call to IO::File::BEGIN@133 # spent 17µs making 1 call to Exporter::import
134
1351400nsrequire Exporter;
136
13716µs@ISA = qw(IO::Handle IO::Seekable Exporter);
138
1391100ns$VERSION = "1.16";
140
1411500ns@EXPORT = @IO::Seekable::EXPORT;
142
1431300nseval {
144 # Make all Fcntl O_XXX constants available for importing
1451100ns require Fcntl;
146150µs684µs my @O = grep /^O_/, @Fcntl::EXPORT;
# spent 4µs making 68 calls to IO::File::CORE:match, avg 65ns/call
14712µs167µs Fcntl->import(@O); # first we import what we want to export
# spent 67µs making 1 call to Exporter::import
14813µs push(@EXPORT, @O);
149};
150
151################################################
152## Constructor
153##
154
155
# spent 27µs (15+12) within IO::File::new which was called: # once (15µs+12µs) by Date::Manip::TZ::_get_curr_zone at line 470 of Date/Manip/TZ.pm
sub new {
1561300ns my $type = shift;
1571600ns my $class = ref($type) || $type || "IO::File";
15812µs @_ >= 0 && @_ <= 3
159 or croak "usage: $class->new([FILENAME [,MODE [,PERMS]]])";
16014µs112µs my $fh = $class->SUPER::new();
# spent 12µs making 1 call to IO::Handle::new
1611400ns if (@_) {
162 $fh->open(@_)
163 or return undef;
164 }
16512µs $fh;
166}
167
168################################################
169## Open
170##
171
172
# spent 16µs (10+7) within IO::File::open which was called: # once (10µs+7µs) by Date::Manip::TZ::_get_curr_zone at line 471 of Date/Manip/TZ.pm
sub open {
17311µs @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])';
1741500ns my ($fh, $file) = @_;
1751400ns if (@_ > 2) {
176 my ($mode, $perms) = @_[2, 3];
177 if ($mode =~ /^\d+$/) {
178 defined $perms or $perms = 0666;
179 return sysopen($fh, $file, $mode, $perms);
180 } elsif ($mode =~ /:/) {
181 return open($fh, $mode, $file) if @_ == 3;
182 croak 'usage: $fh->open(FILENAME, IOLAYERS)';
183 } else {
184 return open($fh, IO::Handle::_open_mode_string($mode), $file);
185 }
186 }
187115µs17µs open($fh, $file);
# spent 7µs making 1 call to IO::File::CORE:open
188}
189
190################################################
191## Binmode
192##
193
194sub binmode {
195 ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])';
196
197 my($fh, $layer) = @_;
198
199 return binmode $$fh unless $layer;
200 return binmode $$fh, $layer;
201}
202
20314µs1;
 
# spent 4µs within IO::File::CORE:match which was called 68 times, avg 65ns/call: # 68 times (4µs+0s) by Date::Manip::Obj::BEGIN@12 at line 146, avg 65ns/call
sub IO::File::CORE:match; # opcode
# spent 7µs within IO::File::CORE:open which was called: # once (7µs+0s) by IO::File::open at line 187
sub IO::File::CORE:open; # opcode