#! /usr/bin/env perl

#### regex_delimiters

use strict;
use warnings;

# common delimiters
print "a: ";
my $a = "foo";
print $a, " - ";
$a =~ s/foo/bar/;
print $a, "\n";

print "b: ";
my $b = "foo";
print $b, " - ";
$b =~ s!foo!bar!;
print $b, "\n";

print "c: ";
my $c = "foo";
print $c, " - ";
$c =~ s@foo@bar@;
print $c, "\n";

print "d: ";
my $d = "foo";
print $d, " - ";
$d =~ s\foo\bar\;
print $d, "\n";

print "\n";

# balanced delimiters
print "e: ";
my $e = "foo";
print $e, " - ";
$e =~ s{foo}{bar};
print $e, "\n";

print "f: ";
my $f = "foo";
print $f, " - ";
$f =~ s(foo)(bar);
print $f, "\n";

print "g: ";
my $g = "foo";
print $g, " - ";
$g =~ s<foo><bar>;
print $g, "\n";

print "h: ";
my $h = "foo";
print $h, " - ";
$h =~ s[foo][bar];
print $h, "\n";

print "\n";

# balanced delimiters with whitespace
print "i: ";
my $i = "foo";
print $i, " - ";
$i =~ s{foo} {bar};
print $i, "\n";

print "j: ";
my $j = "foo";
print $j, " - ";
$j =~ s<foo>		<bar>;
print $j, "\n";

print "k: ";
my $k = "foo";
print $k, " - ";
$k =~
	s(foo)

	(bar);
print $k, "\n";

print "\n";

# mixed delimiters
print "l: ";
my $l = "foo";
print $l, " - ";
$l =~ s{foo} <bar>;
print $l, "\n";

print "m: ";
my $m = "foo";
print $m, " - ";
$m =~ s(foo) !bar!;
print $m, "\n";

print "n: ";
my $n = "foo";
print $n, " - ";
$n =~ s[foo] $bar$;
print $n, "\n";

print "\n";

# /x modifier
print "o: ";
my $o = "foo";
print $o, " - ";
$o =~ s{
				foo
			 } {bar}x;
print $o, "\n";

print "p: ";
my $p = "foo";
print $p, " - ";
$p =~ s%
  foo
  %bar%x;
print $p, "\n";

###### perl_misc ########

# from http://gist.github.com/485595
use strict;
use warnings;
use Time::HiRes 'usleep';

for (1..5) {
    open my $in, '<', '/proc/sys/kernel/random/entropy_avail' or die;
    print <$in>;
    close $in;
    usleep 100_000;
}

# other miscellaneous tests of numbers separated by _
#usleep 100_000;
100_000_000;
my $nichts = 0.005_006;
print "$nichts\n";
my $nichts2 = 0.005_006_007;
print 900_800_700.005_006_007, $/;

# numbers from `man 1 perlnumber`
my $n;
$n = 1234;              # decimal integer
$n = 0b1110011;         # binary integer
$n = 01234;             # octal integer
$n = 0x1234;            # hexadecimal integer
$n = 12.34e-56;         # exponential notation
$n = "-12.34e56";       # number specified as a string
$n = "1234";            # number specified as a string

# other numbers
for (
    -9876,
    +8765,
    -9876.02,
    -9876.02e+10,
    +765_432e30,
    2002.,
    .2002,
) {
    print $_, "\n";
}

# operators on numbers
for (
    $n + 300,
    $n - 300,
    $n / 300 + 10,
    $n * 250 / 2.0,
    $n == 100,
    $n != 100,
    $n > 100,
    $n >= 100,
    $n < 100,
    $n <= 100,
    $n % 2,
    abs $n,
) {
    print $_, "\n";
}


