Bio::R...lities(3pm)
β¨ NAME β¨
Bio::Root::Utilities β general-purpose utilities π
okay so real talk bestie, this is the manual page for Bio::Root::Utilities(3pm) from the User Contributed Perl Documentation, and it's literally a lil grab-bag of helpers that any Perl script might want. iconic behavior. π
πΈ SYNOPSIS πΈ
π¦ Object Creation π¦
# Using the supplied singleton object:
use Bio::Root::Utilities qw(:obj);
$Util->some_method();
# Create an object manually:
use Bio::Root::Utilities;
my $util = Bio::Root::Utilities->new();
$util->some_method();
$date_stamp = $Util->date_format('yyy-mm-dd');
$clean = $Util->untaint($dirty);
$compressed = $Util->compress('/home/me/myfile.txt')
my ($mean, $stdev) = $Util->mean_stdev( @data );
$Util->authority("me@example.com");
$Util->mail_authority("Something you should know about...");
...and a host of other methods. See below.
π DESCRIPTION π
So what is this thing? It hands you general-purpose utilities that could be of potential interest to literally any Perl script out there. no gatekeeping. β¨
The :obj tag is a convenience β it imports a $Util symbol into your namespace, and that symbol represents a Bio::Root::Utilities object. That saves you from having to create your own Bio::Root::Utilities object via Bio::Root::Utilities->new(), and it saves you from prefixing every single method call with Bio::Root::Utilities. But honestly? If you want to do those things, go off, it's totally allowed. π«Ά And since there should normally not be a need for a script to have more than one Bio::Root::Utilities object, this module comes with its own singleton. periodt. π
π¦ INSTALLATION π¦
This module is included with the central Bioperl distribution:
http://www.bioperl.org/wiki/Getting_BioPerl
ftp://bio.perl.org/pub/DIST
Just follow the installation instructions included in the README file. easy. π
π DEPENDENCIES π
It inherits from Bio::Root::Root, and it uses Bio::Root::IO and Bio::Root::Exception. π
It also relies on external executables for file compression/uncompression and for sending mail. No paths to those are hard coded β they get located as needed. β¨
π SEE ALSO π
http://bioperl.orgβ Bioperl Project Homepage π
π ACKNOWLEDGEMENTS π
This module was originally developed under the auspices of the Saccharomyces Genome Database: http://www.yeastgenome.org/ π
π AUTHOR π
Steve Chervitz π
ποΈ date_format ποΈ
- Title β
date_format - Usage β
$Util->date_format( [FMT], [DATE]) - Purpose β here's the tea:
- Get a string containing the formatted date or time, taken at the moment this routine gets invoked. β°
- It's a way to avoid using
date. - It's an interface to
localtime(). - It interconverts some date formats.
- (For additional functionality, go use
Date::ManiporDate::DateCalc, available from CPAN.)
- Example:
$Util->date_format();
$date = $Util->date_format('yyyy-mmm-dd', '11/22/92');
- Returns β String (unless
'list'is provided as an argument, see below):
'yyyy-mm-dd' = 1996-05-03 # default format.
'yyyy-dd-mm' = 1996-03-05
'yyyy-mmm-dd' = 1996-May-03
'd-m-y' = 3-May-1996
'd m y' = 3 May 1996
'dmy' = 3may96
'mdy' = May 3, 1996
'ymd' = 96may3
'md' = may3
'year' = 1996
'hms' = 23:01:59 # when not converting a format, 'hms' can be
# tacked on to any of the above options
# to add the time stamp: eg 'dmyhms'
'full' | 'unix' = UNIX-style date: Tue May 5 22:00:00 1998
'list' = the contents of localtime(time) in an array.
- Argument β (all of them are optional):
FMT = yyyy-mm-dd | yyyy-dd-mm | yyyy-mmm-dd |
mdy | ymd | md | d-m-y | hms | hm
('hms' may be appended to any of these to
add a time stamp)
DATE = String containing date to be converted.
Acceptable input formats:
12/1/97 (for 1 December 1997)
1997-12-01
1997-Dec-01
- Throws β nothing listed here. literally empty. we love a chill method. π
- Comments:
If you don't care about formatting or using backticks, you can
always use: $date = `date`;
For more features, use Date::Manip.pm, (which I should
probably switch to...)
- See Also β
file_date(),month2num()
π month2num π
- Title β
month2num - Purpose β converts a string containing the name of a month into the integer that represents that month's number in the year. π’
- Example β
$Util->month2num("march"); # returns 3 - Argument β the string you pass in must contain at least the first three characters of the month's name. Case insensitive, so don't stress about caps. β¨
- Throws β Exception if the conversion fails. π
π’ num2month π’
- Title β
num2month - Purpose β does the exact opposite of
month2num. It converts a number into a string containing the name of a month. - Example β
$Util->num2month(3); # returns 'Mar' - Throws β Exception if the supplied number is out of range. π
ποΈ compress ποΈ
- Title β
compress - Usage:
$Util->compress(full-path-filename);
$Util->compress(<named parameters>);
- Purpose β compress a file. ποΈ
- Example:
$Util->compress("/usr/people/me/data.txt");
$Util->compress(-file=>"/usr/people/me/data.txt",
-tmp=>1,
-outfile=>"/usr/people/share/data.txt.gz",
-exe=>"/usr/local/bin/fancyzip");
- Returns β String containing the full, absolute path to the compressed file. π
- Argument β Named parameters (case-insensitive):
-FILEβ String (name of the file to be compressed, full path). If the supplied filename ends with'.gz'or'.Z', that extension will be removed before attempting to compress.- Optional:
-TMPβ boolean. If true, (or if the user is not the owner of the file) the file is compressed to a temp file. If false, the file may be clobbered with the compressed version (that's if you're using a utility likegzip, which is the default). β οΈ careful bestie-OUTFILEβ String (name of the output compressed file, full path).-EXEβ name of the executable for the compression utility to use. It will supersede those in@COMPRESSION_UTILSdefined by this module. If the absolute path to the executable is not provided, it will be searched for in thePATHenv variable.
- Throws β Exception if the file cannot be compressed. Also, if the user is not the owner of the file, it generates a warning and compresses to a tmp file. Wanna dodge that warning? Use the
-ofile test operator and call this function with-TMP=>1. π - Comments β It attempts to compress using the utilities defined in the
@COMPRESSION_UTILSdefined by this module, in the order defined. The first utility found to be executable is the one that gets used. Any utility defined in the optional-EXEparam gets tested for executability first. And to minimize security risks, the-EXEparameter value is untained using theuntaint()method of this module (in 'relaxed' mode, to permit path separators). - See Also β
uncompress()
π uncompress π
- Title β
uncompress - Usage:
$Util->uncompress(full-path-filename);
$Util->uncompress(<named parameters>);
- Purpose β uncompress a file. π
- Example:
$Util->uncompress("/usr/people/me/data.txt");
$Util->uncompress(-file=>"/usr/people/me/data.txt.gz",
-tmp=>1,
-outfile=>"/usr/people/share/data.txt",
-exe=>"/usr/local/bin/fancyzip");
- Returns β String containing the full, absolute path to the uncompressed file. π
- Argument β Named parameters (case-insensitive):
-FILEβ String (name of the file to be uncompressed, full path). If the supplied filename ends with'.gz'or'.Z', that extension will be removed before attempting to uncompress.- Optional:
-TMPβ boolean. If true, (or if the user is not the owner of the file) the file is uncompressed to a temp file. If false, the file may be clobbered with the uncompressed version (that's if you're using a utility likegzip, which is the default). β οΈ-OUTFILEβ String (name of the output uncompressed file, full path).-EXEβ name of the executable for the uncompression utility to use. It will supersede those in@UNCOMPRESSION_UTILSdefined by this module. If the absolute path to the executable is not provided, it will be searched for in thePATHenv variable.
- Throws β Exception if the file cannot be uncompressed. Also, if the user is not the owner of the file, it generates a warning and uncompresses to a tmp file. To avoid that warning, use the
-ofile test operator and call this function with-TMP=>1. π - Comments β It attempts to uncompress using the utilities defined in the
@UNCOMPRESSION_UTILSdefined by this module, in the order defined. The first utility found to be executable is the one that gets used. Any utility defined in the optional-EXEparam gets tested for executability first. And to minimize security risks, the-EXEparameter value is untained using theuntaint()method of this module (in 'relaxed' mode, to permit path separators). - See Also β
compress()
π°οΈ file_date π°οΈ
- Title β
file_date - Usage β
$Util->file_date( filename [,date_format]) - Purpose β obtains the date of a given file. It gives you flexible formatting via
date_format(). π - Returns β String = date of the file as:
yyyy-mm-dd(e.g.,1997-10-15) - Argument β
filename= string, full path name for the file.date_format= string, desired format for the date (seedate_format()). Default =yyyy-mm-dd - Thows β Exception if no file is provided or the file does not exist. (yep, the field is spelled "Thows" in the original, we keep it π)
- Comments β It uses the
mtimefield as obtained bystat().
untaint π
- Title: untaint
- Purpose: To remove nasty shell characters from untrusted data and allow a script to run with the
-Tswitch.- Potentially dangerous shell meta characters:
&;`'\"|*?!~<>^()[]{}$\n\r
- Accept only the first block of contiguous characters:
- Default allowed chars =
"-\w.', ()" - If
$relaxis true ="-\w.', ()\/=%:^<>*"
- Usage:
$Util->untaint($value, $relax) - Returns: String containing the untained data.
- Argument:
$value= string;$relax= boolean - Comments:
- This general
untaint()function may not be appropriate for every situation. - To allow only a more restricted subset of special characters (for example, untainting a regular expression), then using a custom untainting mechanism would permit more control.
- Note that special trusted vars (like
$0) require untainting.
- This general
mean_stdev β¨
- Title: mean_stdev
- Usage:
($mean, $stdev) = $Util->mean_stdev( @data ) - Purpose: Calculates the mean and standard deviation given a list of numbers.
- Returns: 2-element list (mean, stdev)
- Argument: list of numbers (ints or floats)
- Thows: n/a (yes, it's a typo, but we keep it exactly π)
count_files ποΈ
- Title: count_files
- Purpose: Counts the number of files/directories within a given directory.
- Also reports the number of text and binary files in the dir as well as names of these files and directories.
- Usage:
count_files(\%data)$data{-DIR}is the directory to be analyzed. Default is./$data{-PRINT}=0|1; if1, prints results toSTDOUT, (default=0).
- Argument: Hash reference (empty)
- Returns: n/a;
- Modifies the hash ref passed in as the sole argument.
$$href{-TOTAL}scalar$$href{-NUM_TEXT_FILES}scalar$$href{-NUM_BINARY_FILES}scalar$$href{-NUM_DIRS}scalar$$href{-T_FILE_NAMES}array ref$$href{-B_FILE_NAMES}array ref$$href{-DIRNAMES}array ref
- Modifies the hash ref passed in as the sole argument.
file_info π§
- Title: file_info
- Purpose: Obtains a variety of date for a given file.
- Provides an interface to Perl's
stat().
- Provides an interface to Perl's
- Status: Under development. Not ready. Don't use!
β οΈ Bestie, this one is literally not ready. Do not use it, periodt.
delete ποΈ
- Title: delete
- Purpose: (empty, bestie, it's literally blank πΆ)
create_filehandle π
- Usage:
$object->create_filehandle(<named parameters>); - Purpose: Create a
FileHandleobject from a file orSTDIN.- Mainly used as a helper method by
read()andget_newline().
- Mainly used as a helper method by
- Example:
$data = $object->create_filehandle(-FILE =>'usr/people/me/data.txt') - Argument: Named parameters (case-insensitive):
- (all optional)
-CLIENT=> object reference for the object submitting the request. Default =$Util.-FILE=> string (full path to file) or a reference to aFileHandleobject or typeglob. This is an optional parameter (if not defined,STDINis used).
- (all optional)
- Returns: Reference to a
FileHandleobject. - Throws: Exception if cannot open a supplied file or if supplied with a reference that is not a
FileHandleref. - Comments:
- If given a
FileHandlereference, this method simply returns it. - This method assumes the user wants to read ascii data. So, if the file is binary, it will be treated as a compressed (gzipped) file and access it using
gzip -ce. The problem here is that not all binary files are necessarily compressed. Therefore, this method should probably have a-modeparameter to specify ascii or binary.
- If given a
- See Also:
get_newline()
get_newline π
- Usage:
$object->get_newline(<named parameters>); - Purpose: Determine the character(s) used for newlines in a given file or input stream. Delegates to
Bio::Root::Utilities::get_newline() - Example:
$data = $object->get_newline(-CLIENT => $anObj,
-FILE =>'usr/people/me/data.txt')
- Argument: Same arguemnts as for
create_filehandle(). - Returns: Reference to a
FileHandleobject. - Throws: Propagates any exceptions thrown by
Bio::Root::Utilities::get_newline(). - See Also:
taste_file(),create_filehandle()
taste_file π
- Usage:
$object->taste_file( <FileHandle> );- Mainly a utility method for
get_newline().
- Purpose: Sample a filehandle to determine the character(s) used for a newline.
- Example:
$char = $Util->taste_file($FH) - Argument: Reference to a
FileHandleobject. - Returns: String containing an octal represenation of the newline character string.
- Unix =
"\012"("\n") - Win32 =
"\012\015"("\r\n") - Mac =
"\015"("\r")
- Unix =
- Throws:
- Exception if no input is read within
$TIMEOUT_SECSseconds. - Exception if argument is not
FileHandleobject reference. - Warning if cannot determine neewline char(s).
- Exception if no input is read within
- Comments: Based on code submitted by Vicki Brown (vlb@deltagen.com).
- See Also:
get_newline()
file_flavor π¦
- Usage:
$object->file_flavor( <filename> ); - Purpose: Returns the 'flavor' of a given file (unix, dos, mac)
- Example:
print "$file has flavor: ", $Util->file_flavor($file); - Argument: filename = string, full path name for file
- Returns: String describing flavor of file and handy info about line endings.
- One of these is returned:
- unix (
\nor012or^J) - dos (
\r\nor015,012or^M^J) - mac (
\ror015or^M) - unknown
- unix (
- One of these is returned:
- Throws:
- Exception if argument is not a file
- Propagates any exceptions thrown by
Bio::Root::Utilities::get_newline().
- See Also:
get_newline(),taste_file()
mail_authority π§
- Title: mail_authority
- Usage:
$Util->mail_authority( $message ) - Purpose: Syntactic sugar to send email to
$Bio::Root::Global::AUTHORITY - See Also:
send_mail()
authority π
- Title: authority
- Usage:
$Util->authority('admin@example.com'); - Purpose: Set/get the email address that should be notified by
mail_authority() - See Also:
mail_authority()
send_mail π
- Title: send_mail
- Usage:
$Util->send_mail( named_parameters ) - Purpose: Provides an interface to
mailorsendmail, if available - Returns: n/a
- Argument: Named parameters: (case-insensitive)
-TO=> e-mail address to send to-SUBJ=> subject for message (optional)-MSG=> message to be sent (optional)-CC=> cc: e-mail address (optional)
- Thows: Exception if
TO:address appears bad or is missing.- Exception if mail cannot be sent.
- Comments:
- Based on TomC's tip at:
- Using default
From:information.sendmailoptions used:-t: ignore the address given on the command line and getTo:address from the e-mail header.-oi: preventssend_mailfrom ending the message if it finds a period at the start of a line.
- See Also:
mail_authority()
find_exe π
- Title: find_exe
- Usage:
$Util->find_exe(name); - Purpose: Locate an executable (for use in a
system()call, e.g.)) - Example:
$Util->find_exe("gzip"); - Returns: String containing executable that passes the
-xtest.- Returns undef if an executable of the supplied name cannot be found.
- Argument: Name of executable to be found.
- Can be a full path. If supplied name is not executable, an executable of that name will be searched in all directories in the currently defined
PATHenvironment variable.
- Can be a full path. If supplied name is not executable, an executable of that name will be searched in all directories in the currently defined
- Throws: No exceptions, but issues a warning if multiple paths are found for a given name. The first one is used.
- Comments:
- TODO: Confirm functionality on all bioperl-supported platforms.
- May get tripped up by variation in path separator character used for splitting
ENV{PATH}.
- See Also: (empty)
yes_reply β
- Title: yes_reply()
- Usage:
$Util->yes_reply( [query_string]); - Purpose: To test an
STDINinput value for affirmation. - Example:
print +( $Util->yes_reply('Are you ok') ? "great!\n" : "sorry.\n" );
$Util->yes_reply('Continue') || die;
- Returns: Boolean, true (1) if input string begins with 'y' or 'Y'
- Argument: query_string = string to be used to prompt user (optional)
- If not provided, 'Yes or no' will be used.
- Question mark is automatically appended.
request_data π
- Title: request_data()
- Usage:
$Util->request_data( [value_name]); - Purpose: To request data from a user to be entered via keyboard (
STDIN). - Example:
$name = $Util->request_data('Name');
# User will see: % Enter Name:
- Returns: String, (data entered from keyboard, sans terminal newline.)
- Argument: value_name = string to be used to prompt user.
- If not provided, 'data' will be used, (not very helpful).
- Question mark is automatically appended.
quit_reply β
- Title: quit_reply
- Usage: (empty)
- Purpose: (empty)
verify_version π’
- Purpose: Checks the version of Perl used to invoke the script.
- Aborts program if version is less than the given argument.
- Usage:
verify_version('5.000')
And that's the tea, bestie! π«Ά This page is from perl v5.32.1, dated 2021-08-15, and it's part of Bio::R...lities(3pm). Stay slaying, and may your newlines always be unix-flavored! πβ¨
π¦ where this page comes from
- debian bookworm: libbio-perl-perl 1.7.8-1 Β· Perl
- debian trixie: libbio-perl-perl 1.7.8-1 Β· Perl
- ubuntu jammy: libbio-perl-perl 1.7.8-1 Β· Perl
- ubuntu noble: libbio-perl-perl 1.7.8-1 Β· Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms