    #!/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 =~ s#(.)#foo$1foo#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);

    # Bracket closures in RegExp replacement
    s(abc) # TODO bla bla
        (aa{(b)}c)g;
    s(abc) # TODO bla bla
        [aa{(b)}c]g;
    s(abc) # TODO bla bla
        {aa{(b)}c}g;
    s[abc] # TODO bla bla
        (aa{(b)}c);
    s{(abc)} # TODO bla bla
        [aa{(b)}c]g;
    # any char for replacement
    s{abc} # TODO bla bla
        +aa{(b)}c+g;
    s{abc} # TODO bla bla
        ]aa{(b)}c]g; # this is fine

    # 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;

    # Number
    print _1__2_3 _0x1__2_3 _0b1 _0123 # not a Number
    print 123 1__2__3__ 000
    print 0x123 0x__1__2__3__
    print 0b10 0b__1__0__
    print 0123 0__1__2__3__
    print 123.123 123. 123.__ 123.__1
    print 123e123 123.e__2 123.__e__2
    print 012.23 123e__ # no float
    print 1__2__3__.1__2__3__e__1__
    print 1__2__3__.1__2__3__e__ # no float
    print 1__2__3__e__1__
    print 1__2__3__e__ # no float
    print 0x1p8 0x123__p1__0 0x1p8__
    print 0x1p_8 # no float