aboutsummaryrefslogtreecommitdiff
path: root/challenge-028/feng-chang/perl5
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2019-10-02 22:44:54 +0800
committer冯昶 <fengchang@novel-supertv.com>2019-10-02 22:44:54 +0800
commit86efefd71397ec127c8534fba4e3bb616ae8abf8 (patch)
tree29647c1e6bd735bb04f178ea82d4a50a64056377 /challenge-028/feng-chang/perl5
parent44b0834328f2aacdbbb75e52a9b6f899f110edcb (diff)
downloadperlweeklychallenge-club-86efefd71397ec127c8534fba4e3bb616ae8abf8.tar.gz
perlweeklychallenge-club-86efefd71397ec127c8534fba4e3bb616ae8abf8.tar.bz2
perlweeklychallenge-club-86efefd71397ec127c8534fba4e3bb616ae8abf8.zip
challenge 028
Diffstat (limited to 'challenge-028/feng-chang/perl5')
-rwxr-xr-xchallenge-028/feng-chang/perl5/ch-1.pl30
-rwxr-xr-xchallenge-028/feng-chang/perl5/ch-2.pl17
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-028/feng-chang/perl5/ch-1.pl b/challenge-028/feng-chang/perl5/ch-1.pl
new file mode 100755
index 0000000000..afc32c598b
--- /dev/null
+++ b/challenge-028/feng-chang/perl5/ch-1.pl
@@ -0,0 +1,30 @@
+#!/bin/env perl
+
+use Modern::Perl;
+
+die "usage: $0 <file-name>\n" unless @ARGV == 1;
+
+open(my $fh, '<', $ARGV[0]) or die "cannot open $ARGV[0] for read\n";
+my $buf;
+read $fh, $buf, 16;
+
+my $be_ascii = 1;
+for my $c (split //, $buf) {
+ unless (is_ascii($c)) {
+ $be_ascii = 0;
+ last;
+ }
+}
+
+print 'the file content is ';
+say $be_ascii ? 'ascii' : 'binary';
+
+close $fh;
+
+sub is_ascii {
+ my $c = ord(shift);
+
+ return 1 if 9 <= $c and $c <= 13;
+ return 1 if 32 <= $c and $c <= 126;
+ return 0;
+}
diff --git a/challenge-028/feng-chang/perl5/ch-2.pl b/challenge-028/feng-chang/perl5/ch-2.pl
new file mode 100755
index 0000000000..1633cfb362
--- /dev/null
+++ b/challenge-028/feng-chang/perl5/ch-2.pl
@@ -0,0 +1,17 @@
+#!/bin/env perl
+
+use Modern::Perl;
+use Date::Manip;
+
+use sigtrap 'handler' => \&quit_handler, 'INT';
+
+BEGIN { $| = 1 }
+
+while (1) {
+ print "\r", UnixDate(ParseDate('now'), '%H:%M:%S');
+}
+
+sub quit_handler {
+ say "\r", UnixDate(ParseDate('now'), '%H:%M:%S'), ' ';
+ exit 0;
+}