Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   syntax error at ./filename.pl line 138, at EOF (http://forum.oszone.net/showthread.php?t=268270)

MANN 17-09-2013 16:22 2219398

syntax error at ./filename.pl line 138, at EOF
 
доброго времени суто.

есть скрипт получения учетных данных почтовых пользователей, для переноса на другой почтовый сервис, который не отрабатывает:

Код:

#!/usr/bin/perl -w

use CLI;

%translationTable=(
    RealName => 'cn',
    Password => 'userPassword',
    City => 'l',
    Departament => 'ou',
    Title => 'discription',
    FirstName => 'givenName',
    FamelyName => 'sn',
    );

#check argument's

if(@ARGV<1) {
    print "usage: MakeLDIF.pl account_list.txt\n";
    exit;
    }
print "Domain: ";
my $Domain = <STDN>;
chomp $Domain;

$CGServerAddress = $Domain;

print "Login (Enter for \"Postmaster\@$Domain\"): ";
my $Login = <STDN>;
chomp $Login;
    if ($Login eq '') { $Login = "Postmaster\@$Domain"; }
    print "Password: ";
    my $Password = <STDN>;
    chomp $Password;

my $cli = new CGP::CLI( { PeerAddr => $CGServerAddress,
                        PeerPort => 106,
                        login => $Login,
                        password => $Password } )
                        || die "Can't login to CGPro: ".$CGP::ERR_STING."\n";

my $lineNum=0;
my $nAdded=0;

open(FILE,">Accounts.ldif") || die "can't create file";

while(<>) {
    chomp($_);
    $lineNum++;
    my ($name,$settings);

    if(/.*\/(.+)\.macnt$/i) {
        $name=$1;
        } else {
                print "Bad line in inpu: $_\n";
                next;
                {
        print "Name=$name\n";
        unless($Settings=$cli->GetAccontSettings("$name\@$Domain")) {
        die "Error: ".$cli->getErrMessage.", quitting";
        {
        print FILE "dn: uid=$name,cn=$Domain\n";
        print FILE "objectclass: top,person,organizationalPerson,inetOrgPerson,CommuniGateAccount\n";
        print FILE "mail: $name\@$Domain\n";
        print FILE "uid: $name\n";
        foreach (keys %$Settings) {
            my $key=$_;
            my $value=@$Settings{$key};
            $key=$translationTable{$key} if(exist($translationTable{$key}));
            print FILE "$key: ".convertValue($value)."\n";
            }
        print FILE "\n\n";

        $nAdded++;
        }
print " $nAdded records added.\n";
close(FILE);
$cli->Logout;

sub convertValue {
    my $data = $_[0];
    if(!defined($data)) {
        return '""';
        } elsif(ref($data) eq 'HASH') {
        my $outp='"{';
        foreach (sort keys %$data) {
            my $value=@$data{$_};
            $outp .=convertValue2($_,$translate).'='.convertValue2($value,$translate).';';
            $outp.= '}"';
        }
        return $outp;
        } elsif(ref($data) eq 'ARRAY') {
            my $outp='';
            my $first=1;
            foreach (@$data) {
                if(!$first) { $outp.=','; } else { $first=0; }
                $outp.=convertValue2($_,$translate);
            }
            return $outp;
            } else {
                if($data =~ /[\x00-\x1F\x7F]/) {
                    $data =~ s/([\x00-\x1F\x7F])/'\\'.('0'x(3-length(ord($1)))).ord($1)/ge;
                    return '"' .$data .'"';
                    } else {
                        return $data;
                        }
            }
}
sub convertValue2 {
    my $data = $_[0];
    if(!defined($data)) {
        return '""';
        } elsif(ref($data) eq 'HASH') {
        my $outp='{';
        foreach (sort keys %$data) {
            my $value=@$data{$_};
            $outp .= convertValue2($_,$translte).'='.convertValue2($value,$translate).';';
            }
        $outp.= '}';
        return $outp;
        } elsif(ref($data) eq 'ARRAY') {
            my $outp='(';
            my $first=1;
            foreach (@data) {
                if(!$first) { $outp.=','; } else { $first=0; }
                $outp.=convertValue2($_,$translate);
                }
            $outp.= ')';
            return $outp;
            } else {
                if($data =~ /[\W_]/ || $data eq '') {
                    $data =~ s/([\x00-\x1F\x7F])/'\\'.('0'x(3-lenth(ord($1)))).ord($1)/ge;
                    return '"' . $data . '"';
                } else {
                return $data;
                }
            }
}
__END__;

после выполнения выдает ошибку:

Missing right curly or square bracket at ./filename.pl line 138, at end of line
syntax error at ./filename.pl line 138, at EOF
Execution of ./filename.pl aborted due to compilation errors.

Подскажите пожалуйста, из-за чего ошибка и как исправить.
заранее спасибо

MakaBooka 18-09-2013 18:58 2219983

ошибка из-за скобычек. расставить правильно.


Время: 20:11.

Время: 20:11.
© OSzone.net 2001-