annotate variant_effect_predictor/Bio/Root/IOManager.pm @ 1:d6778b5d8382 draft default tip

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