Hi,

Am just trying out this bracket checker script but when I ran it, it is
giving errors below.

Just curious to know what the error is about? Please advise. Thanks

Error below:

http://pastebin.com/d8GNL0kx

./123.pl testfile01x.ora
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xab) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xab) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xab) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xab) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xab) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xab) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Malformed UTF-8 character (unexpected continuation byte 0xbb) at ./123.plline 8.
Sequence (?|...) not recognized before HERE mark in regex m/(?| << HERE
(\()(?&matched)([\}\]..»?>»??]|$) |
(\{)(?&matched)([\)\]..»?>»??]|$) |
(\[)(?&matched)([\)\}..»?>»??]|$) |
(.)(?&matched)([\)\}\].»?>»??]|$) |
(.)(?&matched)([\)\}\].»?>»??]|$) |
(«)(?&matched)([\)\}\]..?>»??]|$) |
(?)(?&matched)([\)\}\]..»>»??]|$) |
(<)(?&matched)([\)\}\]..»?»??]|$) |
(«)(?&matched)([\)\}\]..»?>??]|$) |
(?)(?&matched)([\)\}\]..»?>»?]|$) |
(?)(?&matched)([\)\}\]..»?>»?]|$) | at ./123.pl line 34.


Code below or can be copied from http://pastebin.com/d8GNL0kx

#!/usr/bin/perl

use strict;
use utf8;
binmode STDOUT,":utf8";
use File::Find;

my $checkre = qr/(?|
    (\()(?&matched)([\}\]”›»】〉》」』]|$) |
    (\{)(?&matched)([\)\]”›»】〉》」』]|$) |
    (\[)(?&matched)([\)\}”›»】〉》」』]|$) |
    (“)(?&matched)([\)\}\]›»】〉》」』]|$) |
    (‹)(?&matched)([\)\}\]”»】〉》」』]|$) |
    («)(?&matched)([\)\}\]”›】〉》」』]|$) |
    (【)(?&matched)([\)\}\]”›»〉》」』]|$) |
    (〈)(?&matched)([\)\}\]”›»】》」』]|$) |
    (《)(?&matched)([\)\}\]”›»】〉」』]|$) |
    (「)(?&matched)([\)\}\]”›»】〉》』]|$) |
    (『)(?&matched)([\)\}\]”›»】〉》」]|$) |
    (^)(?&matched)([\)\}\]”›»】〉》」』]))
(?(DEFINE)(?<matched>(?:
    \((?&matched)\) |
    \{(?&matched)\} |
    \[(?&matched)\] |
    “(?&matched)” |
    ‹(?&matched)› |
    «(?&matched)» |
    【(?&matched)】 |
    〈(?&matched)〉 |
    《(?&matched)》 |
    「(?&matched)」 |
    『(?&matched)』 |
    [^\(\{\[“‹«【〈《「『\)\}\]”›»】〉》」』]++)*+))
/sx;

sub check_file {
    if(-f && /\.txt$/) {
        if(open(my $fh,'<:encoding(UTF-8)',$_)) {
            undef $/;
            my $data = <$fh>;
            if($data =~ $checkre) {
                if(!length $2) {
                    print "File $File::Find::name has unclosed bracket $1 at
position $-[1]\n";
                }
                elsif(!length $1) {
                    print "File $File::Find::name has unopened bracket $2 at
position $-[2]\n";
                }
                else {
                    print "File $File::Find::name has mismatched brackets $1
$2 at positions $-[1] and $-[2]\n";
                }
            }
        } else {
            print STDERR "Cannot open $File::Find::name: $!\n";
        }
    }
}

@ARGV = ('.') unless @ARGV;
find(\&check_file,@ARGV);

Reply via email to