mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-01 10:52:24 +01:00
Add Perl test file
This commit is contained in:
committed by
David Peter
parent
eeea53759b
commit
bf07b0be58
157
tests/syntax-tests/source/Perl/test.pl
Normal file
157
tests/syntax-tests/source/Perl/test.pl
Normal file
@@ -0,0 +1,157 @@
|
||||
# Perl Test
|
||||
# By saul-bt
|
||||
# PUBLIC DOMAIN
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
## REFERENCES ##
|
||||
my @colors = ("red", "green", "blue");
|
||||
|
||||
# '\' can be used to get a reference
|
||||
my $colorsRef = \@colors;
|
||||
|
||||
my %superHash = (
|
||||
"colors" => $colorsRef,
|
||||
# Also you can create an anonymous
|
||||
# array with '[]' ({} for hashes)
|
||||
# that returns the reference
|
||||
"numbers" => [1, 2, 3]
|
||||
);
|
||||
|
||||
# Now the hash stores something like
|
||||
# this: ("colors", ARRAY(0x...),
|
||||
# "numbers", ARRAY(0x...))
|
||||
|
||||
# And you can access these arrays with:
|
||||
print qq(@{$superHash{"colors"}}\n);
|
||||
|
||||
# To print an element:
|
||||
print qq(${$superHash{"numbers"}}[0]\n);
|
||||
print $superHash{"colors"} -> [0], "\n";
|
||||
|
||||
# Size of array:
|
||||
print scalar @{$superHash{"colors"}};
|
||||
|
||||
|
||||
## ARRAYS ##
|
||||
%meh1 = (num => 0, val => 4);
|
||||
%meh2 = (
|
||||
num => 1,
|
||||
val => 3
|
||||
);
|
||||
|
||||
@mehs = (\%meh1, \%meh2);
|
||||
|
||||
print $mehs[0]{val};
|
||||
|
||||
|
||||
## HANDLERS & HEREDOC ##
|
||||
print "What's your name? ";
|
||||
$name = <STDIN>;
|
||||
chomp($name);
|
||||
|
||||
print <<WELCOME;
|
||||
|
||||
Hi $name, Where are you from?
|
||||
WELCOME
|
||||
|
||||
$place = <STDIN>;
|
||||
chomp($place);
|
||||
|
||||
print <<GOODBYE;
|
||||
|
||||
Oh, you are $name from $place...
|
||||
I hear that $place is a beautiful place.
|
||||
It's nice meet people like you $name.
|
||||
I hope to see you soon :)
|
||||
|
||||
Bye $name.
|
||||
GOODBYE
|
||||
|
||||
open (content, "<", "file.txt");
|
||||
|
||||
for $line (<content>) {
|
||||
print $line;
|
||||
}
|
||||
|
||||
print "What are you looking for? ";
|
||||
$numResults = 0;
|
||||
$word = <STDIN>;
|
||||
chomp($word);
|
||||
|
||||
for $line (<>) {
|
||||
if ($line =~ m/\b$word\b/i) {
|
||||
$numResults += 1;
|
||||
print "[$word FOUND]> $line\n";
|
||||
next;
|
||||
}
|
||||
print $line;
|
||||
}
|
||||
|
||||
print "\n\n=== There are $numResults coincidences ===";
|
||||
|
||||
|
||||
## SCRIPT ARGUMENTS ##
|
||||
$nargs = $#ARGV + 1;
|
||||
|
||||
print "There are $nargs arguments:\n";
|
||||
|
||||
for $arg (@ARGV) {
|
||||
print "- $arg\n";
|
||||
}
|
||||
|
||||
## REGEX STUFF ##
|
||||
$string = "Perl is cool";
|
||||
|
||||
if ($string =~ m/[Pp]erl/) {
|
||||
print "Yeah";
|
||||
}
|
||||
elsif ($string =~ m(perl)i) {
|
||||
print "Sad";
|
||||
}
|
||||
else {
|
||||
print "MEH";
|
||||
}
|
||||
|
||||
# From my dummy recreation of printf
|
||||
sub checkTypes {
|
||||
my @percents = @{scalar(shift)};
|
||||
my @args = @{scalar(shift)};
|
||||
my $size = scalar(@percents);
|
||||
|
||||
foreach my $n (0..$size - 1) {
|
||||
my $currArg = $args[$n];
|
||||
my $currFormat = substr($percents[$n],-1);
|
||||
|
||||
$currFormat eq 's' && $currArg =~ m/^\D+$/ ||
|
||||
$currFormat =~ m/[dx]/ && $currArg =~ m/^\d+$/ ||
|
||||
$currFormat eq 'f' && $currArg =~ m/^\d+(?:\.\d+)?$/ or
|
||||
die "'$currArg' can't be formatted as '$currFormat'";
|
||||
}
|
||||
}
|
||||
|
||||
## WEIRD STUFF (JAPH) ##
|
||||
# VMS <3
|
||||
not exp log srand xor s qq qx xor
|
||||
s x x length uc ord and print chr
|
||||
ord for qw q join use sub tied qx
|
||||
xor eval xor print qq q q xor int
|
||||
eval lc q m cos and print chr ord
|
||||
for qw y abs ne open tied hex exp
|
||||
ref y m xor scalar srand print qq
|
||||
q q xor int eval lc qq y sqrt cos
|
||||
and print chr ord for qw x printf
|
||||
each return local x y or print qq
|
||||
s s and eval q s undef or oct xor
|
||||
time xor ref print chr int ord lc
|
||||
foreach qw y hex alarm chdir kill
|
||||
exec return y s gt sin sort split
|
||||
|
||||
@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
|
||||
@p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
|
||||
($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
|
||||
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print
|
||||
|
||||
''=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@(@@+@)'
|
||||
^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').',"})')
|
Reference in New Issue
Block a user