#!/usr/bin/perl -w
# This is a pseudo Perl file to test Kate's Perl syntax highlighting.
# TODO: this is incomplete, add more syntax examples!

sub prg($)
{
my $var = shift;

$var =~ s/bla/foo/igs;
$var =~ s!bla!foo!igs;
$var =~ s#bla#foo#igs;
$var =~ tr/a-z/A-Z/;
($match) = ($var =~ m/(.*?)/igs);

$test = 2/453453.21;
$test /= 2;

print qq~d fsd fsdf sdfl sd~

$" = '/';

$foo = <<__EOF;
d ahfdklf klsdfl sdf sd
fsd sdf sdfsdlkf sd
__EOF

$x = "dasds";

next if( $match eq "two" );
next if( $match =~ /go/i );

@array = (1,2,3); # a comment
# Test qw versions with special ending characters
@array = qw(apple foo bar);
@array = qw[apple foo bar];
@array = qw{apple foo bar};
@array = qw<apple foo bar>;
@array = qw(
multi
line
test
);
# Test qw with non special ending characters;
@array = qw/apple foo bar/;
@array = qw|apple foo bar|;
@array = qw@apple foo bar@;
@array = qw!apple foo bar!;
@array = qw"apple foo bar";
@array = qw'apple foo bar';
push(@array, 4);
%hash = (red => 'rot',
blue => 'blau');
print keys(%hash);
}

sub blah {
my $str = << ' EOS';
this is my string
and it's continuation
EOS

$str = "hello world";

$str = << " EOS";
this is my string
and it's continuation
EOS
}

&blah;
prg("test");

# Bracket closures in RegExp patterns (bug #364866)
qr{ ${var} aa{aa{a}a} aa*b?};
qr(aa(a(a(a(b|c)a)a)a)aa*b?);
s{aaa {aaa} a \x{A2} *b?}{aa};
s(aa(a(a(a(b|c)a)a)a)aa)(aa);

# Strings as scalar references (bug #348765)
$x = \'Reference of a String';
$y = \"Reference of a String";

# Variables that start with underscore (bug #355300)
$_variable
$_ # Reserved var.

for my $x ($hash->{arr}->@*) {
for my $k (keys $k->%*) {
...
}
}

# Highlight correctly operator // (bug #407327)
$x = ns // "";
print $x;