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.
Подскажите пожалуйста, из-за чего ошибка и как исправить.
заранее спасибо
|