Blame


1 1ddd2d4e 2023-09-10 jrmu #!/usr/bin/perl
2 1ddd2d4e 2023-09-10 jrmu
3 1ddd2d4e 2023-09-10 jrmu # Write a program that prints today's date and the day of the week, but
4 1ddd2d4e 2023-09-10 jrmu # allows the user to choose to send the output to a file, a scalar, or both
5 1ddd2d4e 2023-09-10 jrmu # at the same time. No matter which one the user selects, send the output
6 1ddd2d4e 2023-09-10 jrmu # with a single print statement. If the user chooses to send the output to
7 1ddd2d4e 2023-09-10 jrmu # a scalar, at the end of the program print the scalar's value to standard
8 1ddd2d4e 2023-09-10 jrmu # output.
9 1ddd2d4e 2023-09-10 jrmu
10 1ddd2d4e 2023-09-10 jrmu use v5.24;
11 1ddd2d4e 2023-09-10 jrmu use warnings;
12 1ddd2d4e 2023-09-10 jrmu use strict;
13 1ddd2d4e 2023-09-10 jrmu use utf8;
14 1ddd2d4e 2023-09-10 jrmu use local::lib;
15 1ddd2d4e 2023-09-10 jrmu
16 1ddd2d4e 2023-09-10 jrmu use Getopt::Std;
17 1ddd2d4e 2023-09-10 jrmu use IO::Tee;
18 1ddd2d4e 2023-09-10 jrmu
19 1ddd2d4e 2023-09-10 jrmu my %opts;
20 1ddd2d4e 2023-09-10 jrmu getopts('sf:', \%opts);
21 1ddd2d4e 2023-09-10 jrmu my $fh;
22 1ddd2d4e 2023-09-10 jrmu my $string_ref;
23 1ddd2d4e 2023-09-10 jrmu if (!%opts) {
24 1ddd2d4e 2023-09-10 jrmu die "Usage: $0 [-s] [-f file]";
25 1ddd2d4e 2023-09-10 jrmu }
26 1ddd2d4e 2023-09-10 jrmu if ($opts{s} && $opts{f}) {
27 1ddd2d4e 2023-09-10 jrmu open my $sh, '>', \$string_ref;
28 1ddd2d4e 2023-09-10 jrmu open my $th, '>', $opts{f} or die "Unable to open '$opts{f}': $!";
29 1ddd2d4e 2023-09-10 jrmu $fh = IO::Tee->new($sh, $th);
30 1ddd2d4e 2023-09-10 jrmu } elsif ($opts{s}) {
31 1ddd2d4e 2023-09-10 jrmu open $fh, '>', \$string_ref;
32 1ddd2d4e 2023-09-10 jrmu } elsif ($opts{f}) {
33 1ddd2d4e 2023-09-10 jrmu open $fh, '>', $opts{f} or die "Unable to open '$opts{f}': $!";
34 1ddd2d4e 2023-09-10 jrmu }
35 1ddd2d4e 2023-09-10 jrmu my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
36 1ddd2d4e 2023-09-10 jrmu my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
37 1ddd2d4e 2023-09-10 jrmu my @days = qw(Sun Mon Tue Wed Thu Fri Sat);
38 1ddd2d4e 2023-09-10 jrmu
39 1ddd2d4e 2023-09-10 jrmu printf {$fh} ("%s %s %s %02d:%02d:%02d %4d",$days[$wday],$months[$mon],$mday,$hour,$min,$sec,$year+1900);
40 1ddd2d4e 2023-09-10 jrmu
41 1ddd2d4e 2023-09-10 jrmu if ($opts{s}) {
42 1ddd2d4e 2023-09-10 jrmu open my $sh, '<', \$string_ref;
43 1ddd2d4e 2023-09-10 jrmu my $str = <$sh>;
44 1ddd2d4e 2023-09-10 jrmu printf("Scalar: %s\n", $str);
45 1ddd2d4e 2023-09-10 jrmu }