Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.47 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use POSIX qw(strftime);
  4. use Getopt::Long qw(GetOptions);
  5. use IO::Handle;
  6. use Data::Dumper;
  7. STDOUT->autoflush();
  8.  
  9. my $time;
  10. my $gentable;
  11. my $X_size = 8;
  12. my $Y_size = 11;
  13. my $_digits =
  14. "
  15. +12345678|12345678|12345678|12345678|12345678|12345678|12345678|12345678|12345678|12345678|12345678|
  16. 1|...11...|..2222..|..3333..|....44..|.555555.|..6666..|.777777.|..8888..|..9999..|..0000..|........|
  17. 2|..111...|.22..22.|.3...33.|...444..|.5....5.|.66.....|.....77.|.88..88.|.99..99.|.00..00.|...::...|
  18. 3|.1111...|....22..|.....33.|..4..4..|.55.....|.6......|....77..|..8..8..|.9....9.|.0....0.|..::::..|
  19. 4|...11...|...22...|...33...|.4...4..|.55555..|.66666..|...77...|...88...|.99..99.|.0....0.|...::...|
  20. 5|...11...|..22....|...33...|.44444..|.....55.|.66..66.|..77....|...88...|..99999.|.0....0.|........|
  21. 6|...11...|.22.....|.....33.|....44..|......5.|.6....6.|.77.....|..8..8..|......9.|.0....0.|...::...|
  22. 7|.1.11.1.|.2....2.|.3...33.|....44..|.5...55.|.66..66.|.77.....|.88..88.|.....99.|.00..00.|..::::..|
  23. 8|.111111.|.222222.|..3333..|..44444.|..5555..|..6666..|.77.....|..8888..|..9999..|..0000..|...::...|
  24. ";
  25.  
  26. GetOptions(
  27.     'gentable|g' => \$gentable,
  28.     'height|x=i' => \$X_size,
  29.     'width|y=i'  => \$Y_size) or die;
  30.  
  31. if ($gentable) {
  32.     gen_helper_table($X_size,$Y_size);
  33. } else { show_ascii_clock() };
  34.  
  35. sub show_ascii_clock {
  36.  
  37.     my @display_matrix;
  38.     my @display_rows = split(/\n/,$_digits);
  39.    
  40.     @$display_rows = shift(@display_rows);  # get rid of the mess
  41.     @$display_rows = shift(@display_rows);  # must be cleaner solution
  42.                                             # but i want to sleep, it's 3AM;
  43.    
  44.     for (;;) {
  45.         $time = strftime "%H:%M:%S", localtime;
  46.        
  47.         for (@display_rows) {
  48.             my @array = split(/\|/,$_);
  49.             foreach(split(//,$time))
  50.             {
  51.                 if ($_ =~ /^[1-9]/) {
  52.                     print $array[$_];
  53.                 } elsif ($_ =~ /0/) {
  54.                     print $array[$Y_size-1];
  55.                 } else {
  56.                     print $array[$Y_size];
  57.                 }
  58.             }
  59.             print "\n";
  60.                    
  61.         }
  62.         sleep 1;
  63.         system("tput clear"); # clear the terminal
  64.     }
  65. };
  66.  
  67. sub gen_helper_table { # use cat > *.txt
  68.     my($X,$Y) = @_;
  69.     my $line = 1;
  70.    
  71.     print " " x length($X);
  72.     print "+";
  73.    
  74.     foreach (1..$Y) { # gen first line
  75.         foreach (1..$X) {
  76.             $_ = $_ + 0;
  77.             print $_ % 10;
  78.             $_++;
  79.         }
  80.         print "|";
  81.     }
  82.     print "\n";
  83.     foreach (1..$X) {
  84.         if (length($X)>1) {
  85.             my $indent = length($X)-length($line);
  86.             print " " x $indent;
  87.         }
  88.         print $line;
  89.         foreach (1..$Y) {
  90.             print "|";
  91.             print "." x $X;
  92.         }
  93.         print "|\n";
  94.         $line++;
  95.     }
  96. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement