annotate variant_effect_predictor/Bio/Root/IOManager.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 #-----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 # PACKAGE : Bio::Root::IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # AUTHOR : Steve Chervitz (sac@bioperl.org)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # CREATED : 26 Mar 1997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # REVISION: $Id: IOManager.pm,v 1.13 2002/10/22 07:38:37 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # STATUS : Alpha
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # For documentation, run this module through pod2html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # (preferably from Perl v5.004 or better).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # MODIFICATION NOTES: See bottom of file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # Copyright (c) 1997-2000 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 # This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 #-----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 package Bio::Root::IOManager;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::Root::Global qw(:devel $CGI $TIMEOUT_SECS);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 use Bio::Root::Object ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 use Bio::Root::Utilities qw(:obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use FileHandle ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 @ISA = qw(Bio::Root::Object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 use vars qw($ID $VERSION $revision);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $ID = 'Bio::Root::IOManager';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $VERSION = 0.043;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 ## POD Documentation:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bio::Root::IOManager - Input and output manager for Perl5 objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =head2 Object Creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 The creation of Bio::Root::IOManager.pm objects is handled by Bio::Root::Object.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 which delegates various I/O tasks to this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 use Bio::Root::IOManager;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 $myIO = new Bio::Root::IOManager(-WHERE =>'/usr/tmp/data.out',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 -PARENT =>$self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head1 INSTALLATION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 This module is included with the central Bioperl distribution:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 http://bio.perl.org/Core/Latest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 ftp://bio.perl.org/pub/DIST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Follow the installation instructions included in the README file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 This module encapsulates the data and methods necessary for regulating
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 input/output (I/O) of data from Perl objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 It is concerned with "where" to get input or send output as opposed to "what" to get.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 IOManager.pm is intended to consolidate various I/O issues for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 Perl objects and provide an object-oriented way to do I/O things such as:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =item * passing filehandles between objects,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 =item * opening and reading input from files or STDIN,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 =item * routine file management (compressing, uncompressing, and deleting).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 Subclasses of B<Bio::Root::Object.pm> have access to all methods defined in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 IOManager.pm since B<Bio::Root::Object.pm> employs Bio::Root::IOManager.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 by a delegation mechanism.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 It is not clear yet how much objects really need to do the fancy I/O gymnastics as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 supported by IOManager. Most of the time, objects simply send output to STDOUT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 which is managed at the script/program level. The fancy I/O manipulations are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 considered experimental and have not been adequately tested or utilized.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 I'm not really satisfied with the current L<display()|display>/L<set_display()|set_display> strategy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 The additional functionality is not often utilized in typical
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 applications. Is the extra complexity worth it?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 B<The API for this module is under development.>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 =head2 Generic Data Access & Manipulation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 The L<read()|read> method provided permits the following:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =item * read from a file or STDIN.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 =item * read a single record or a stream containing multiple records.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 =item * specify a record separator.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =item * store all input data in memory or process the data stream as it is being read.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 =head1 DEPENDENCIES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 Bio::Root::IOManager.pm inherits from B<Bio::Root::Object.pm> and uses B<FileHandle.pm>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 B<Bio::Root::Utilities.pm> is also used for routine file manipulations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 compression/uncompression/deletion.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Bio::Root::Object.pm - Core object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Bio::Root::Utilities.pm - Generic utilty object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Bio::Root::Global.pm - Manages global variables/constants
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 http://bio.perl.org/Projects/modules.html - Online module documentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 http://bio.perl.org/ - Bioperl Project Homepage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 FileHandle.pm (included in the Perl distribution or CPAN).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 =head1 TODO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Experiment with using the newer B<IO.pm> included in the Perl distribution,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 instead of FileHandle.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 User feedback is an integral part of the evolution of this and other Bioperl modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Send your comments and suggestions preferably to one of the Bioperl mailing lists.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Report bugs to the Bioperl bug tracking system to help us keep track the bugs and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 their resolution. Bug reports can be submitted via email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Steve Chervitz E<lt>sac@bioperl.orgE<gt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 See L<the FEEDBACK section | FEEDBACK> for where to send bug reports and comments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 =head1 VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Bio::Root::IOManager.pm, 0.043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 =head1 ACKNOWLEDGEMENTS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 This module was developed under the auspices of the Saccharomyces Genome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Database:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 http://genome-www.stanford.edu/Saccharomyces
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Copyright (c) 1997-98 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 #### END of main POD documentation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Methods beginning with a leading underscore are considered private
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 and are intended for internal use by this module. They are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 B<not> considered part of the public interface and are described here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 for documentation purposes only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 ## CONSTRUCTOR ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 ## Using default constructor and destructor inherited from Bio::Root::Object.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 ## Could perhaps set the file data member.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 ## ACCESSORS ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 =head2 file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Usage : $object->file([filename]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Purpose : Set/Get name of a file associated with an object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Example : $object->file('/usr/home/me/data.txt');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 Returns : String (full path name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Argument : String (full path name) OR a FileHandle or TypeGlob reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 : (argument only required for setting)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Throws : Exception if the file appears to be empty or non-existent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Comments : File can be text or binary.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 See Also : L<compress_file()|compress_file>, L<uncompress_file()|uncompress_file>, L<delete_file()|delete_file>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 sub file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if($_[0]) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 my $file = $_[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 if(not ref $file and not -s $file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $self->throw("File is empty or non-existent: $file");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $self->{'_file'} = $file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 $self->{'_file'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =head2 set_fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Usage : $self->set_fh( named_parameters )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Purpose : Sets various FileHandle data members ('fh', 'fherr').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 : Provides a public interface for _open_fh().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Argument : Named parameters: (TAGS CAN BE UPPER OR LOWER CASE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 : -PATH => string (filename) or a FileHandle object ref.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 : -PRE => string, prefix for opening (e.g., '>', '>>').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 : -POST => string, postfix for opening (e.g., '|'), for commands.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 : -WHICH => string, 'err' for setting output path for errors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Throws : Exception propagated from _open_fh()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 Examples : $self->set_fh(); # Create anonymous FileHandle object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 : $self->set_fh(-PATH =>'fileName', # Open for writing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 : -PRE =>'>');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 : $self->set_fh(-PATH =>'fileName', # Open error log file in append mode.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 : -PRE =>'>>',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 : -WHICH =>'err');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 : $self->set_fh(-PATH =>$obj->fh()); # Copy a file handle from another object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Comments : set_read() and set_display() provide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 : interfaces for set_fh().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 See also : L<set_read()|set_read>, L<set_display()|set_display>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 sub set_fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 my( $self, %param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 no strict 'subs';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 my( $path, $prefix, $postfix, $which) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 $self->_rearrange([PATH,PRE,POST,WHICH],%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 use strict 'subs';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 $prefix ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $postfix ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 $which ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my $fullpath = "$prefix$path$postfix";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 my($fh);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 $DEBUG and print STDERR "set_fh($fullpath) for ${\$self->name()}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 if($which eq 'err') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 if(ref($path) =~ /FileHandle|GLOB/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 $fh = $path;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 if(defined $self->{'_fherr'}) { $self->_close_fh('err');}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 if( not $fh = $self->_open_fh("$fullpath")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $fh = $self->_open_fh("errors.$$");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 $fh || return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $self->warn("Couldn't set error output to $fullpath",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 "Set to file errors.$$");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $self->{'_fherr_name'} = $fullpath;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $self->{'_fherr'} = $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 if(ref($path) =~ /FileHandle|GLOB/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $fh = $path;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 if(defined $self->{'_fh'}) { $self->_close_fh();}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 if( not $fh = $self->_open_fh("$fullpath")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $fh = $self->_open_fh("out.$$");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 $fh || return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $self->warn("Couldn't set output to $fullpath",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 "Set to file out.$$");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $self->{'_fh_name'} = $fullpath;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $self->{'_fh'} = $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $DEBUG && print STDERR "$ID: set fh to: $fh";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 #=head2 _open_fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 # Purpose : Creates a new FileHandle object and returns it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 # : This method can be used when you need to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 # : pass FileHandles between objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 # Returns : The new FileHandle object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 # Throws : Exception: if the call to new FileHandle fails.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 # Examples : $self->_open_fh(); # Create anonymous FileHandle object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 # : $self->_open_fh('fileName'); # Open for reading
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 # : $self->_open_fh('>fileName'); # Open for writing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 # Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 #See also : L<set_fh()|set_fh>, L<fh()|fh>, L<set_read()|set_read>, L<set_display()|set_display>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 #=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 sub _open_fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 my( $self, $arg) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 my( $filehandle);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $DEBUG and print STDERR "_open_fh() $arg\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 $filehandle = new FileHandle $arg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 # if($arg =~ /STD[IO]/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 # $filehandle = new FileHandle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 # $filehandle = *$arg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 # } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 # $filehandle = new FileHandle $arg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 (ref $filehandle) || $self->throw("Can't create new FileHandle $arg",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 "Cause: $!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 return $filehandle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 #=head2 _close_fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 # Purpose : Destroy a FileHandle object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 # Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 # Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 #See also : L<_open_fh()|_open_fh>, L<set_fh()|set_fh>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 #=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 sub _close_fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 my( $self, $arg) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 $arg ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 if($arg eq 'err') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 close $self->{'_fherr'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 undef $self->{'_fherr'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 close $self->{'_fh'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 undef $self->{'_fh'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 =head2 set_display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Usage : $self->set_display([-WHERE=>'path'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 : [-SHOW =>'what is to be displayed'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 : [-MODE =>'file open mode'])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Purpose : Sets a new FileHandle object for output.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 : - Sets the objects 'show' data member to 'default' if it is not defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 : - Is a wrapper for setting an object's STDOUT filehandle:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 : Checks the -WHERE parameter and the status of the object's current
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 : filehandle {'_fh'} and does one of three things:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 : 1. If $param{-WHERE} is defined and is not 'STDOUT', it is sent to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 : set_fh() to open a new fh,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 : 2. else, if 'fh' has already been defined, it is returned,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 : 3. else, if where equals 'STDOUT', \*STDOUT is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 : 4. else, \*STDOUT is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 : Thus, if an object has already set its 'fh' to some location,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 : it can still print to 'STDOUT' by explicitly passing -WHERE='STDOUT'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 : to display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 Arguments : Named parameters: (TAGS CAN BE UPPER OR LOWER CASE).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 : (all are optional).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 : -WHERE => full path name of file to write to or 'STDOUT'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 : -SHOW => what data is to be displayed. Becomes $self->{'_show'}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 : Default = 'default'. This results in a call to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 : _display_stats() method when display() is called
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 : -MODE => mode for opening file. Default is overwrite '>'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Returns : FileHandle object reference or typglob reference (\*STDOUT).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Throws : Exception propagated from set_fh().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 Example : $self->set_display();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 : $self->set_display(-WHERE=>'./data.out');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 : $self->set_display(-WHERE=>$obj->fh());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Comments : I'm not satisfied with the current display()/set_display() strategy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 See also : L<display()|display>, L<set_fh()|set_fh>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 #----------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 sub set_display {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my( $self, @param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 my ($show, $where, $mode) = $self->_rearrange([qw(SHOW WHERE MODE)], @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 ## Default mode: overwrite any existing file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $mode ||= '>';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $where ||= 'STDOUT';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 $self->{'_show'} = ($show || 'default');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 $DEBUG and print STDERR "$ID set_display() show: $self->{'_show'}\twhere: -->$where<--\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 if( defined $where and $where !~ /STDOUT/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 # print "setting file handle object\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $self->set_fh(-PATH =>$where,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 -PRE =>$mode);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 } elsif( not defined $self->{'_fh'} or $where =~ /STDOUT/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 return \*STDOUT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 # print STDERR "filehandle already set for this object: ${\$self->fh('name')}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 return $self->{'_fh'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 =head2 set_read
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Purpose : Sets a new FileHandle object for input.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 : Same logic as set_display() but creates filehandle for read only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 Returns : The input FileHandle object or \*STDIN.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Arguments : Named parameters: (TAGS CAN BE UPPER OR LOWER CASE).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 : $param{-WHERE} = full path name of file to write to.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 Access : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 Status : Experimental, Deprecated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 WARNING : THIS METHOD HAS NOT BEEN TESTED AND IS LIKELY UNNECESSARY.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 : USE THE read() METHOD INSTEAD.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 : Note also that set_read() uses the same data member as set_display()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 : so it is currently not possible to simultaneously have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 : different displaying and reading filehandles. This degree of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 : I/O control has not been necessary.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 See also : L<read()|read>, L<set_display()|set_display>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 sub set_read {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 my( $self, @param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 my ($where, $mode) = $self->_rearrange([qw(WHERE MODE)], @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 ## Default mode: read only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $mode ||= '<';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 $where ||= 'STDIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 if( ref($where) and $where !~ /STDIN/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 # print "setting file handle object\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $self->set_fh(-PATH =>$where,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 -PRE =>$mode);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 } elsif( not defined $self->{'_fh'} or $where =~ /STDIN/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 return \*STDIN;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 # print STDERR "filehandle already set for this object: ${\$self->fh('name')}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 return $self->{'_fh'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 =head2 set_display_err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Purpose : Sets a new FileHandle object for outputing error information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 : Same logic as set_display() but creates a filehandle in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 : append mode.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 Returns : The output FileHandle object for saving errors or \*STDERR.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 WARNING : NOT TESTED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 See also : L<set_display()|set_display>, L<set_read()|set_read>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 sub set_display_err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my( $self, @param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 my ($where, $mode) = $self->_rearrange([qw(WHERE MODE)], @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 ## Default mode: read only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $mode ||= '>>';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 $where ||= 'STDERR';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 $DEBUG and print STDERR "set_display_err() object: ${\$self->name()}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 if( ref($where) and $where !~ /STDERR/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 # print "setting file handle object\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $self->set_fh(-PATH =>$where,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 -PRE =>$mode);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 } elsif( not defined $self->{'_fherr'} or $where =~ /STDERR/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 return \*STDERR;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 # print STDERR "filehandle already set for this object: ${\$self->fh('name')}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 return $self->{'_fherr'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 #####################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 # GET ACCESSORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 #####################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 =head2 show
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 Usage : $self->show()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 Purpose : Get the string used to specify what to display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 : using the display() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Returns : String or undef if no show data member is defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Arguments : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 See also : L<set_display()|set_display>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 sub show { my $self= shift; $self->{'_show'}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 =head2 fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 Usage : $object->fh(['name'])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 Purpose : Accessor for an object's FileHandle object or the argument used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 : to create that object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 Returns : One of the following:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 : 1. The arguments used when the filehandle was created ('fh_name').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 : 2. The FileHandle object reference previously assigned to $self->{'_fh'}.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 : 3. Typeglob reference \*STDIN, \*STDOUT or \*STDERR.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 Example : $self->fh(); # returns filehandle for the STDIN/STDOUT path.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 : $self->fh('err'); # returns filehandle for the err file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 : $self->fh('name'); # returns fh creation arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 : $self->fh('errname'); # returns fh creation arguments for the err file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 See also : L<set_display()|set_display>, L<set_read()|set_read>, L<set_fh()|set_fh>, L<set_display_err()|set_display_err>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 #--------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 sub fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 my( $self, $type, $stream) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 $stream ||= 'out';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 $stream = ($stream eq 'in') ? \*STDIN : \*STDOUT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 ## Problem: Without named parameters, how do you know if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 ## a single argument is to be assigned to $type or $stream?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 ## Function prototypes could be used, or separate methods:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 ## fh_out(), fh_in(), fh_err().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $type or return ($self->{'_fh'} || $stream);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 if( $type =~ /name/){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 if($type =~ /err/ ) { return $self->{'_fherr_name'}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 else { return $self->{'_fh_name'}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 if($type =~ /err/ ) { return ($self->{'_fherr'} || \*STDERR); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 else { return ($self->{'_fh'} || $stream); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 ## INSTANCE METHODS ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 ## INPUT METHODS:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 =head2 read
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 Usage : $object->read(<named parameters>);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 Purpose : Read raw textual data from a file or STDIN.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 : Optionally process each record it as it is read.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 Example : $data = $object->read(-FILE =>'usr/people/me/data.txt',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 : -REC_SEP =>"\n:",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 : -FUNC =>\&process_rec);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 : $data = $object->read(-FILE =>\*FILEHANDLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 : $data = $object->read(-FILE =>new FileHandle $file, 'r');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 Argument : Named parameters: (TAGS CAN BE UPPER OR LOWER CASE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 : (all optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 : -FILE => string (full path to file) or a reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 : to a FileHandle object or typeglob. This is an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 : optional parameter (if not defined, STDIN is used).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 : -REC_SEP => record separator to be used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 : when reading in raw data. If none is supplied,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 : the default record separator is used ($/).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 : $/ is localized to this method but be careful if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 : you do any additional file reading in functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 : called by this method (see the -FUNC parameter).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 : Such methods will use the value of $/ set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 : by read() (if a -RE_SEP is supplied).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 : -FUNC => reference to a function to be called for each
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 : record. The return value of this function is now checked:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 : if false, the reading is terminated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 : Typically -FUNC supplies a closure.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 : -HANDLE => reference to a FileHandle object or a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 : typeglob to be use for reading input.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 : The FileHandle object should be configured to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 : read from a desired file before calling this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 : method. If both -handle and -file are defined,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 : -handle takes precedence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 : (The -HANDLE parameter is no longer necessary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 : since -FILE can now contain a FileHandle ref.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 : -WAIT => integer (number of seconds to wait for input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 : before timing out. Default = 20 seconds).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 Returns : string, array, or undef depending on the arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 : If a function reference is supplied, this function will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 : called using the contents of each record as it is read in.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 : If no function reference is supplied, the data are returned as a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 : string in scalar context or as a list in array context.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 : The data are not altered; blank lines are not removed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 Throws : Exception if no input is read from source.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 : Exception if no input is read within WAIT seconds.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 : Exception if FUNC is not a function reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 : Propagates any exceptions thrown by create_filehandle()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 Comments : Gets the file name from the current file data member.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 : If no file has been defined, this method will attempt to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 : read from STDIN.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 : COMPRESSED FILES:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 : read() will attempt to use gzip -cd to read the file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 : if it appears to be compressed (binary file test).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 : If the raw data is to be returned, wantarray is used to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 : determine how the data are to be returned (list or string).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 : Sets the file data member to be the supplied file name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 : (if any is supplied).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 : The read() method is a fairly new implementation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 : and uses a different approach than display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 : For example, set_read() is not used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 Bugs : The following error is generated by Perl's FileHandle.pm module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 : when using the -w switch. It can be ignored for now:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 "Close on unopened file <GEN0> at /tools/perl/5.003/lib/FileHandle.pm line 255."
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 See Also : L<file()|file>, L<Bio::Root::Utilities::create_filehandle()|Bio::Root::Utilities>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 #----------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 sub read {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 my($self, @param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 my( $rec_sep, $func_ref, $wait ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 $self->_rearrange([qw( REC_SEP FUNC WAIT)], @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 my $fmt = (wantarray ? 'list' : 'string');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 $wait ||= $TIMEOUT_SECS; # seconds to wait before timing out.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 my $FH = $Util->create_filehandle( -client => $self, @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 # Set the record separator (if necessary) using dynamic scope.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 my $prev_rec_sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 $prev_rec_sep = $/ if scalar $rec_sep; # save the previous rec_sep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 local $/ = $rec_sep if scalar $rec_sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 # Verify that we have a proper reference to a function.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 if($func_ref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 if(not ref($func_ref) =~ /CODE/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $self->throw("Not a function reference: $func_ref, ${\ref $func_ref}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 $DEBUG && printf STDERR "$ID: read(): rec_sep = %s; func = %s\n",$/, ($func_ref?'defined':'none');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 my($data, $lines, $alarm_available);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 $alarm_available = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 alarm(0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 # alarm() not available (ActiveState perl for win32 doesn't have it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 # See jitterbug PR#98)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 $alarm_available = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 $SIG{ALRM} = sub { die "Timed out!"; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 $alarm_available and alarm($wait);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 READ_LOOP:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 while(<$FH>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 # Default behavior: read all lines.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 # If &$func_ref returns false, exit this while loop.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 # Uncomment to skip lines with only white space or record separators
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 # next if m@^(\s*|$/*)$@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 $lines++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 $alarm_available and alarm(0); # Deactivate the alarm as soon as we start reading.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 my($result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 if($func_ref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 # Need to reset $/ for any called function.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 local $/ = $prev_rec_sep if defined $prev_rec_sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 $result = &$func_ref($_) or last READ_LOOP;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 $data .= $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 if($@ =~ /Timed out!/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 $self->throw("Timed out while waiting for input from $self->{'_input_type'}.", "Timeout period = $wait seconds.\nFor a longer time out period, supply a -wait => <seconds> parameter\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 "or edit \$TIMEOUT_SECS in Bio::Root::Global.pm.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 } elsif($@ =~ /\S/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 my $err = $@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 $self->throw("Unexpected error during read: $err");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 close ($FH) unless $self->{'_input_type'} eq 'STDIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 if($data) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 $DEBUG && do{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 print STDERR "$ID: $lines records read.\nReturning $fmt.\n" };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 return ($fmt eq 'list') ? split("$/", $data) : $data;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 } elsif(not $func_ref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 $self->throw("No data input from $self->{'_input_type'}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 delete $self->{'_input_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 ## OUTPUT METHODS:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 =head2 display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 Usage : $self->set_display(named parameters)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 Purpose : Provides a default display method which calls set_display()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 : and also invokes methods to display an object's stats
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 : if necessary ( _print_stats_header() and _displayStats() ).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 Returns : True (1).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 Throws : Propagates any exceptions thrown by set_display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 Arguments : Named parameters for set_display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 Comments : I'm not satisfied with the current display()/set_display() strategy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 See also : L<set_display()|set_display>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 sub display {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 my( $self, %param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 $DEBUG && print STDERR "$ID display for ${\ref($self)}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 my $OUT = $self->set_display(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 # my $OUT = $self->set_display( %param );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 # print "$ID: OUT = $OUT";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 $DEBUG && do{ print STDERR "display(): WHERE = $OUT;\nSHOW = $self->{'_show'}";<STDIN>;};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 if($self->{'_show'} =~ /stats|default/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 if($param{-HEADER}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 $self->_print_stats_header($OUT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 $self->parent->_display_stats($OUT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 =head2 _print_stats_header
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 Usage : n/a; internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 : $obj->_print_stats_header(filehandle);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 Purpose : Prints a header containing basic info about the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 : such as the class and name of the object followed by a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 : line of hyphens.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 #------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 sub _print_stats_header {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 #------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 my($self, $OUT) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 printf $OUT "\nSTATS FOR %s \"%s\"\n",ref($self->parent),$self->parent->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 printf $OUT "%s\n", '-'x60;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 ## FILE MANIPULATION METHODS:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 =head2 file_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 Usage : $object->file_date( %named_parameters);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 Purpose : Get the last modified date of a file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 Example : $object->file_date();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 : $object->file_date(-FMT =>'yyyy-mmm-dd',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 -FILE =>'/usr/people/me/data.txt');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 : $object->file_date(-FMT =>'yyyy-mmm-dd');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 Returns : String (date)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 Argument : Named parameters: (TAGS CAN BE UPPER OR LOWER CASE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 : -FILE => string (filename full path)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 : -FMT => string (format for the returned date string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 Throws : Exception if no file is specified or the file is non-existent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 : (Propagated from Utilities::file_date())
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 Comments : File can be text or binary.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 See Also : L<file()|file>, L<Bio::Root::Utilities::file_date()|Bio::Root::Utilities>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 sub file_date {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 my ($self, @param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 my ($file, $fmt) = $self->_rearrange([qw(FILE FMT)], @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 if(not $file ||= $self->{'_file'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 $self->throw("Can't get file date: no file specified");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 $fmt ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 $Util->file_date($file, $fmt);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 =head2 compress_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 Usage : $object->compress_file([filename]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 Purpose : Compresses a file if not already compressed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 : Compresses to a temorary file if user is not owner of supplied file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 Example : $object->file('/usr/home/me/data.txt');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 : $object->compress_file();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 Argument : String (full path name) (optional).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 : If no argument is provided, the file data member is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 Returns : String (compressed file name, full path).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 : Sets the file data member to the compressed name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 : when not operating on a file supplied as an argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 : Returns false (undef) if the file is already compressed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 : (binary test).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 Throws : Exception if no file is specified.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 : Propagates any exception thrown by Bio::Root::Utilities::compress()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 : if the file cannot be compressed().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 : Tests if file is already compressed to avoid trivial error due to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 : the file already being compressed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 Comments : Relies on the compress() method of Bio::Root::Utilities.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 : to implement the file compression functionality.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 : (Currently, Bio::Root::Utilities::compress() uses gzip.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 : If the user is not the owner of the file, the file is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 : compressed to a tmp file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 : All file compressing/uncompressing requests should go through
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 : compress_file()/uncompress_file(). This serves to confine the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 : dependency between IOManager.pm module and Utilities.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 : which helps maintainability.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 Bugs : Only compresses text files. This obviates a dependency on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 : particular file suffixes but is not good if you
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 : want to compress a binary file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 : May not be taint-safe.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 See Also : L<uncompress_file()|uncompress_file>, L<file()|file>, L<Bio::Root::Utilities::compress()|Bio::Root::Utilities>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 sub compress_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 my ($self, $file) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 my $myfile = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 if(!$file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 $file = $self->{'_file'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 $myfile = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 $file or $self->throw("Can't compress data file: no file specified");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 #printf STDERR "$ID: Compressing data file for %s\n $file\n",$self->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 my ($newfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 if (-T $file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 $newfile = -o $file ? $Util->compress($file) : $Util->compress($file, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 # set the current file to the new name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 $self->file($newfile) if $myfile;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 $newfile;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 =head2 uncompress_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 Usage : $object->uncompress_file([filename]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 Purpose : Uncompresses the file containing the raw report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 : Uncompresses to a temorary file if user is not owner of supplied file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 Example : $object->file('/usr/home/me/data.txt.gz');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 : $object->uncompress_file();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 Argument : String (full path name) (optional).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 : If no argument is provided, the file data member is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 Returns : String (uncompressed file name, full path).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 : Sets the file data member to the uncompressed name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 : when not operating on a file supplied as an argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 : Returns false (undef) if the file is already uncompressed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 Throws : Exception if no file is specified.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 : Propagates any exception thrown by Bio::Root::Utilities::compress()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 : if the file cannot be uncompressed().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 : Tests if file is already uncompressed to avoid trivial error due to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 : the file already being uncompressed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 Comments : See comments for compress_file(). They apply here as well.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 Bugs : Considers all binary files to be compressed. This obviates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 : a dependency on particular file suffixes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 : May not be taint safe.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 See Also : L<compress_file()|compress_file>, L<file()|file>, L<Bio::Root::Utilities::uncompress()|Bio::Root::Utilities>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 sub uncompress_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 my ($self, $file) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 my $myfile = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 if(!$file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 $file = $self->{'_file'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 $myfile = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 $file or $self->throw("Can't compress file: no file specified");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 #printf STDERR "$ID: Uncompressing data file for %s\n $file",$self->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 my ($newfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 if (-B $file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 $newfile = -o $file ? $Util->uncompress($file) : $Util->uncompress($file, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 # set the current file to the new name & return it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 $self->file($newfile) if $myfile;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 $newfile;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 =head2 delete_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 Usage : $object->delete_file([filename]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 Purpose : Delete a file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 Example : $object->delete_file('/usr/people/me/data.txt');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 Returns : String (name of file which was deleted) if successful,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 : undef if file does not exist.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 : Sets the file data member to undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 : when not operating on a file supplied as an argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 Argument : String (full path name) (optional).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 : If no argument is provided, the file data member is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 Throws : Exception if the user is not the owner of the file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 : Propagates any exception thrown by Bio::Root::Utilities::delete().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 : if the file cannot be deleted.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 Comments : Be careful with this method: there is no undelete().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 : Relies on the delete() method provided by Bio::Root::Utilities.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 : to implement the file deletion functionality.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 : This method is not taint-safe.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 : It is intended for off-line maintenance use only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 See Also : L<file()|file>, L<Bio::Root::Utilities::delete()|Bio::Root::Utilities>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 sub delete_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 #-----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 my ($self, $file) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 my $myfile = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 if(!$file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 $file = $self->{'_file'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 $myfile = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 return undef unless -e $file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 -o $file or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 $self->throw("Can't delete file $file: Not owner.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 # $DEBUG and print STDERR "$ID: Deleting data file for ",$self->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 eval{ $Util->delete($file); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 if(!$@ and $myfile) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 $self->{'_file'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 $file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 # END OF CLASS #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 =head1 FOR DEVELOPERS ONLY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 =head2 Data Members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 Information about the various data members of this module is provided for those
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 wishing to modify or understand the code. Two things to bear in mind:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 =item 1 Do NOT rely on these in any code outside of this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 All data members are prefixed with an underscore to signify that they are private.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 Always use accessor methods. If the accessor doesn't exist or is inadequate,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 create or modify an accessor (and let me know, too!).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 =item 2 This documentation may be incomplete and out of date.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 It is easy for this documentation to become obsolete as this module is still evolving.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 Always double check this info and search for members not described here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 An instance of Bio::Root::IOManager.pm is a blessed reference to a hash containing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 all or some of the following fields:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 FIELD VALUE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 ------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 _show Selects display options.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 _fh FileHandle object for redirecting STDIN or STDOUT.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 _fherr FileHandle object for error data. Append mode.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 _fh_name The arguments used to create fh.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 _fherr_name The arguments used to create fherr.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 INHERITED DATA MEMBERS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 _parent (From Bio::Root::Object.pm> Object reference for the owner of this IOManager.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 MODIFICATION NOTES:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 -------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 17 Feb 1999, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 * Using $Global::TIMEOUT_SECS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121 3 Feb 1999, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 * Added timeout support to read().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 * Moved the FileHandle creation code out of read() and into
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 Bio::Root::Utilties since it's of more general use.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 24 Nov 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 * Modified read(), compress(), and uncompress() to properly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 deal with file ownership issues.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 19 Aug 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131 * Fixed bug in display(), which wasn't returning true (1).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 0.023, 20 Jul 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 * read() can now use a supplied FileHandle or GLOB ref (\*IN).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 * A few other touch-ups in read().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 0.022, 16 Jun 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 * read() now terminates reading when a supplied &$func_ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 returns false.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 0.021, May 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 * Refined documentation to use 5.004 pod2html.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 * Properly using typglob refs as necessary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 (e.g., set_display(), set_fh()).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 0.031, 2 Sep 1998, sac:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 * Doc changes only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149