Linux cpanel2.daytoncreative.net 2.6.32-754.29.2.el6.x86_64 #1 SMP Tue May 12 17:39:04 UTC 2020 x86_64
Apache/2.4.43 (cPanel) OpenSSL/1.1.1g mod_bwlimited/1.4
Server IP : 70.62.220.67 & Your IP : 216.73.216.193
Domains :
Cant Read [ /etc/named.conf ]
User : michaelgreg
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
log /
perl-5.20.2 /
t /
op /
Delete
Unzip
Name
Size
Permission
Date
Action
64bitint.t
8.14
KB
-r--r--r--
2014-12-27 11:49
alarm.t
1.5
KB
-r--r--r--
2014-12-27 11:49
anonsub.t
1.7
KB
-r--r--r--
2014-12-27 11:49
append.t
1.58
KB
-r--r--r--
2014-12-27 11:49
args.t
2.12
KB
-r--r--r--
2014-12-27 11:49
array.t
12.32
KB
-r--r--r--
2014-12-27 11:49
array_base.t
720
B
-r--r--r--
2014-12-27 11:49
assignwarn.t
1.52
KB
-r--r--r--
2014-12-27 11:49
attrhand.t
1.01
KB
-r--r--r--
2014-12-27 11:49
attrproto.t
6.55
KB
-r--r--r--
2014-12-27 11:49
attrs.t
10.73
KB
-r--r--r--
2014-12-27 11:49
auto.t
2.36
KB
-r--r--r--
2014-12-27 11:49
avhv.t
4.04
KB
-r--r--r--
2014-12-27 11:49
bless.t
4.12
KB
-r--r--r--
2014-12-27 11:49
blocks.t
2.95
KB
-r--r--r--
2014-12-27 11:49
bop.t
12.82
KB
-r--r--r--
2014-12-27 11:49
caller.pl
3.75
KB
-r--r--r--
2014-12-27 11:49
caller.t
8.14
KB
-r--r--r--
2014-12-27 11:49
chars.t
1.73
KB
-r--r--r--
2014-12-27 11:49
chdir.t
6.68
KB
-r--r--r--
2014-12-27 11:49
chop.t
7.67
KB
-r--r--r--
2014-12-27 11:49
chr.t
2.48
KB
-r--r--r--
2014-12-27 11:49
closure.t
19.6
KB
-r--r--r--
2014-12-27 11:49
closure_test.pl
327
B
-r--r--r--
2014-12-27 11:49
concat2.t
1.41
KB
-r--r--r--
2014-12-27 11:49
cond.t
282
B
-r--r--r--
2014-12-27 11:49
context.t
404
B
-r--r--r--
2014-12-27 11:49
coreamp.t
29.17
KB
-r--r--r--
2014-12-27 11:49
coresubs.t
4.87
KB
-r--r--r--
2014-12-27 11:49
cproto.t
3.6
KB
-r--r--r--
2014-12-27 11:49
crypt.t
1.17
KB
-r--r--r--
2014-12-27 11:49
current_sub.t
1.71
KB
-r--r--r--
2014-12-27 11:49
dbm.t
1.54
KB
-r--r--r--
2014-12-27 11:49
defined.t
551
B
-r--r--r--
2014-12-27 11:49
defins.t
4.84
KB
-r--r--r--
2014-12-27 11:49
delete.t
2.93
KB
-r--r--r--
2014-12-27 11:49
die.t
1.99
KB
-r--r--r--
2014-12-27 11:49
die_except.t
1.57
KB
-r--r--r--
2014-12-27 11:49
die_exit.t
1.9
KB
-r--r--r--
2014-12-27 11:49
die_keeperr.t
1.57
KB
-r--r--r--
2014-12-27 11:49
die_unwind.t
1.69
KB
-r--r--r--
2014-12-27 11:49
do.t
8.35
KB
-r--r--r--
2014-12-27 11:49
dor.t
2.64
KB
-r--r--r--
2014-12-27 11:49
each.t
7.09
KB
-r--r--r--
2014-12-27 11:49
each_array.t
5.48
KB
-r--r--r--
2014-12-27 11:49
eval.t
13.92
KB
-r--r--r--
2014-12-27 11:49
evalbytes.t
989
B
-r--r--r--
2014-12-27 11:49
exec.t
4.36
KB
-r--r--r--
2014-12-27 11:49
exists_sub.t
2.09
KB
-r--r--r--
2014-12-27 11:49
exp.t
1.47
KB
-r--r--r--
2014-12-27 11:49
fh.t
790
B
-r--r--r--
2014-12-27 11:49
filehandle.t
564
B
-r--r--r--
2014-12-27 11:49
filetest.t
11.97
KB
-r--r--r--
2014-12-27 11:49
filetest_stack_ok.t
1.12
KB
-r--r--r--
2014-12-27 11:49
filetest_t.t
1.18
KB
-r--r--r--
2014-12-27 11:49
flip.t
868
B
-r--r--r--
2014-12-27 11:49
for.t
12.77
KB
-r--r--r--
2014-12-27 11:49
fork.t
8.8
KB
-r--r--r--
2014-12-27 11:49
fresh_perl_utf8.t
411
B
-r--r--r--
2014-12-27 11:49
getpid.t
1.61
KB
-r--r--r--
2014-12-27 11:49
getppid.t
3.13
KB
-r--r--r--
2014-12-27 11:49
glob.t
4.22
KB
-r--r--r--
2014-12-27 11:49
gmagic.t
5.97
KB
-r--r--r--
2014-12-27 11:49
goto.t
14.85
KB
-r--r--r--
2014-12-27 11:49
goto_xs.t
2.98
KB
-r--r--r--
2014-12-27 11:49
grent.t
4.46
KB
-r--r--r--
2014-12-27 11:49
grep.t
6.66
KB
-r--r--r--
2014-12-27 11:49
groups.t
11.15
KB
-r--r--r--
2014-12-27 11:49
gv.t
30.15
KB
-r--r--r--
2014-12-27 11:49
hash-rt85026.t
1.57
KB
-r--r--r--
2014-12-27 11:49
hash.t
6.02
KB
-r--r--r--
2014-12-27 11:49
hashassign.t
18.85
KB
-r--r--r--
2014-12-27 11:49
hashwarn.t
2.05
KB
-r--r--r--
2014-12-27 11:49
heredoc.t
2.29
KB
-r--r--r--
2014-12-27 11:49
inc.t
6.72
KB
-r--r--r--
2014-12-27 11:49
inccode-tie.t
338
B
-r--r--r--
2014-12-27 11:49
inccode.t
11.19
KB
-r--r--r--
2014-12-27 11:49
incfilter.t
7.33
KB
-r--r--r--
2014-12-27 11:49
index.t
6.81
KB
-r--r--r--
2014-12-27 11:49
index_thr.t
56
B
-r--r--r--
2014-12-27 11:49
int.t
1.72
KB
-r--r--r--
2014-12-27 11:49
join.t
3.2
KB
-r--r--r--
2014-12-27 11:49
kill0.t
3.18
KB
-r--r--r--
2014-12-27 11:49
kill0_child
596
B
-r--r--r--
2014-12-27 11:49
kvaslice.t
4.66
KB
-r--r--r--
2014-12-27 11:49
kvhslice.t
5.44
KB
-r--r--r--
2014-12-27 11:49
lc.t
11.8
KB
-r--r--r--
2014-12-27 11:49
leaky-magic.t
3.43
KB
-r--r--r--
2014-12-27 11:49
length.t
5.03
KB
-r--r--r--
2014-12-27 11:49
lex.t
2.33
KB
-r--r--r--
2014-12-27 11:49
lex_assign.t
7.17
KB
-r--r--r--
2014-12-27 11:49
lexsub.t
19.62
KB
-r--r--r--
2014-12-27 12:24
lfs.t
6.2
KB
-r--r--r--
2014-12-27 11:49
list.t
5.31
KB
-r--r--r--
2014-12-27 11:52
local.t
17.11
KB
-r--r--r--
2014-12-27 11:49
localref.t
2.73
KB
-r--r--r--
2014-12-27 11:49
lock.t
465
B
-r--r--r--
2014-12-27 11:49
loopctl.t
17.88
KB
-r--r--r--
2014-12-27 11:49
lop.t
1.2
KB
-r--r--r--
2014-12-27 11:49
magic-27839.t
622
B
-r--r--r--
2014-12-27 11:49
magic.t
21.81
KB
-r--r--r--
2014-12-27 11:49
method.t
18.91
KB
-r--r--r--
2014-12-27 11:49
mkdir.t
1.25
KB
-r--r--r--
2014-12-27 11:49
my.t
4.29
KB
-r--r--r--
2014-12-27 11:49
my_stash.t
769
B
-r--r--r--
2014-12-27 11:49
mydef.t
5.51
KB
-r--r--r--
2014-12-27 11:49
negate.t
4.3
KB
-r--r--r--
2014-12-27 11:49
not.t
3.15
KB
-r--r--r--
2014-12-27 11:49
numconvert.t
8.33
KB
-r--r--r--
2014-12-27 11:49
oct.t
3.58
KB
-r--r--r--
2014-12-27 11:49
or.t
1.79
KB
-r--r--r--
2014-12-27 11:49
ord.t
2.48
KB
-r--r--r--
2014-12-27 11:49
overload_integer.t
506
B
-r--r--r--
2014-12-27 11:49
override.t
4.33
KB
-r--r--r--
2014-12-27 11:49
pack.t
65.34
KB
-r--r--r--
2014-12-27 11:49
packagev.t
5.97
KB
-r--r--r--
2014-12-27 11:49
pos.t
3.59
KB
-r--r--r--
2014-12-27 11:49
postfixderef.t
11.97
KB
-r--r--r--
2014-12-27 11:49
pow.t
2.34
KB
-r--r--r--
2014-12-27 11:49
print.t
692
B
-r--r--r--
2014-12-27 11:49
protowarn.t
1.35
KB
-r--r--r--
2014-12-27 11:49
push.t
3.03
KB
-r--r--r--
2014-12-27 11:49
pwent.t
6.63
KB
-r--r--r--
2014-12-27 11:49
qr.t
2.32
KB
-r--r--r--
2014-12-27 11:49
quotemeta.t
5.61
KB
-r--r--r--
2014-12-27 11:49
rand.t
8.31
KB
-r--r--r--
2014-12-27 11:49
range.t
9.25
KB
-r--r--r--
2014-12-27 11:49
read.t
2.28
KB
-r--r--r--
2014-12-27 11:49
readdir.t
2.09
KB
-r--r--r--
2014-12-27 11:49
readline.t
7.19
KB
-r--r--r--
2014-12-27 11:49
recurse.t
2.73
KB
-r--r--r--
2014-12-27 11:49
ref.t
22.74
KB
-r--r--r--
2014-12-27 11:49
repeat.t
4.8
KB
-r--r--r--
2014-12-27 11:49
require_37033.t
1.18
KB
-r--r--r--
2014-12-27 11:49
require_errors.t
3.68
KB
-r--r--r--
2014-12-27 11:49
reset.t
5.41
KB
-r--r--r--
2014-12-27 11:49
reverse.t
3.01
KB
-r--r--r--
2014-12-27 11:49
rt119311.t
5.58
KB
-r--r--r--
2014-12-27 11:49
runlevel.t
5.28
KB
-r--r--r--
2014-12-27 11:49
select.t
1.03
KB
-r--r--r--
2014-12-27 11:49
setpgrpstack.t
378
B
-r--r--r--
2014-12-27 11:49
sigdispatch.t
4.33
KB
-r--r--r--
2014-12-27 11:49
signatures.t
41.02
KB
-r--r--r--
2014-12-27 11:49
sigsystem.t
1.36
KB
-r--r--r--
2014-12-27 11:49
sleep.t
468
B
-r--r--r--
2014-12-27 11:49
smartkve.t
18.26
KB
-r--r--r--
2014-12-27 11:49
smartmatch.t
10.34
KB
-r--r--r--
2014-12-27 11:49
sort.t
28.4
KB
-r--r--r--
2015-01-10 13:17
splice.t
3.38
KB
-r--r--r--
2014-12-27 11:49
split.t
13.1
KB
-r--r--r--
2014-12-27 11:49
split_unicode.t
2.4
KB
-r--r--r--
2014-12-27 11:49
sprintf.t
28.5
KB
-r--r--r--
2014-12-27 11:49
sprintf2.t
5.49
KB
-r--r--r--
2014-12-27 11:49
srand.t
1.87
KB
-r--r--r--
2014-12-27 11:49
sselect.t
2.67
KB
-r--r--r--
2014-12-27 11:49
stash.t
9.01
KB
-r--r--r--
2014-12-27 11:49
stat.t
17.51
KB
-r--r--r--
2014-12-27 11:49
state.t
9.72
KB
-r--r--r--
2014-12-27 12:15
study.t
2.99
KB
-r--r--r--
2014-12-27 11:49
studytied.t
1.29
KB
-r--r--r--
2014-12-27 11:49
sub.t
6.54
KB
-r--r--r--
2014-12-27 11:49
sub_lval.t
24.2
KB
-r--r--r--
2014-12-27 11:49
substr.t
20.53
KB
-r--r--r--
2014-12-27 11:49
substr_thr.t
56
B
-r--r--r--
2014-12-27 11:49
svleak.pl
6
B
-r--r--r--
2014-12-27 11:49
svleak.t
15.93
KB
-r--r--r--
2015-01-10 12:06
switch.t
28.06
KB
-r--r--r--
2014-12-27 11:49
symbolcache.t
1.06
KB
-r--r--r--
2014-12-27 11:49
sysio.t
5
KB
-r--r--r--
2014-12-27 11:49
taint.t
66.84
KB
-r--r--r--
2014-12-27 12:32
threads-dirh.t
3.47
KB
-r--r--r--
2014-12-27 11:49
threads.t
9.3
KB
-r--r--r--
2014-12-27 11:49
threads_create.pl
42
B
-r--r--r--
2014-12-27 11:49
tie.t
28.34
KB
-r--r--r--
2014-12-27 11:49
tie_fetch_count.t
11.49
KB
-r--r--r--
2014-12-27 11:49
tiearray.t
4.53
KB
-r--r--r--
2014-12-27 11:49
tiehandle.t
5.27
KB
-r--r--r--
2014-12-27 11:49
time.t
7.86
KB
-r--r--r--
2015-01-17 11:51
time_loop.t
378
B
-r--r--r--
2014-12-27 11:49
tr.t
12.99
KB
-r--r--r--
2014-12-27 11:49
undef.t
3.15
KB
-r--r--r--
2014-12-27 11:49
universal.t
8.32
KB
-r--r--r--
2014-12-27 11:49
unlink.t
1.02
KB
-r--r--r--
2014-12-27 11:49
unshift.t
3.17
KB
-r--r--r--
2014-12-27 11:49
upgrade.t
1.15
KB
-r--r--r--
2014-12-27 11:49
utf8cache.t
3.83
KB
-r--r--r--
2014-12-27 11:49
utf8decode.t
7.59
KB
-r--r--r--
2014-12-27 11:49
utf8magic.t
808
B
-r--r--r--
2014-12-27 11:49
utfhash.t
5.33
KB
-r--r--r--
2014-12-27 11:49
utftaint.t
4.46
KB
-r--r--r--
2014-12-27 11:49
vec.t
2.87
KB
-r--r--r--
2014-12-27 11:49
ver.t
8.39
KB
-r--r--r--
2014-12-27 11:49
waitpid.t
973
B
-r--r--r--
2014-12-27 11:49
wantarray.t
874
B
-r--r--r--
2014-12-27 11:49
warn.t
4.15
KB
-r--r--r--
2014-12-27 11:49
while.t
3.81
KB
-r--r--r--
2014-12-27 11:49
write.t
39.99
KB
-r--r--r--
2015-01-24 15:03
yadayada.t
1.67
KB
-r--r--r--
2015-01-15 22:12
Save
Rename
#!./perl BEGIN { chdir 't'; @INC = '../lib'; require './test.pl'; } use strict; use warnings; no warnings 'uninitialized'; no warnings 'experimental::smartmatch'; use Tie::Array; use Tie::Hash; # Predeclare vars used in the tests: my @empty; my %empty; my @sparse; $sparse[2] = 2; my $deep1 = []; push @$deep1, $deep1; my $deep2 = []; push @$deep2, $deep2; my @nums = (1..10); tie my @tied_nums, 'Tie::StdArray'; @tied_nums = (1..10); my %hash = (foo => 17, bar => 23); tie my %tied_hash, 'Tie::StdHash'; %tied_hash = %hash; { package Test::Object::NoOverload; sub new { bless { key => 1 } } } { package Test::Object::StringOverload; use overload '""' => sub { "object" }, fallback => 1; sub new { bless { key => 1 } } } { package Test::Object::WithOverload; sub new { bless { key => ($_[1] // 'magic') } } use overload '~~' => sub { my %hash = %{ $_[0] }; if ($_[2]) { # arguments reversed ? return $_[1] eq reverse $hash{key}; } else { return $_[1] eq $hash{key}; } }; use overload '""' => sub { "stringified" }; use overload 'eq' => sub {"$_[0]" eq "$_[1]"}; } our $ov_obj = Test::Object::WithOverload->new; our $ov_obj_2 = Test::Object::WithOverload->new("object"); our $obj = Test::Object::NoOverload->new; our $str_obj = Test::Object::StringOverload->new; my %refh; unless (is_miniperl()) { require Tie::RefHash; tie %refh, 'Tie::RefHash'; $refh{$ov_obj} = 1; } my @keyandmore = qw(key and more); my @fooormore = qw(foo or more); my %keyandmore = map { $_ => 0 } @keyandmore; my %fooormore = map { $_ => 0 } @fooormore; # Load and run the tests plan tests => 349; while (<DATA>) { SKIP: { next if /^#/ || !/\S/; chomp; my ($yn, $left, $right, $note) = split /\t+/; local $::TODO = $note =~ /TODO/; die "Bad test spec: ($yn, $left, $right)" if $yn =~ /[^!@=]/; my $tstr = "$left ~~ $right"; test_again: my $res; if ($note =~ /NOWARNINGS/) { $res = eval "no warnings; $tstr"; } else { skip_if_miniperl("Doesn't work with miniperl", $yn =~ /=/ ? 2 : 1) if $note =~ /MINISKIP/; $res = eval $tstr; } chomp $@; if ( $yn =~ /@/ ) { ok( $@ ne '', "$tstr dies" ) and print "# \$\@ was: $@\n"; } else { my $test_name = $tstr . ($yn =~ /!/ ? " does not match" : " matches"); if ( $@ ne '' ) { fail($test_name); print "# \$\@ was: $@\n"; } else { ok( ($yn =~ /!/ xor $res), $test_name ); } } if ( $yn =~ s/=// ) { $tstr = "$right ~~ $left"; goto test_again; } } } sub foo {} sub bar {42} sub gorch {42} sub fatal {die "fatal sub\n"} # to test constant folding sub FALSE() { 0 } sub TRUE() { 1 } sub NOT_DEF() { undef } # Prefix character : # - expected to match # ! - expected to not match # @ - expected to be a compilation failure # = - expected to match symmetrically (runs test twice) # Data types to test : # undef # Object-overloaded # Object # Coderef # Hash # Hashref # Array # Arrayref # Tied arrays and hashes # Arrays that reference themselves # Regex (// and qr//) # Range # Num # Str # Other syntactic items of interest: # Constants # Values returned by a sub call __DATA__ # Any ~~ undef ! $ov_obj undef ! $obj undef ! sub {} undef ! %hash undef ! \%hash undef ! {} undef ! @nums undef ! \@nums undef ! [] undef ! %tied_hash undef ! @tied_nums undef ! $deep1 undef ! /foo/ undef ! qr/foo/ undef ! 21..30 undef ! 189 undef ! "foo" undef ! "" undef ! !1 undef undef undef (my $u) undef NOT_DEF undef &NOT_DEF undef # Any ~~ object overloaded ! \&fatal $ov_obj 'cigam' $ov_obj ! 'cigam on' $ov_obj ! ['cigam'] $ov_obj ! ['stringified'] $ov_obj ! { cigam => 1 } $ov_obj ! { stringified => 1 } $ov_obj ! $obj $ov_obj ! undef $ov_obj # regular object @ $obj $obj @ $ov_obj $obj =@ \&fatal $obj @ \&FALSE $obj @ \&foo $obj @ sub { 1 } $obj @ sub { 0 } $obj @ %keyandmore $obj @ {"key" => 1} $obj @ @fooormore $obj @ ["key" => 1] $obj @ /key/ $obj @ qr/key/ $obj @ "key" $obj @ FALSE $obj # regular object with "" overload @ $obj $str_obj =@ \&fatal $str_obj @ \&FALSE $str_obj @ \&foo $str_obj @ sub { 1 } $str_obj @ sub { 0 } $str_obj @ %keyandmore $str_obj @ {"object" => 1} $str_obj @ @fooormore $str_obj @ ["object" => 1] $str_obj @ /object/ $str_obj @ qr/object/ $str_obj @ "object" $str_obj @ FALSE $str_obj # Those will treat the $str_obj as a string because of fallback: # object (overloaded or not) ~~ Any $obj qr/NoOverload/ $ov_obj qr/^stringified$/ = "$ov_obj" "stringified" = "$str_obj" "object" != $ov_obj "stringified" $str_obj "object" $ov_obj 'magic' ! $ov_obj 'not magic' # ~~ Coderef sub{0} sub { ref $_[0] eq "CODE" } %fooormore sub { $_[0] =~ /^(foo|or|more)$/ } ! %fooormore sub { $_[0] =~ /^(foo|or|less)$/ } \%fooormore sub { $_[0] =~ /^(foo|or|more)$/ } ! \%fooormore sub { $_[0] =~ /^(foo|or|less)$/ } +{%fooormore} sub { $_[0] =~ /^(foo|or|more)$/ } ! +{%fooormore} sub { $_[0] =~ /^(foo|or|less)$/ } @fooormore sub { $_[0] =~ /^(foo|or|more)$/ } ! @fooormore sub { $_[0] =~ /^(foo|or|less)$/ } \@fooormore sub { $_[0] =~ /^(foo|or|more)$/ } ! \@fooormore sub { $_[0] =~ /^(foo|or|less)$/ } [@fooormore] sub { $_[0] =~ /^(foo|or|more)$/ } ! [@fooormore] sub { $_[0] =~ /^(foo|or|less)$/ } %fooormore sub{@_==1} @fooormore sub{@_==1} "foo" sub { $_[0] =~ /^(foo|or|more)$/ } ! "more" sub { $_[0] =~ /^(foo|or|less)$/ } /fooormore/ sub{ref $_[0] eq 'Regexp'} qr/fooormore/ sub{ref $_[0] eq 'Regexp'} 1 sub{shift} ! 0 sub{shift} ! undef sub{shift} undef sub{not shift} NOT_DEF sub{not shift} &NOT_DEF sub{not shift} FALSE sub{not shift} [1] \&bar {a=>1} \&bar qr// \&bar ! [1] \&foo ! {a=>1} \&foo $obj sub { ref($_[0]) =~ /NoOverload/ } $ov_obj sub { ref($_[0]) =~ /WithOverload/ } # empty stuff matches, because the sub is never called: [] \&foo {} \&foo @empty \&foo %empty \&foo ! qr// \&foo ! undef \&foo undef \&bar @ undef \&fatal @ 1 \&fatal @ [1] \&fatal @ {a=>1} \&fatal @ "foo" \&fatal @ qr// \&fatal # sub is not called on empty hashes / arrays [] \&fatal +{} \&fatal @empty \&fatal %empty \&fatal # sub is not special on the left sub {0} qr/^CODE/ sub {0} sub { ref shift eq "CODE" } # HASH ref against: # - another hash ref {} {} =! {} {1 => 2} {1 => 2} {1 => 2} {1 => 2} {1 => 3} =! {1 => 2} {2 => 3} = \%main:: {map {$_ => 'x'} keys %main::} # - tied hash ref = \%hash \%tied_hash \%tied_hash \%tied_hash != {"a"=>"b"} \%tied_hash = %hash %tied_hash %tied_hash %tied_hash != {"a"=>"b"} %tied_hash $ov_obj %refh MINISKIP ! "$ov_obj" %refh MINISKIP [$ov_obj] %refh MINISKIP ! ["$ov_obj"] %refh MINISKIP %refh %refh MINISKIP # - an array ref # (since this is symmetrical, tests as well hash~~array) = [keys %main::] \%:: = [qw[STDIN STDOUT]] \%:: =! [] \%:: =! [""] {} =! [] {} =! @empty {} = [undef] {"" => 1} = [""] {"" => 1} = ["foo"] { foo => 1 } = ["foo", "bar"] { foo => 1 } = ["foo", "bar"] \%hash = ["foo"] \%hash =! ["quux"] \%hash = [qw(foo quux)] \%hash = @fooormore { foo => 1, or => 2, more => 3 } = @fooormore %fooormore = @fooormore \%fooormore = \@fooormore %fooormore # - a regex = qr/^(fo[ox])$/ {foo => 1} = /^(fo[ox])$/ %fooormore =! qr/[13579]$/ +{0..99} =! qr/a*/ {} = qr/a*/ {b=>2} = qr/B/i {b=>2} = /B/i {b=>2} =! qr/a+/ {b=>2} = qr/^à/ {"à"=>2} # - a scalar "foo" +{foo => 1, bar => 2} "foo" %fooormore ! "baz" +{foo => 1, bar => 2} ! "boz" %fooormore ! 1 +{foo => 1, bar => 2} ! 1 %fooormore 1 { 1 => 3 } 1.0 { 1 => 3 } ! "1.0" { 1 => 3 } ! "1.0" { 1.0 => 3 } "1.0" { "1.0" => 3 } "à" { "à" => "À" } # - undef ! undef { hop => 'zouu' } ! undef %hash ! undef +{"" => "empty key"} ! undef {} # ARRAY ref against: # - another array ref [] [] =! [] [1] [["foo"], ["bar"]] [qr/o/, qr/a/] ! [["foo"], ["bar"]] [qr/ARRAY/, qr/ARRAY/] ["foo", "bar"] [qr/o/, qr/a/] ! [qr/o/, qr/a/] ["foo", "bar"] ["foo", "bar"] [["foo"], ["bar"]] ! ["foo", "bar"] [qr/o/, "foo"] ["foo", undef, "bar"] [qr/o/, undef, "bar"] ! ["foo", undef, "bar"] [qr/o/, "", "bar"] ! ["foo", "", "bar"] [qr/o/, undef, "bar"] $deep1 $deep1 @$deep1 @$deep1 ! $deep1 $deep2 = \@nums \@tied_nums = @nums \@tied_nums = \@nums @tied_nums = @nums @tied_nums # - an object ! $obj @fooormore $obj [sub{ref shift}] # - a regex = qr/x/ [qw(foo bar baz quux)] =! qr/y/ [qw(foo bar baz quux)] = /x/ [qw(foo bar baz quux)] =! /y/ [qw(foo bar baz quux)] = /FOO/i @fooormore =! /bar/ @fooormore # - a number 2 [qw(1.00 2.00)] 2 [qw(foo 2)] 2.0_0e+0 [qw(foo 2)] ! 2 [qw(1foo bar2)] # - a string ! "2" [qw(1foo 2bar)] "2bar" [qw(1foo 2bar)] # - undef undef [1, 2, undef, 4] ! undef [1, 2, [undef], 4] ! undef @fooormore undef @sparse undef [undef] ! 0 [undef] ! "" [undef] ! undef [0] ! undef [""] # - nested arrays and ~~ distributivity 11 [[11]] ! 11 [[12]] "foo" [{foo => "bar"}] ! "bar" [{foo => "bar"}] # Number against number 2 2 20 2_0 ! 2 3 0 FALSE 3-2 TRUE ! undef 0 ! (my $u) 0 # Number against string = 2 "2" = 2 "2.0" ! 2 "2bananas" != 2_3 "2_3" NOWARNINGS FALSE "0" ! undef "0" ! undef "" # Regex against string "x" qr/x/ ! "x" qr/y/ # Regex against number 12345 qr/3/ ! 12345 qr/7/ # array/hash against string @fooormore "".\@fooormore ! @keyandmore "".\@fooormore %fooormore "".\%fooormore ! %keyandmore "".\%fooormore # Test the implicit referencing 7 @nums @nums \@nums ! @nums \\@nums @nums [1..10] ! @nums [0..9] "foo" %hash /bar/ %hash [qw(bar)] %hash ! [qw(a b c)] %hash %hash %hash %hash +{%hash} %hash \%hash %hash %tied_hash %tied_hash %tied_hash %hash { foo => 5, bar => 10 } ! %hash { foo => 5, bar => 10, quux => 15 } @nums { 1, '', 2, '' } @nums { 1, '', 12, '' } ! @nums { 11, '', 12, '' } # array slices @nums[0..-1] [] @nums[0..0] [1] ! @nums[0..1] [0..2] @nums[0..4] [1..5] ! undef @nums[0..-1] 1 @nums[0..0] 2 @nums[0..1] ! @nums[0..1] 2 @nums[0..1] @nums[0..1] # hash slices @keyandmore{qw(not)} [undef] @keyandmore{qw(key)} [0] undef @keyandmore{qw(not)} 0 @keyandmore{qw(key and more)} ! 2 @keyandmore{qw(key and)} @fooormore{qw(foo)} @keyandmore{qw(key)} @fooormore{qw(foo or more)} @keyandmore{qw(key and more)} # UNDEF ! 3 undef ! 1 undef ! [] undef ! {} undef ! \%::main undef ! [1,2] undef ! %hash undef ! @nums undef ! "foo" undef ! "" undef ! !1 undef ! \&foo undef ! sub { } undef