commit - b1d17a526fbc80fe1a7caf5b1801d441c2c65b37
commit + 3bc13fbbeed050a5635b42ea44aa69410ec34cf9
blob - 0257da8cb85ccd468a9e1d1b94742073d9d3fe57
blob + d5ce0cde1c5086dfd065d28a2c30aeef13e5b49b
--- lib/IRCNOW/IO.pm
+++ lib/IRCNOW/IO.pm
our @EXPORT_OK = qw(
readarray readstr writefile appendfile
- debug NONE INFO ERRORS WARNINGS ALL $dbLevel
+ debug NONE INFO ERRORS WARNINGS ALL $verbosity
+ date gettime
+ mail
);
# create debug tag so you can import the debug sub and messages
# this enables loading lists of exports by tag like so:
our %EXPORT_TAGS = (
DEBUG=>[qw(debug NONE INFO ERRORS WARNINGS ALL $verbosity)],
FILEIO=>[qw(readarray readstr writefile appendfile)],
+ DateTime=>[qw(date gettime)],
+ eMail=>[qw(mail)],
);
-Exporter::export_ok_tags('debug', '$verbosity');
+Exporter::export_ok_tags('debug', '$verbosity', 'DateTime', 'eMail');
+
use File::Copy qw(copy);
use File::Basename;
close $fh;
}
+
+
+#######################################################################################
+# Date/time Functions #
+#######################################################################################
+# Returns date in YYYYMMDD format
+sub date {
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
+ my $localtime = sprintf("%04d%02d%02d", $year+1900, $mon+1, $mday);
+ return $localtime;
+}
+
+# Returns timestamp in "Day MM DD HH:MM:SS" format
+sub gettime {
+ my @months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
+ my @days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
+ my $localtime = sprintf("%s %s %d %02d:%02d:%02d", $days[$wday], $months[$mon], $mday, $hour, $min, $sec);
+ return $localtime;
+}
+
+
+#######################################################################################
+# email #
+#######################################################################################
+sub mail {
+ my( $from, $to, $fromname, $subject, $body )=@_;
+my $msg = <<"EOF";
+From: $from
+To: $to
+Subject: $subject
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+$body
+EOF
+open(my $fh, "| /usr/sbin/sendmail -tv -F '$fromname' -f $from") or die "Could not send mail $!";
+print $fh $msg;
+close $fh;
+return "true";
+}
+
+
+
+
1;
+=pod
+
+=head1 NAME
+
+IRCNOW::IO - Simple file read/write, date/time, and debug logging interfaces.
+
+=head1 SYNOPSIS
+
+ ## Export tags
+ use IRCNOW::IO qw(:DEBUG :FILEIO :DateTime :eMail);
+
+ ## Debug Constants - Used for setting verbosity level
+ use IRCNOW::IO qw(NONE INFO ERRORS WARNINGS ALL)
+
+ ## Debug variables
+ use IRCNOW::IO qw($verbosity);
+ $verbosity = ERRORS # set error level to print to stdout.
+ # This isn't needed as specifying the package name has the same effect.
+ IRCNOW::IO::$verbosity = ERROR;
+
+ ## Debug functions
+ use IRCNOW::IO qw(debug);
+ debug(ERROR, $msg);
+
+ ## FileIO Functions
+ use IRCNOW::IO qw(readarry readstr writefile appendfile);
+
+ ## Email Functions
+ use IRCNOW::IO qw(mail);
+
+ ## DateTime Functions
+ use IRCNOW::IO qw(date gettime);
+
+=head1 DESCRIPTION
+
+IRCNOW::IO contains simple functions for handling io to files, logs, email, and date/time formatting.
+These functions originated from the botnow irc bot.
+
+=head2 Debug Exports
+
+These exports implement the original debug($level,$msg) log output system from botnow. I new logging system is underdevelopent as IRCNOW::Logger. This system is provided for compatability with the original implementation.
+
+ #!/usr/bin/perl
+
+ use IRCNOW::IO qw(:DEBUG);
+
+ $verbosity = ERROR; # Only print messages at level $verbosity or below.
+
+ debug(INFO, "This is a message at level INFO (1)");
+ debug(ERRORS, "This is a message at level ERRORS (2)");
+ debug(WARNINGS, "This is a message at level WARNINGS (3)");
+ debug(ALL, "This is a message at level ALL (4)");
+
+=head2 File IO Exports
+
+ #!/usr/bin/perl
+ use IRCNOW::IO qw(:FILEIO);
+
+ my $filename="./inputfile.txt";
+
+ # Open file and read contents into array of lines without newline
+ my $lines=readarray($filename);
+
+ # Read from a file and return contents as a string
+ my $str = readstr($filename);
+
+ # Write String to a file - creating a backup first
+ writefile($filename, $str);
+
+ # Append string to a file.
+ appendfile($filename, $str);
+
+=head2 Date/Time Exports
+
+ #!/usr/bin/perl
+ use IRCNOW::IO qw(:DateTime);
+
+ # Return current date in YYYYMMDD format.
+ my $date = date();
+
+ # Returns timestamp in "Day MM DD HH:MM:SS" format
+ my $date = gettime();
+
+=head2 eMail exports
+
+ #!/usr/bin/perl
+ use IRCNOW::IO qw(:eMail);
+
+ # Send an email using a pipe to sendmail
+ mail( $from, $to, $fromname, $subject, $body);
+
+=cut