← Index
NYTProf Performance Profile   « line view »
For t/bug-md-11.t
  Run on Fri Mar 8 13:27:24 2024
Reported on Fri Mar 8 13:30:23 2024

Filename/home/micha/.plenv/versions/5.38.2/lib/perl5/site_perl/5.38.2/Archive/Zip.pm
StatementsExecuted 541 statements in 3.46ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1114.37ms9.88msArchive::Zip::::BEGIN@11Archive::Zip::BEGIN@11
1112.13ms2.30msArchive::Zip::::BEGIN@6Archive::Zip::BEGIN@6
1112.04ms3.83msArchive::Zip::::BEGIN@9Archive::Zip::BEGIN@9
1111.46ms1.64msArchive::Zip::::BEGIN@10Archive::Zip::BEGIN@10
111410µs3.66msArchive::Zip::::BEGIN@7Archive::Zip::BEGIN@7
111363µs458µsArchive::Zip::::BEGIN@12Archive::Zip::BEGIN@12
193272µs152µsArchive::Zip::::_readSignatureArchive::Zip::_readSignature
82241µs343µsArchive::Zip::::_newFileHandleArchive::Zip::_newFileHandle
81129µs35µsArchive::Zip::::_CANArchive::Zip::_CAN
82223µs80µsArchive::Zip::::_binmodeArchive::Zip::_binmode
11116µs52µsArchive::Zip::::BEGIN@37Archive::Zip::BEGIN@37
11113µs27µsArchive::Zip::::BEGIN@289Archive::Zip::BEGIN@289
11110µs10µsArchive::Zip::::BEGIN@3Archive::Zip::BEGIN@3
4419µs12µsArchive::Zip::::_ISAArchive::Zip::_ISA
1118µs20µsArchive::Zip::::_isSeekableArchive::Zip::_isSeekable
1116µs6µsArchive::Zip::::BEGIN@16Archive::Zip::BEGIN@16
1116µs18µsArchive::Zip::::BEGIN@221Archive::Zip::BEGIN@221
1115µs18µsArchive::Zip::::BEGIN@236Archive::Zip::BEGIN@236
1114µs23µsArchive::Zip::::BEGIN@275Archive::Zip::BEGIN@275
1114µs27µsArchive::Zip::::BEGIN@185Archive::Zip::BEGIN@185
1114µs21µsArchive::Zip::::BEGIN@14Archive::Zip::BEGIN@14
1114µs5µsArchive::Zip::::BEGIN@4Archive::Zip::BEGIN@4
1114µs19µsArchive::Zip::::BEGIN@205Archive::Zip::BEGIN@205
1114µs16µsArchive::Zip::::newArchive::Zip::new
1113µs19µsArchive::Zip::::BEGIN@188Archive::Zip::BEGIN@188
1113µs18µsArchive::Zip::::BEGIN@206Archive::Zip::BEGIN@206
1113µs16µsArchive::Zip::::BEGIN@201Archive::Zip::BEGIN@201
1113µs16µsArchive::Zip::::BEGIN@23Archive::Zip::BEGIN@23
1113µs17µsArchive::Zip::::BEGIN@269Archive::Zip::BEGIN@269
1113µs17µsArchive::Zip::::BEGIN@295Archive::Zip::BEGIN@295
1113µs18µsArchive::Zip::::BEGIN@302Archive::Zip::BEGIN@302
1113µs20µsArchive::Zip::::BEGIN@305Archive::Zip::BEGIN@305
1113µs16µsArchive::Zip::::BEGIN@306Archive::Zip::BEGIN@306
1113µs17µsArchive::Zip::::BEGIN@199Archive::Zip::BEGIN@199
1113µs17µsArchive::Zip::::BEGIN@247Archive::Zip::BEGIN@247
1113µs16µsArchive::Zip::::BEGIN@273Archive::Zip::BEGIN@273
1113µs16µsArchive::Zip::::BEGIN@288Archive::Zip::BEGIN@288
1113µs16µsArchive::Zip::::BEGIN@307Archive::Zip::BEGIN@307
1113µs16µsArchive::Zip::::BEGIN@35Archive::Zip::BEGIN@35
1113µs16µsArchive::Zip::::BEGIN@189Archive::Zip::BEGIN@189
1113µs16µsArchive::Zip::::BEGIN@191Archive::Zip::BEGIN@191
1113µs14µsArchive::Zip::::BEGIN@192Archive::Zip::BEGIN@192
1113µs15µsArchive::Zip::::BEGIN@197Archive::Zip::BEGIN@197
1113µs15µsArchive::Zip::::BEGIN@200Archive::Zip::BEGIN@200
1113µs15µsArchive::Zip::::BEGIN@212Archive::Zip::BEGIN@212
1113µs17µsArchive::Zip::::BEGIN@230Archive::Zip::BEGIN@230
1113µs16µsArchive::Zip::::BEGIN@238Archive::Zip::BEGIN@238
1113µs16µsArchive::Zip::::BEGIN@251Archive::Zip::BEGIN@251
1113µs18µsArchive::Zip::::BEGIN@257Archive::Zip::BEGIN@257
1113µs20µsArchive::Zip::::BEGIN@260Archive::Zip::BEGIN@260
1113µs16µsArchive::Zip::::BEGIN@268Archive::Zip::BEGIN@268
1113µs15µsArchive::Zip::::BEGIN@274Archive::Zip::BEGIN@274
1113µs16µsArchive::Zip::::BEGIN@279Archive::Zip::BEGIN@279
1113µs16µsArchive::Zip::::BEGIN@285Archive::Zip::BEGIN@285
1113µs15µsArchive::Zip::::BEGIN@291Archive::Zip::BEGIN@291
1113µs16µsArchive::Zip::::BEGIN@300Archive::Zip::BEGIN@300
1113µs20µsArchive::Zip::::BEGIN@301Archive::Zip::BEGIN@301
1113µs16µsArchive::Zip::::BEGIN@308Archive::Zip::BEGIN@308
1113µs20µsArchive::Zip::::BEGIN@309Archive::Zip::BEGIN@309
1112µs16µsArchive::Zip::::BEGIN@190Archive::Zip::BEGIN@190
1112µs16µsArchive::Zip::::BEGIN@198Archive::Zip::BEGIN@198
1112µs15µsArchive::Zip::::BEGIN@204Archive::Zip::BEGIN@204
1112µs16µsArchive::Zip::::BEGIN@222Archive::Zip::BEGIN@222
1112µs16µsArchive::Zip::::BEGIN@239Archive::Zip::BEGIN@239
1112µs17µsArchive::Zip::::BEGIN@256Archive::Zip::BEGIN@256
1112µs15µsArchive::Zip::::BEGIN@265Archive::Zip::BEGIN@265
1112µs19µsArchive::Zip::::BEGIN@277Archive::Zip::BEGIN@277
1112µs17µsArchive::Zip::::BEGIN@283Archive::Zip::BEGIN@283
1112µs14µsArchive::Zip::::BEGIN@292Archive::Zip::BEGIN@292
1112µs15µsArchive::Zip::::BEGIN@294Archive::Zip::BEGIN@294
1112µs15µsArchive::Zip::::BEGIN@298Archive::Zip::BEGIN@298
1112µs15µsArchive::Zip::::BEGIN@312Archive::Zip::BEGIN@312
1112µs14µsArchive::Zip::::BEGIN@203Archive::Zip::BEGIN@203
1112µs15µsArchive::Zip::::BEGIN@207Archive::Zip::BEGIN@207
1112µs15µsArchive::Zip::::BEGIN@208Archive::Zip::BEGIN@208
1112µs14µsArchive::Zip::::BEGIN@210Archive::Zip::BEGIN@210
1112µs19µsArchive::Zip::::BEGIN@211Archive::Zip::BEGIN@211
1112µs15µsArchive::Zip::::BEGIN@213Archive::Zip::BEGIN@213
1112µs15µsArchive::Zip::::BEGIN@227Archive::Zip::BEGIN@227
1112µs15µsArchive::Zip::::BEGIN@235Archive::Zip::BEGIN@235
1112µs14µsArchive::Zip::::BEGIN@245Archive::Zip::BEGIN@245
1112µs15µsArchive::Zip::::BEGIN@246Archive::Zip::BEGIN@246
1112µs15µsArchive::Zip::::BEGIN@253Archive::Zip::BEGIN@253
1112µs16µsArchive::Zip::::BEGIN@261Archive::Zip::BEGIN@261
1112µs15µsArchive::Zip::::BEGIN@266Archive::Zip::BEGIN@266
1112µs15µsArchive::Zip::::BEGIN@272Archive::Zip::BEGIN@272
1112µs16µsArchive::Zip::::BEGIN@278Archive::Zip::BEGIN@278
1112µs16µsArchive::Zip::::BEGIN@282Archive::Zip::BEGIN@282
1112µs15µsArchive::Zip::::BEGIN@297Archive::Zip::BEGIN@297
1112µs15µsArchive::Zip::::BEGIN@310Archive::Zip::BEGIN@310
1112µs15µsArchive::Zip::::BEGIN@313Archive::Zip::BEGIN@313
1112µs15µsArchive::Zip::::BEGIN@202Archive::Zip::BEGIN@202
1112µs14µsArchive::Zip::::BEGIN@209Archive::Zip::BEGIN@209
1112µs14µsArchive::Zip::::BEGIN@214Archive::Zip::BEGIN@214
1112µs14µsArchive::Zip::::BEGIN@215Archive::Zip::BEGIN@215
1112µs15µsArchive::Zip::::BEGIN@220Archive::Zip::BEGIN@220
1112µs15µsArchive::Zip::::BEGIN@228Archive::Zip::BEGIN@228
1112µs14µsArchive::Zip::::BEGIN@229Archive::Zip::BEGIN@229
1112µs15µsArchive::Zip::::BEGIN@237Archive::Zip::BEGIN@237
1112µs23µsArchive::Zip::::BEGIN@286Archive::Zip::BEGIN@286
1112µs15µsArchive::Zip::::BEGIN@311Archive::Zip::BEGIN@311
1112µs2µsArchive::Zip::::BEGIN@8Archive::Zip::BEGIN@8
1112µs14µsArchive::Zip::::BEGIN@252Archive::Zip::BEGIN@252
1112µs14µsArchive::Zip::::BEGIN@262Archive::Zip::BEGIN@262
1112µs15µsArchive::Zip::::BEGIN@267Archive::Zip::BEGIN@267
1112µs15µsArchive::Zip::::BEGIN@240Archive::Zip::BEGIN@240
1112µs2µsArchive::Zip::::BEGIN@25Archive::Zip::BEGIN@25
1111µs1µsArchive::Zip::::BEGIN@5Archive::Zip::BEGIN@5
0000s0sArchive::Zip::::_asLocalNameArchive::Zip::_asLocalName
0000s0sArchive::Zip::::_asZipDirNameArchive::Zip::_asZipDirName
0000s0sArchive::Zip::::_errorArchive::Zip::_error
0000s0sArchive::Zip::::_formatErrorArchive::Zip::_formatError
0000s0sArchive::Zip::::_ioErrorArchive::Zip::_ioError
0000s0sArchive::Zip::::_printArchive::Zip::_print
0000s0sArchive::Zip::::_printErrorArchive::Zip::_printError
0000s0sArchive::Zip::::_subclassResponsibilityArchive::Zip::_subclassResponsibility
0000s0sArchive::Zip::::_zip64NotSupportedArchive::Zip::_zip64NotSupported
0000s0sArchive::Zip::::chunkSizeArchive::Zip::chunkSize
0000s0sArchive::Zip::::computeCRC32Archive::Zip::computeCRC32
0000s0sArchive::Zip::::setChunkSizeArchive::Zip::setChunkSize
0000s0sArchive::Zip::::setErrorHandlerArchive::Zip::setErrorHandler
0000s0sArchive::Zip::::tempFileArchive::Zip::tempFile
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Archive::Zip;
2
3228µs110µs
# spent 10µs within Archive::Zip::BEGIN@3 which was called: # once (10µs+0s) by Spreadsheet::ParseXLSX::BEGIN@11 at line 3
use 5.006;
# spent 10µs making 1 call to Archive::Zip::BEGIN@3
4214µs27µs
# spent 5µs (4+1) within Archive::Zip::BEGIN@4 which was called: # once (4µs+1µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 4
use strict;
# spent 5µs making 1 call to Archive::Zip::BEGIN@4 # spent 1µs making 1 call to strict::import
5211µs11µs
# spent 1µs within Archive::Zip::BEGIN@5 which was called: # once (1µs+0s) by Spreadsheet::ParseXLSX::BEGIN@11 at line 5
use Carp ();
# spent 1µs making 1 call to Archive::Zip::BEGIN@5
6284µs12.30ms
# spent 2.30ms (2.13+168µs) within Archive::Zip::BEGIN@6 which was called: # once (2.13ms+168µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 6
use Cwd ();
# spent 2.30ms making 1 call to Archive::Zip::BEGIN@6
7288µs13.66ms
# spent 3.66ms (410µs+3.25) within Archive::Zip::BEGIN@7 which was called: # once (410µs+3.25ms) by Spreadsheet::ParseXLSX::BEGIN@11 at line 7
use IO::File ();
# spent 3.66ms making 1 call to Archive::Zip::BEGIN@7
8210µs12µs
# spent 2µs within Archive::Zip::BEGIN@8 which was called: # once (2µs+0s) by Spreadsheet::ParseXLSX::BEGIN@11 at line 8
use IO::Seekable ();
# spent 2µs making 1 call to Archive::Zip::BEGIN@8
9285µs13.83ms
# spent 3.83ms (2.04+1.80) within Archive::Zip::BEGIN@9 which was called: # once (2.04ms+1.80ms) by Spreadsheet::ParseXLSX::BEGIN@11 at line 9
use Compress::Raw::Zlib ();
# spent 3.83ms making 1 call to Archive::Zip::BEGIN@9
10298µs11.64ms
# spent 1.64ms (1.46+174µs) within Archive::Zip::BEGIN@10 which was called: # once (1.46ms+174µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 10
use File::Spec ();
# spent 1.64ms making 1 call to Archive::Zip::BEGIN@10
112123µs19.88ms
# spent 9.88ms (4.37+5.51) within Archive::Zip::BEGIN@11 which was called: # once (4.37ms+5.51ms) by Spreadsheet::ParseXLSX::BEGIN@11 at line 11
use File::Temp ();
# spent 9.88ms making 1 call to Archive::Zip::BEGIN@11
12279µs1458µs
# spent 458µs (363+95) within Archive::Zip::BEGIN@12 which was called: # once (363µs+95µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 12
use FileHandle ();
# spent 458µs making 1 call to Archive::Zip::BEGIN@12
13
14228µs237µs
# spent 21µs (4+17) within Archive::Zip::BEGIN@14 which was called: # once (4µs+17µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 14
use vars qw( $VERSION @ISA );
# spent 21µs making 1 call to Archive::Zip::BEGIN@14 # spent 17µs making 1 call to vars::import
15
16
# spent 6µs within Archive::Zip::BEGIN@16 which was called: # once (6µs+0s) by Spreadsheet::ParseXLSX::BEGIN@11 at line 21
BEGIN {
171200ns $VERSION = '1.68';
18
191400ns require Exporter;
2016µs @ISA = qw( Exporter );
21113µs16µs}
# spent 6µs making 1 call to Archive::Zip::BEGIN@16
22
23222µs229µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@23 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 23
use vars qw( $ChunkSize $ErrorHandler );
# spent 16µs making 1 call to Archive::Zip::BEGIN@23 # spent 13µs making 1 call to vars::import
24
25
# spent 2µs within Archive::Zip::BEGIN@25 which was called: # once (2µs+0s) by Spreadsheet::ParseXLSX::BEGIN@11 at line 32
BEGIN {
26 # This is the size we'll try to read, write, and (de)compress.
27 # You could set it to something different if you had lots of memory
28 # and needed more speed.
291200ns $ChunkSize ||= 32768;
30
3112µs $ErrorHandler = \&Carp::carp;
32111µs12µs}
# spent 2µs making 1 call to Archive::Zip::BEGIN@25
33
34# BEGIN block is necessary here so that other modules can use the constants.
352150µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@35 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 35
use vars qw( @EXPORT_OK %EXPORT_TAGS );
# spent 16µs making 1 call to Archive::Zip::BEGIN@35 # spent 14µs making 1 call to vars::import
36
37
# spent 52µs (16+36) within Archive::Zip::BEGIN@37 which was called: # once (16µs+36µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 182
BEGIN {
381700ns @EXPORT_OK = ('computeCRC32');
39110µs %EXPORT_TAGS = (
40 CONSTANTS => [
41 qw(
42 ZIP64_SUPPORTED
43 FA_MSDOS
44 FA_UNIX
45 GPBF_ENCRYPTED_MASK
46 GPBF_DEFLATING_COMPRESSION_MASK
47 GPBF_HAS_DATA_DESCRIPTOR_MASK
48 COMPRESSION_STORED
49 COMPRESSION_DEFLATED
50 COMPRESSION_LEVEL_NONE
51 COMPRESSION_LEVEL_DEFAULT
52 COMPRESSION_LEVEL_FASTEST
53 COMPRESSION_LEVEL_BEST_COMPRESSION
54 IFA_TEXT_FILE_MASK
55 IFA_TEXT_FILE
56 IFA_BINARY_FILE
57 ZIP64_AS_NEEDED
58 ZIP64_EOCD
59 ZIP64_HEADERS
60 )
61 ],
62
63 MISC_CONSTANTS => [
64 qw(
65 FA_AMIGA
66 FA_VAX_VMS
67 FA_VM_CMS
68 FA_ATARI_ST
69 FA_OS2_HPFS
70 FA_MACINTOSH
71 FA_Z_SYSTEM
72 FA_CPM
73 FA_TOPS20
74 FA_WINDOWS_NTFS
75 FA_QDOS
76 FA_ACORN
77 FA_VFAT
78 FA_MVS
79 FA_BEOS
80 FA_TANDEM
81 FA_THEOS
82 GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK
83 GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK
84 GPBF_IS_COMPRESSED_PATCHED_DATA_MASK
85 COMPRESSION_SHRUNK
86 DEFLATING_COMPRESSION_NORMAL
87 DEFLATING_COMPRESSION_MAXIMUM
88 DEFLATING_COMPRESSION_FAST
89 DEFLATING_COMPRESSION_SUPER_FAST
90 COMPRESSION_REDUCED_1
91 COMPRESSION_REDUCED_2
92 COMPRESSION_REDUCED_3
93 COMPRESSION_REDUCED_4
94 COMPRESSION_IMPLODED
95 COMPRESSION_TOKENIZED
96 COMPRESSION_DEFLATED_ENHANCED
97 COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED
98 )
99 ],
100
101 ERROR_CODES => [
102 qw(
103 AZ_OK
104 AZ_STREAM_END
105 AZ_ERROR
106 AZ_FORMAT_ERROR
107 AZ_IO_ERROR
108 )
109 ],
110
111 # For Internal Use Only
112 PKZIP_CONSTANTS => [
113 qw(
114 SIGNATURE_FORMAT
115 SIGNATURE_LENGTH
116
117 LOCAL_FILE_HEADER_SIGNATURE
118 LOCAL_FILE_HEADER_FORMAT
119 LOCAL_FILE_HEADER_LENGTH
120
121 DATA_DESCRIPTOR_SIGNATURE
122 DATA_DESCRIPTOR_FORMAT
123 DATA_DESCRIPTOR_LENGTH
124 DATA_DESCRIPTOR_ZIP64_FORMAT
125 DATA_DESCRIPTOR_ZIP64_LENGTH
126
127 DATA_DESCRIPTOR_FORMAT_NO_SIG
128 DATA_DESCRIPTOR_LENGTH_NO_SIG
129 DATA_DESCRIPTOR_ZIP64_FORMAT_NO_SIG
130 DATA_DESCRIPTOR_ZIP64_LENGTH_NO_SIG
131
132 CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE
133 CENTRAL_DIRECTORY_FILE_HEADER_FORMAT
134 CENTRAL_DIRECTORY_FILE_HEADER_LENGTH
135
136 ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIGNATURE
137 ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_FORMAT
138 ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_LENGTH
139
140 ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE
141 ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_FORMAT
142 ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_LENGTH
143
144 END_OF_CENTRAL_DIRECTORY_SIGNATURE
145 END_OF_CENTRAL_DIRECTORY_FORMAT
146 END_OF_CENTRAL_DIRECTORY_LENGTH
147
148 ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIGNATURE_STRING
149 ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE_STRING
150 END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING
151 )
152 ],
153
154 # For Internal Use Only
155 UTILITY_METHODS => [
156 qw(
157 _error
158 _printError
159 _ioError
160 _formatError
161 _zip64NotSupported
162 _subclassResponsibility
163 _binmode
164 _isSeekable
165 _newFileHandle
166 _readSignature
167 _asZipDirName
168 )
169 ],
170 );
171
172 # Add all the constant names and error code names to @EXPORT_OK
17312µs112µs Exporter::export_ok_tags(
# spent 12µs making 1 call to Exporter::export_ok_tags
174 qw(
175 CONSTANTS
176 ERROR_CODES
177 PKZIP_CONSTANTS
178 UTILITY_METHODS
179 MISC_CONSTANTS
180 ));
181
182134µs152µs}
# spent 52µs making 1 call to Archive::Zip::BEGIN@37
183
184# Zip64 format support status
185329µs353µs
# spent 27µs (4+23) within Archive::Zip::BEGIN@185 which was called: # once (4µs+23µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 185
use constant ZIP64_SUPPORTED => !! eval { pack("Q<", 1) };
# spent 27µs making 1 call to Archive::Zip::BEGIN@185 # spent 23µs making 1 call to constant::import # spent 3µs making 1 call to CORE::pack
186
187# Error codes
188213µs234µs
# spent 19µs (3+16) within Archive::Zip::BEGIN@188 which was called: # once (3µs+16µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 188
use constant AZ_OK => 0;
# spent 19µs making 1 call to Archive::Zip::BEGIN@188 # spent 16µs making 1 call to constant::import
189213µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@189 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 189
use constant AZ_STREAM_END => 1;
# spent 16µs making 1 call to Archive::Zip::BEGIN@189 # spent 14µs making 1 call to constant::import
190211µs229µs
# spent 16µs (2+13) within Archive::Zip::BEGIN@190 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 190
use constant AZ_ERROR => 2;
# spent 16µs making 1 call to Archive::Zip::BEGIN@190 # spent 13µs making 1 call to constant::import
191211µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@191 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 191
use constant AZ_FORMAT_ERROR => 3;
# spent 16µs making 1 call to Archive::Zip::BEGIN@191 # spent 14µs making 1 call to constant::import
192212µs226µs
# spent 14µs (3+12) within Archive::Zip::BEGIN@192 which was called: # once (3µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 192
use constant AZ_IO_ERROR => 4;
# spent 14µs making 1 call to Archive::Zip::BEGIN@192 # spent 12µs making 1 call to constant::import
193
194# File types
195# Values of Archive::Zip::Member->fileAttributeFormat()
196
197211µs228µs
# spent 15µs (3+13) within Archive::Zip::BEGIN@197 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 197
use constant FA_MSDOS => 0;
# spent 15µs making 1 call to Archive::Zip::BEGIN@197 # spent 13µs making 1 call to constant::import
198217µs229µs
# spent 16µs (2+13) within Archive::Zip::BEGIN@198 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 198
use constant FA_AMIGA => 1;
# spent 16µs making 1 call to Archive::Zip::BEGIN@198 # spent 13µs making 1 call to constant::import
199212µs231µs
# spent 17µs (3+14) within Archive::Zip::BEGIN@199 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 199
use constant FA_VAX_VMS => 2;
# spent 17µs making 1 call to Archive::Zip::BEGIN@199 # spent 14µs making 1 call to constant::import
200211µs227µs
# spent 15µs (3+12) within Archive::Zip::BEGIN@200 which was called: # once (3µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 200
use constant FA_UNIX => 3;
# spent 15µs making 1 call to Archive::Zip::BEGIN@200 # spent 12µs making 1 call to constant::import
201211µs228µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@201 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 201
use constant FA_VM_CMS => 4;
# spent 16µs making 1 call to Archive::Zip::BEGIN@201 # spent 13µs making 1 call to constant::import
202211µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@202 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 202
use constant FA_ATARI_ST => 5;
# spent 15µs making 1 call to Archive::Zip::BEGIN@202 # spent 12µs making 1 call to constant::import
203211µs226µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@203 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 203
use constant FA_OS2_HPFS => 6;
# spent 14µs making 1 call to Archive::Zip::BEGIN@203 # spent 12µs making 1 call to constant::import
204217µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@204 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 204
use constant FA_MACINTOSH => 7;
# spent 15µs making 1 call to Archive::Zip::BEGIN@204 # spent 12µs making 1 call to constant::import
205246µs235µs
# spent 19µs (4+16) within Archive::Zip::BEGIN@205 which was called: # once (4µs+16µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 205
use constant FA_Z_SYSTEM => 8;
# spent 19µs making 1 call to Archive::Zip::BEGIN@205 # spent 16µs making 1 call to constant::import
206212µs233µs
# spent 18µs (3+15) within Archive::Zip::BEGIN@206 which was called: # once (3µs+15µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 206
use constant FA_CPM => 9;
# spent 18µs making 1 call to Archive::Zip::BEGIN@206 # spent 15µs making 1 call to constant::import
207211µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@207 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 207
use constant FA_TOPS20 => 10;
# spent 15µs making 1 call to Archive::Zip::BEGIN@207 # spent 13µs making 1 call to constant::import
208211µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@208 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 208
use constant FA_WINDOWS_NTFS => 11;
# spent 15µs making 1 call to Archive::Zip::BEGIN@208 # spent 12µs making 1 call to constant::import
209211µs226µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@209 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 209
use constant FA_QDOS => 12;
# spent 14µs making 1 call to Archive::Zip::BEGIN@209 # spent 12µs making 1 call to constant::import
210211µs226µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@210 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 210
use constant FA_ACORN => 13;
# spent 14µs making 1 call to Archive::Zip::BEGIN@210 # spent 12µs making 1 call to constant::import
211212µs235µs
# spent 19µs (2+16) within Archive::Zip::BEGIN@211 which was called: # once (2µs+16µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 211
use constant FA_VFAT => 14;
# spent 19µs making 1 call to Archive::Zip::BEGIN@211 # spent 16µs making 1 call to constant::import
212215µs228µs
# spent 15µs (3+12) within Archive::Zip::BEGIN@212 which was called: # once (3µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 212
use constant FA_MVS => 15;
# spent 15µs making 1 call to Archive::Zip::BEGIN@212 # spent 12µs making 1 call to constant::import
213211µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@213 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 213
use constant FA_BEOS => 16;
# spent 15µs making 1 call to Archive::Zip::BEGIN@213 # spent 13µs making 1 call to constant::import
214211µs226µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@214 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 214
use constant FA_TANDEM => 17;
# spent 14µs making 1 call to Archive::Zip::BEGIN@214 # spent 12µs making 1 call to constant::import
215214µs226µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@215 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 215
use constant FA_THEOS => 18;
# spent 14µs making 1 call to Archive::Zip::BEGIN@215 # spent 12µs making 1 call to constant::import
216
217# general-purpose bit flag masks
218# Found in Archive::Zip::Member->bitFlag()
219
220212µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@220 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 220
use constant GPBF_ENCRYPTED_MASK => 1 << 0;
# spent 15µs making 1 call to Archive::Zip::BEGIN@220 # spent 13µs making 1 call to constant::import
221215µs231µs
# spent 18µs (6+13) within Archive::Zip::BEGIN@221 which was called: # once (6µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 221
use constant GPBF_DEFLATING_COMPRESSION_MASK => 3 << 1;
# spent 18µs making 1 call to Archive::Zip::BEGIN@221 # spent 13µs making 1 call to constant::import
222213µs229µs
# spent 16µs (2+13) within Archive::Zip::BEGIN@222 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 222
use constant GPBF_HAS_DATA_DESCRIPTOR_MASK => 1 << 3;
# spent 16µs making 1 call to Archive::Zip::BEGIN@222 # spent 13µs making 1 call to constant::import
223
224# deflating compression types, if compressionMethod == COMPRESSION_DEFLATED
225# ( Archive::Zip::Member->bitFlag() & GPBF_DEFLATING_COMPRESSION_MASK )
226
227212µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@227 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 227
use constant DEFLATING_COMPRESSION_NORMAL => 0 << 1;
# spent 15µs making 1 call to Archive::Zip::BEGIN@227 # spent 13µs making 1 call to constant::import
228212µs227µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@228 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 228
use constant DEFLATING_COMPRESSION_MAXIMUM => 1 << 1;
# spent 15µs making 1 call to Archive::Zip::BEGIN@228 # spent 13µs making 1 call to constant::import
229214µs227µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@229 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 229
use constant DEFLATING_COMPRESSION_FAST => 2 << 1;
# spent 14µs making 1 call to Archive::Zip::BEGIN@229 # spent 12µs making 1 call to constant::import
230213µs231µs
# spent 17µs (3+14) within Archive::Zip::BEGIN@230 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 230
use constant DEFLATING_COMPRESSION_SUPER_FAST => 3 << 1;
# spent 17µs making 1 call to Archive::Zip::BEGIN@230 # spent 14µs making 1 call to constant::import
231
232# compression method
233
234# these two are the only ones supported in this module
235215µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@235 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 235
use constant COMPRESSION_STORED => 0; # file is stored (no compression)
# spent 15µs making 1 call to Archive::Zip::BEGIN@235 # spent 12µs making 1 call to constant::import
236212µs231µs
# spent 18µs (5+13) within Archive::Zip::BEGIN@236 which was called: # once (5µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 236
use constant COMPRESSION_DEFLATED => 8; # file is Deflated
# spent 18µs making 1 call to Archive::Zip::BEGIN@236 # spent 13µs making 1 call to constant::import
237216µs227µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@237 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 237
use constant COMPRESSION_LEVEL_NONE => 0;
# spent 15µs making 1 call to Archive::Zip::BEGIN@237 # spent 13µs making 1 call to constant::import
238212µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@238 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 238
use constant COMPRESSION_LEVEL_DEFAULT => -1;
# spent 16µs making 1 call to Archive::Zip::BEGIN@238 # spent 14µs making 1 call to constant::import
239211µs230µs
# spent 16µs (2+14) within Archive::Zip::BEGIN@239 which was called: # once (2µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 239
use constant COMPRESSION_LEVEL_FASTEST => 1;
# spent 16µs making 1 call to Archive::Zip::BEGIN@239 # spent 14µs making 1 call to constant::import
240211µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@240 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 240
use constant COMPRESSION_LEVEL_BEST_COMPRESSION => 9;
# spent 15µs making 1 call to Archive::Zip::BEGIN@240 # spent 13µs making 1 call to constant::import
241
242# internal file attribute bits
243# Found in Archive::Zip::Member::internalFileAttributes()
244
245215µs227µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@245 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 245
use constant IFA_TEXT_FILE_MASK => 1;
# spent 14µs making 1 call to Archive::Zip::BEGIN@245 # spent 12µs making 1 call to constant::import
246222µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@246 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 246
use constant IFA_TEXT_FILE => 1;
# spent 15µs making 1 call to Archive::Zip::BEGIN@246 # spent 13µs making 1 call to constant::import
247213µs232µs
# spent 17µs (3+15) within Archive::Zip::BEGIN@247 which was called: # once (3µs+15µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 247
use constant IFA_BINARY_FILE => 0;
# spent 17µs making 1 call to Archive::Zip::BEGIN@247 # spent 15µs making 1 call to constant::import
248
249# desired zip64 structures for archive creation
250
251211µs228µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@251 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 251
use constant ZIP64_AS_NEEDED => 0;
# spent 16µs making 1 call to Archive::Zip::BEGIN@251 # spent 13µs making 1 call to constant::import
252210µs227µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@252 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 252
use constant ZIP64_EOCD => 1;
# spent 14µs making 1 call to Archive::Zip::BEGIN@252 # spent 12µs making 1 call to constant::import
253217µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@253 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 253
use constant ZIP64_HEADERS => 2;
# spent 15µs making 1 call to Archive::Zip::BEGIN@253 # spent 12µs making 1 call to constant::import
254
255# PKZIP file format miscellaneous constants (for internal use only)
256211µs231µs
# spent 17µs (2+14) within Archive::Zip::BEGIN@256 which was called: # once (2µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 256
use constant SIGNATURE_FORMAT => "V";
# spent 17µs making 1 call to Archive::Zip::BEGIN@256 # spent 14µs making 1 call to constant::import
257212µs234µs
# spent 18µs (3+16) within Archive::Zip::BEGIN@257 which was called: # once (3µs+16µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 257
use constant SIGNATURE_LENGTH => 4;
# spent 18µs making 1 call to Archive::Zip::BEGIN@257 # spent 16µs making 1 call to constant::import
258
259# these lengths are without the signature.
260213µs238µs
# spent 20µs (3+18) within Archive::Zip::BEGIN@260 which was called: # once (3µs+18µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 260
use constant LOCAL_FILE_HEADER_SIGNATURE => 0x04034b50;
# spent 20µs making 1 call to Archive::Zip::BEGIN@260 # spent 18µs making 1 call to constant::import
261211µs229µs
# spent 16µs (2+13) within Archive::Zip::BEGIN@261 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 261
use constant LOCAL_FILE_HEADER_FORMAT => "v3 V4 v2";
# spent 16µs making 1 call to Archive::Zip::BEGIN@261 # spent 13µs making 1 call to constant::import
262215µs227µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@262 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 262
use constant LOCAL_FILE_HEADER_LENGTH => 26;
# spent 14µs making 1 call to Archive::Zip::BEGIN@262 # spent 12µs making 1 call to constant::import
263
264# PKZIP docs don't mention the signature, but Info-Zip writes it.
265211µs228µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@265 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 265
use constant DATA_DESCRIPTOR_SIGNATURE => 0x08074b50;
# spent 15µs making 1 call to Archive::Zip::BEGIN@265 # spent 12µs making 1 call to constant::import
266210µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@266 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 266
use constant DATA_DESCRIPTOR_FORMAT => "V3";
# spent 15µs making 1 call to Archive::Zip::BEGIN@266 # spent 12µs making 1 call to constant::import
267215µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@267 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 267
use constant DATA_DESCRIPTOR_LENGTH => 12;
# spent 15µs making 1 call to Archive::Zip::BEGIN@267 # spent 13µs making 1 call to constant::import
268224µs229µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@268 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 268
use constant DATA_DESCRIPTOR_ZIP64_FORMAT => "L< Q<2";
# spent 16µs making 1 call to Archive::Zip::BEGIN@268 # spent 13µs making 1 call to constant::import
269213µs232µs
# spent 17µs (3+14) within Archive::Zip::BEGIN@269 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 269
use constant DATA_DESCRIPTOR_ZIP64_LENGTH => 20;
# spent 17µs making 1 call to Archive::Zip::BEGIN@269 # spent 14µs making 1 call to constant::import
270
271# but the signature is apparently optional.
272215µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@272 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 272
use constant DATA_DESCRIPTOR_FORMAT_NO_SIG => "V2";
# spent 15µs making 1 call to Archive::Zip::BEGIN@272 # spent 12µs making 1 call to constant::import
273212µs229µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@273 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 273
use constant DATA_DESCRIPTOR_LENGTH_NO_SIG => 8;
# spent 16µs making 1 call to Archive::Zip::BEGIN@273 # spent 13µs making 1 call to constant::import
274211µs228µs
# spent 15µs (3+13) within Archive::Zip::BEGIN@274 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 274
use constant DATA_DESCRIPTOR_ZIP64_FORMAT_NO_SIG => "Q<2";
# spent 15µs making 1 call to Archive::Zip::BEGIN@274 # spent 13µs making 1 call to constant::import
275213µs241µs
# spent 23µs (4+18) within Archive::Zip::BEGIN@275 which was called: # once (4µs+18µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 275
use constant DATA_DESCRIPTOR_ZIP64_LENGTH_NO_SIG => 16;
# spent 23µs making 1 call to Archive::Zip::BEGIN@275 # spent 18µs making 1 call to constant::import
276
277213µs236µs
# spent 19µs (2+17) within Archive::Zip::BEGIN@277 which was called: # once (2µs+17µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 277
use constant CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE => 0x02014b50;
# spent 19µs making 1 call to Archive::Zip::BEGIN@277 # spent 17µs making 1 call to constant::import
278214µs229µs
# spent 16µs (2+13) within Archive::Zip::BEGIN@278 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 278
use constant CENTRAL_DIRECTORY_FILE_HEADER_FORMAT => "C2 v3 V4 v5 V2";
# spent 16µs making 1 call to Archive::Zip::BEGIN@278 # spent 13µs making 1 call to constant::import
279212µs229µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@279 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 279
use constant CENTRAL_DIRECTORY_FILE_HEADER_LENGTH => 42;
# spent 16µs making 1 call to Archive::Zip::BEGIN@279 # spent 13µs making 1 call to constant::import
280
281# zip64 support
282220µs229µs
# spent 16µs (2+13) within Archive::Zip::BEGIN@282 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 282
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIGNATURE => 0x06064b50;
# spent 16µs making 1 call to Archive::Zip::BEGIN@282 # spent 13µs making 1 call to constant::import
28312µs115µs
# spent 17µs (2+15) within Archive::Zip::BEGIN@283 which was called: # once (2µs+15µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 284
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIGNATURE_STRING =>
# spent 15µs making 1 call to constant::import
284111µs218µs pack("V", ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIGNATURE);
# spent 17µs making 1 call to Archive::Zip::BEGIN@283 # spent 1µs making 1 call to CORE::pack
285211µs230µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@285 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 285
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_FORMAT => "Q< S<2 L<2 Q<4";
# spent 16µs making 1 call to Archive::Zip::BEGIN@285 # spent 14µs making 1 call to constant::import
286213µs243µs
# spent 23µs (2+20) within Archive::Zip::BEGIN@286 which was called: # once (2µs+20µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 286
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_LENGTH => 52;
# spent 23µs making 1 call to Archive::Zip::BEGIN@286 # spent 20µs making 1 call to constant::import
287
288229µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@288 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 288
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE => 0x07064b50;
# spent 16µs making 1 call to Archive::Zip::BEGIN@288 # spent 14µs making 1 call to constant::import
28912µs113µs
# spent 27µs (13+13) within Archive::Zip::BEGIN@289 which was called: # once (13µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 290
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE_STRING =>
# spent 13µs making 1 call to constant::import
290110µs227µs pack("V", ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE);
# spent 27µs making 1 call to Archive::Zip::BEGIN@289 # spent 700ns making 1 call to CORE::pack
291211µs228µs
# spent 15µs (3+13) within Archive::Zip::BEGIN@291 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 291
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_FORMAT => "L< Q< L<";
# spent 15µs making 1 call to Archive::Zip::BEGIN@291 # spent 13µs making 1 call to constant::import
292214µs226µs
# spent 14µs (2+12) within Archive::Zip::BEGIN@292 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 292
use constant ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_LENGTH => 16;
# spent 14µs making 1 call to Archive::Zip::BEGIN@292 # spent 12µs making 1 call to constant::import
293
294221µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@294 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 294
use constant END_OF_CENTRAL_DIRECTORY_SIGNATURE => 0x06054b50;
# spent 15µs making 1 call to Archive::Zip::BEGIN@294 # spent 13µs making 1 call to constant::import
29512µs114µs
# spent 17µs (3+14) within Archive::Zip::BEGIN@295 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 296
use constant END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING =>
# spent 14µs making 1 call to constant::import
296111µs217µs pack("V", END_OF_CENTRAL_DIRECTORY_SIGNATURE);
# spent 17µs making 1 call to Archive::Zip::BEGIN@295 # spent 600ns making 1 call to CORE::pack
297211µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@297 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 297
use constant END_OF_CENTRAL_DIRECTORY_FORMAT => "v4 V2 v";
# spent 15µs making 1 call to Archive::Zip::BEGIN@297 # spent 13µs making 1 call to constant::import
298216µs228µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@298 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 298
use constant END_OF_CENTRAL_DIRECTORY_LENGTH => 18;
# spent 15µs making 1 call to Archive::Zip::BEGIN@298 # spent 12µs making 1 call to constant::import
299
300213µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@300 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 300
use constant GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK => 1 << 1;
# spent 16µs making 1 call to Archive::Zip::BEGIN@300 # spent 14µs making 1 call to constant::import
301216µs237µs
# spent 20µs (3+17) within Archive::Zip::BEGIN@301 which was called: # once (3µs+17µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 301
use constant GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK => 1 << 2;
# spent 20µs making 1 call to Archive::Zip::BEGIN@301 # spent 17µs making 1 call to constant::import
302213µs234µs
# spent 18µs (3+15) within Archive::Zip::BEGIN@302 which was called: # once (3µs+15µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 302
use constant GPBF_IS_COMPRESSED_PATCHED_DATA_MASK => 1 << 5;
# spent 18µs making 1 call to Archive::Zip::BEGIN@302 # spent 15µs making 1 call to constant::import
303
304# the rest of these are not supported in this module
305213µs237µs
# spent 20µs (3+17) within Archive::Zip::BEGIN@305 which was called: # once (3µs+17µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 305
use constant COMPRESSION_SHRUNK => 1; # file is Shrunk
# spent 20µs making 1 call to Archive::Zip::BEGIN@305 # spent 17µs making 1 call to constant::import
306214µs230µs
# spent 16µs (3+14) within Archive::Zip::BEGIN@306 which was called: # once (3µs+14µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 306
use constant COMPRESSION_REDUCED_1 => 2; # file is Reduced CF=1
# spent 16µs making 1 call to Archive::Zip::BEGIN@306 # spent 14µs making 1 call to constant::import
307213µs229µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@307 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 307
use constant COMPRESSION_REDUCED_2 => 3; # file is Reduced CF=2
# spent 16µs making 1 call to Archive::Zip::BEGIN@307 # spent 13µs making 1 call to constant::import
308225µs229µs
# spent 16µs (3+13) within Archive::Zip::BEGIN@308 which was called: # once (3µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 308
use constant COMPRESSION_REDUCED_3 => 4; # file is Reduced CF=3
# spent 16µs making 1 call to Archive::Zip::BEGIN@308 # spent 13µs making 1 call to constant::import
309212µs238µs
# spent 20µs (3+18) within Archive::Zip::BEGIN@309 which was called: # once (3µs+18µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 309
use constant COMPRESSION_REDUCED_4 => 5; # file is Reduced CF=4
# spent 20µs making 1 call to Archive::Zip::BEGIN@309 # spent 18µs making 1 call to constant::import
310211µs227µs
# spent 15µs (2+12) within Archive::Zip::BEGIN@310 which was called: # once (2µs+12µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 310
use constant COMPRESSION_IMPLODED => 6; # file is Imploded
# spent 15µs making 1 call to Archive::Zip::BEGIN@310 # spent 12µs making 1 call to constant::import
311216µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@311 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 311
use constant COMPRESSION_TOKENIZED => 7; # reserved for Tokenizing compr.
# spent 15µs making 1 call to Archive::Zip::BEGIN@311 # spent 13µs making 1 call to constant::import
312211µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@312 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 312
use constant COMPRESSION_DEFLATED_ENHANCED => 9; # reserved for enh. Deflating
# spent 15µs making 1 call to Archive::Zip::BEGIN@312 # spent 13µs making 1 call to constant::import
3132795µs228µs
# spent 15µs (2+13) within Archive::Zip::BEGIN@313 which was called: # once (2µs+13µs) by Spreadsheet::ParseXLSX::BEGIN@11 at line 313
use constant COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED => 10;
# spent 15µs making 1 call to Archive::Zip::BEGIN@313 # spent 13µs making 1 call to constant::import
314
315# Load the various required classes
316163µsrequire Archive::Zip::Archive;
317154µsrequire Archive::Zip::Member;
318157µsrequire Archive::Zip::FileMember;
319150µsrequire Archive::Zip::DirectoryMember;
320155µsrequire Archive::Zip::ZipFileMember;
321153µsrequire Archive::Zip::NewFileMember;
322159µsrequire Archive::Zip::StringMember;
323
324# Convenience functions
325
326
# spent 12µs (9+3) within Archive::Zip::_ISA which was called 4 times, avg 3µs/call: # once (5µs+2µs) by Archive::Zip::_isSeekable at line 441 # once (1µs+700ns) by Archive::Zip::_isSeekable at line 449 # once (1µs+600ns) by Archive::Zip::_isSeekable at line 443 # once (1µs+200ns) by Archive::Zip::_isSeekable at line 445
sub _ISA ($$) {
327
328 # Can't rely on Scalar::Util, so use the next best way
3294300ns local $@;
330814µs43µs !!eval { ref $_[0] and $_[0]->isa($_[1]) };
# spent 3µs making 4 calls to UNIVERSAL::isa, avg 750ns/call
331}
332
333
# spent 35µs (29+6) within Archive::Zip::_CAN which was called 8 times, avg 4µs/call: # 8 times (29µs+6µs) by Archive::Zip::_binmode at line 432, avg 4µs/call
sub _CAN ($$) {
33482µs local $@;
3351636µs86µs !!eval { ref $_[0] and $_[0]->can($_[1]) };
# spent 6µs making 8 calls to UNIVERSAL::can, avg 775ns/call
336}
337
338#####################################################################
339# Methods
340
341
# spent 16µs (4+12) within Archive::Zip::new which was called: # once (4µs+12µs) by Spreadsheet::ParseXLSX::parse at line 75 of /home/micha/Projekt/spreadsheet-parsexlsx/lib/Spreadsheet/ParseXLSX.pm
sub new {
3421300ns my $class = shift;
34314µs112µs return Archive::Zip::Archive->new(@_);
# spent 12µs making 1 call to Archive::Zip::Archive::new
344}
345
346sub computeCRC32 {
347 my ($data, $crc);
348
349 if (ref($_[0]) eq 'HASH') {
350 $data = $_[0]->{string};
351 $crc = $_[0]->{checksum};
352 } else {
353 $data = shift;
354 $data = shift if ref($data);
355 $crc = shift;
356 }
357
358 return Compress::Raw::Zlib::crc32($data, $crc);
359}
360
361# Report or change chunk size used for reading and writing.
362# Also sets Zlib's default buffer size (eventually).
363sub setChunkSize {
364 shift if ref($_[0]) eq 'Archive::Zip::Archive';
365 my $chunkSize = (ref($_[0]) eq 'HASH') ? shift->{chunkSize} : shift;
366 my $oldChunkSize = $Archive::Zip::ChunkSize;
367 $Archive::Zip::ChunkSize = $chunkSize if ($chunkSize);
368 return $oldChunkSize;
369}
370
371sub chunkSize {
372 return $Archive::Zip::ChunkSize;
373}
374
375sub setErrorHandler {
376 my $errorHandler = (ref($_[0]) eq 'HASH') ? shift->{subroutine} : shift;
377 $errorHandler = \&Carp::carp unless defined($errorHandler);
378 my $oldErrorHandler = $Archive::Zip::ErrorHandler;
379 $Archive::Zip::ErrorHandler = $errorHandler;
380 return $oldErrorHandler;
381}
382
383######################################################################
384# Private utility functions (not methods).
385
386sub _printError {
387 my $string = join(' ', @_, "\n");
388 my $oldCarpLevel = $Carp::CarpLevel;
389 $Carp::CarpLevel += 2;
390 &{$ErrorHandler}($string);
391 $Carp::CarpLevel = $oldCarpLevel;
392}
393
394# This is called on format errors.
395sub _formatError {
396 shift if ref($_[0]);
397 _printError('format error:', @_);
398 return AZ_FORMAT_ERROR;
399}
400
401# This is called on IO errors.
402sub _ioError {
403 shift if ref($_[0]);
404 _printError('IO error:', @_, ':', $!);
405 return AZ_IO_ERROR;
406}
407
408# This is called on generic errors.
409sub _error {
410 shift if ref($_[0]);
411 _printError('error:', @_);
412 return AZ_ERROR;
413}
414
415# This is called if zip64 format is not supported but would be
416# required.
417sub _zip64NotSupported {
418 shift if ref($_[0]);
419 _printError('zip64 format not supported on this Perl interpreter');
420 return AZ_ERROR;
421}
422
423# Called when a subclass should have implemented
424# something but didn't
425sub _subclassResponsibility {
426 Carp::croak("subclass Responsibility\n");
427}
428
429# Try to set the given file handle or object into binary mode.
430
# spent 80µs (23+57) within Archive::Zip::_binmode which was called 8 times, avg 10µs/call: # 7 times (18µs+44µs) by Archive::Zip::FileMember::_openFile at line 44 of Archive/Zip/FileMember.pm, avg 9µs/call # once (4µs+14µs) by Archive::Zip::Archive::readFromFileHandle at line 752 of Archive/Zip/Archive.pm
sub _binmode {
43181µs my $fh = shift;
432819µs1657µs return _CAN($fh, 'binmode') ? $fh->binmode() : binmode($fh);
# spent 35µs making 8 calls to Archive::Zip::_CAN, avg 4µs/call # spent 22µs making 8 calls to IO::Handle::binmode, avg 3µs/call
433}
434
435# Attempt to guess whether file handle is seekable.
436# Because of problems with Windows, this only returns true when
437# the file handle is a real file.
438
# spent 20µs (8+12) within Archive::Zip::_isSeekable which was called: # once (8µs+12µs) by Archive::Zip::Archive::readFromFileHandle at line 756 of Archive/Zip/Archive.pm
sub _isSeekable {
4391200ns my $fh = shift;
4401300ns return 0 unless ref $fh;
44111µs17µs _ISA($fh, "IO::Scalar") # IO::Scalar objects are brokenly-seekable
# spent 7µs making 1 call to Archive::Zip::_ISA
442 and return 0;
44311µs12µs _ISA($fh, "IO::String")
# spent 2µs making 1 call to Archive::Zip::_ISA
444 and return 1;
4451900ns12µs if (_ISA($fh, "IO::Seekable")) {
# spent 2µs making 1 call to Archive::Zip::_ISA
446
447 # Unfortunately, some things like FileHandle objects
448 # return true for Seekable, but AREN'T!!!!!
4491700ns12µs _ISA($fh, "FileHandle")
# spent 2µs making 1 call to Archive::Zip::_ISA
450 and return 0;
45112µs return 1;
452 }
453
454 # open my $fh, "+<", \$data;
455 ref $fh eq "GLOB" && eval { seek $fh, 0, 1 } and return 1;
456 _CAN($fh, "stat")
457 and return -f $fh;
458 return (_CAN($fh, "seek") and _CAN($fh, "tell")) ? 1 : 0;
459}
460
461# Print to the filehandle, while making sure the pesky Perl special global
462# variables don't interfere.
463sub _print {
464 my ($self, $fh, @data) = @_;
465
466 local $\;
467
468 return $fh->print(@data);
469}
470
471# Return an opened IO::Handle
472# my ( $status, fh ) = _newFileHandle( 'fileName', 'w' );
473# Can take a filename, file handle, or ref to GLOB
474# Or, if given something that is a ref but not an IO::Handle,
475# passes back the same thing.
476
# spent 343µs (41+303) within Archive::Zip::_newFileHandle which was called 8 times, avg 43µs/call: # 7 times (34µs+272µs) by Archive::Zip::FileMember::_openFile at line 38 of Archive/Zip/FileMember.pm, avg 44µs/call # once (7µs+31µs) by Archive::Zip::Archive::read at line 726 of Archive/Zip/Archive.pm
sub _newFileHandle {
47781µs my $fd = shift;
47881µs my $status = 1;
4798900ns my $handle;
480
48183µs if (ref($fd)) {
482 if (_ISA($fd, 'IO::Scalar') or _ISA($fd, 'IO::String')) {
483 $handle = $fd;
484 } elsif (_ISA($fd, 'IO::Handle') or ref($fd) eq 'GLOB') {
485 $handle = IO::File->new;
486 $status = $handle->fdopen($fd, @_);
487 } else {
488 $handle = $fd;
489 }
490 } else {
491813µs870µs $handle = IO::File->new;
# spent 70µs making 8 calls to IO::File::new, avg 9µs/call
49287µs8232µs $status = $handle->open($fd, @_);
# spent 232µs making 8 calls to IO::File::open, avg 29µs/call
493 }
494
495810µs return ($status, $handle);
496}
497
498# Returns next signature from given file handle, leaves
499# file handle positioned afterwards.
500#
501# In list context, returns ($status, $signature)
502# ( $status, $signature ) = _readSignature( $fh, $fileName );
503#
504# This function returns one of AZ_OK, AZ_IO_ERROR, or
505# AZ_FORMAT_ERROR and calls the respective error handlers in the
506# latter two cases. If optional $noFormatError is true, it does
507# not call the error handler on format error, but only returns
508# AZ_FORMAT_ERROR.
509
# spent 152µs (72+80) within Archive::Zip::_readSignature which was called 19 times, avg 8µs/call: # 11 times (34µs+21µs) by Archive::Zip::Archive::readFromFileHandle at line 784 of Archive/Zip/Archive.pm, avg 5µs/call # 7 times (29µs+54µs) by Archive::Zip::ZipFileMember::_seekToLocalHeader at line 70 of Archive/Zip/ZipFileMember.pm, avg 12µs/call # once (8µs+4µs) by Archive::Zip::Archive::_readEndOfCentralDirectory at line 872 of Archive/Zip/Archive.pm
sub _readSignature {
510192µs my $fh = shift;
511193µs my $fileName = shift;
512192µs my $expectedSignature = shift; # optional
513192µs my $noFormatError = shift; # optional
514
515192µs my $signatureData;
5161912µs1970µs my $bytesRead = $fh->read($signatureData, SIGNATURE_LENGTH);
# spent 70µs making 19 calls to IO::Handle::read, avg 4µs/call
517193µs if ($bytesRead != SIGNATURE_LENGTH) {
518 return _ioError("reading header signature");
519 }
5201927µs1910µs my $signature = unpack(SIGNATURE_FORMAT, $signatureData);
# spent 10µs making 19 calls to CORE::unpack, avg 532ns/call
521192µs my $status = AZ_OK;
522
523 # compare with expected signature, if any, or any known signature.
524197µs if (
525 (defined($expectedSignature) && $signature != $expectedSignature)
526 || ( !defined($expectedSignature)
527 && $signature != CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE
528 && $signature != LOCAL_FILE_HEADER_SIGNATURE
529 && $signature != END_OF_CENTRAL_DIRECTORY_SIGNATURE
530 && $signature != DATA_DESCRIPTOR_SIGNATURE
531 && $signature != ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIGNATURE
532 && $signature != ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE
533 )
534 ) {
5351800ns if (! $noFormatError ) {
536 my $errmsg = sprintf("bad signature: 0x%08x", $signature);
537 if (_isSeekable($fh)) {
538 $errmsg .= sprintf(" at offset %d", $fh->tell() - SIGNATURE_LENGTH);
539 }
540
541 $status = _formatError("$errmsg in file $fileName");
542 }
543 else {
5441200ns $status = AZ_FORMAT_ERROR;
545 }
546 }
547
5481918µs return ($status, $signature);
549}
550
551# Utility method to make and open a temp file.
552# Will create $temp_dir if it does not exist.
553# Returns file handle and name:
554#
555# my ($fh, $name) = Archive::Zip::tempFile();
556# my ($fh, $name) = Archive::Zip::tempFile('mytempdir');
557#
558
559sub tempFile {
560 my $dir = (ref($_[0]) eq 'HASH') ? shift->{tempDir} : shift;
561 my ($fh, $filename) = File::Temp::tempfile(
562 SUFFIX => '.zip',
563 UNLINK => 1,
564 $dir ? (DIR => $dir) : ());
565 return (undef, undef) unless $fh;
566 my ($status, $newfh) = _newFileHandle($fh, 'w+');
567 $fh->close();
568 return ($newfh, $filename);
569}
570
571# Return the normalized directory name as used in a zip file (path
572# separators become slashes, etc.).
573# Will translate internal slashes in path components (i.e. on Macs) to
574# underscores. Discards volume names.
575# When $forceDir is set, returns paths with trailing slashes (or arrays
576# with trailing blank members).
577#
578# If third argument is a reference, returns volume information there.
579#
580# input output
581# . ('.') '.'
582# ./a ('a') a
583# ./a/b ('a','b') a/b
584# ./a/b/ ('a','b') a/b
585# a/b/ ('a','b') a/b
586# /a/b/ ('','a','b') a/b
587# c:\a\b\c.doc ('','a','b','c.doc') a/b/c.doc # on Windows
588# "i/o maps:whatever" ('i_o maps', 'whatever') "i_o maps/whatever" # on Macs
589sub _asZipDirName {
590 my $name = shift;
591 my $forceDir = shift;
592 my $volReturn = shift;
593 my ($volume, $directories, $file) =
594 File::Spec->splitpath(File::Spec->canonpath($name), $forceDir);
595 $$volReturn = $volume if (ref($volReturn));
596 my @dirs = map { $_ =~ y{/}{_}; $_ } File::Spec->splitdir($directories);
597 if (@dirs > 0) { pop(@dirs) unless $dirs[-1] } # remove empty component
598 push(@dirs, defined($file) ? $file : '');
599
600 #return wantarray ? @dirs : join ( '/', @dirs );
601
602 my $normalised_path = join '/', @dirs;
603
604 # Leading directory separators should not be stored in zip archives.
605 # Example:
606 # C:\a\b\c\ a/b/c
607 # C:\a\b\c.txt a/b/c.txt
608 # /a/b/c/ a/b/c
609 # /a/b/c.txt a/b/c.txt
610 $normalised_path =~ s{^/}{}; # remove leading separator
611
612 return $normalised_path;
613}
614
615# Return an absolute local name for a zip name.
616# Assume a directory if zip name has trailing slash.
617# Takes an optional volume name in FS format (like 'a:').
618#
619sub _asLocalName {
620 my $name = shift; # zip format
621 my $volume = shift;
622 $volume = '' unless defined($volume); # local FS format
623
624 my @paths = split(/\//, $name);
625 my $filename = pop(@paths);
626 $filename = '' unless defined($filename);
627 my $localDirs = @paths ? File::Spec->catdir(@paths) : '';
628 my $localName = File::Spec->catpath($volume, $localDirs, $filename);
629 unless ($volume) {
630 $localName = File::Spec->rel2abs($localName, Cwd::getcwd());
631 }
632 return $localName;
633}
634
63512µs1;
636
637__END__