błąd kodowania perl

0

cześć wszystkim, jestem tutaj nowy więc proszę mi wybaczyć jeśli napiszę o moim problemie nie tutaj gdzie trzeba. mam problem dotyczący generowania plików xml na podstawie wyniku jaki dostaje z bazy danych. kilka dni temu sktypt działał bez zarzutu i nadal działa na systemie windows 2008 serwer i perlu "perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x64-multi-thread". obecnie mam system Windows 2019 server i Strwberry perl 5.30. skryp zatrzymuje sie z błędem "Wide character at c:\laczev5\scripts\CreateAchiveXMLs_test1.pl line 521." nie mam pojęcia dlaczego. może ktoś jest mądrzejszy ode mnie a na pewno tak jest i podpowie co zmienić aby było ok. poniżej skrypt:

use strict;
use warnings;
use Encode;
use XML::Writer;
use IO::File;
use File::Copy;
use Win32::SqlServer qw (LIST);
use File::Basename;
use File::Path qw/make_path/;

our $sesID = shift(@argv);
if(!$sesID){
$sesID = "";
}
my $serwerArchiwum = '//10.170.1.139/C$';
my $serwerArchiwumAlt = '\\10.170.1.211\C$\out_archiwum_out_prod\Poczekalnia_archiwum\convert_test\';
my $serwerRobotRenia2 = '//kr-files/Centrum_Wydruku/EDO/JR0809/PDF_August';
my $serwerMikroinstalacje = '//tpe.corp/zasoby/Foldery-sieciowe/T-OK/BW-ROBOTY/PDF-OUT-Mikroinstalacje';
my $serwerMikroinstalacje_R = '//tpe.corp/zasoby/Foldery-sieciowe/T-OK/BW-ROBOTY/PDF-OUT-Mikroinstalacje_Polecone';
my $serwerRKU = '//10.170.1.211/C$/out_archiwum_out_prod/Poczekalnia_archiwum/XML/RKU_XML';
my $serwerWymianaLicznika = '//tpe.corp/zasoby/Foldery-sieciowe/T-OK/BW-ROBOTY/PDF-OUT-Wymiana-Licznika/';

laczymy sie z baza danych

my $sqlsrv = new Win32::SqlServer;
$sqlsrv->setloginproperty('Server', 'GK-SQLPMAS01V\GKSQLPMAS');
$sqlsrv->setloginproperty('Database', 'LaczeV5');
$sqlsrv->setloginproperty('Username', 'ic');
$sqlsrv->setloginproperty('Password', 'ic');
$sqlsrv->{ErrInfo}{MaxSeverity} = 25;
$sqlsrv->{ErrInfo}{PrintMsg} = 25;
$sqlsrv->{ErrInfo}{PrintText} = 25;
$sqlsrv->{ErrInfo}{PrintLines} = 25;
$sqlsrv->{ErrInfo}{SaveMessages} = 1;
$sqlsrv->connect();

sprawdz czy nie bylo bledu przy polaczeniu z serwerem

my $hadErrors = 0;
my $errorDescription = "";
my $errorInfo = "";
foreach my $mess (@{$sqlsrv->{ErrInfo}{Messages}}) {
$errorInfo .= $mess->{Text}."\n";
}
if ($errorInfo ne "") {
chomp $errorInfo;
print "Błąd połączenia z bazą danych: " . $errorInfo;
exit(1);
}

SPRAWDZAMY DANE W BAZIE

0 PrzesylkaType

1 GUID

2 NumerNadania

3 DataNadania

4 Nazwa

5 Ulica

6 NumerDomu

7 NumerLokalu

8 Miejscowosc

9 KodPocztowy

10 IloscPotwierdzenOdbioru

11 EPO

12 NumerPlatnika

13 idEnvelope

14 TypDokumentu

15 Barkod

16 SystemZrodlowy

17 SciezkaDoPliku

18 NazwaPlikuPDF

#########################
my $SQL = <<'END_SQL';
SELECT * from (SELECT CASE WHEN typeID = 1 THEN 'przesylkaFirmowaPoleconaType'
WHEN typeID = 2 THEN 'przesylkaFirmowaPoleconaType'
WHEN typeID IS NULL OR NULLIF(DokumentNumerNadawczy,'') IS NULL THEN 'listZwyklyFirmowyType'
ELSE ''
END AS PrzesylkaType
,[guid] AS [GUID]
,DokumentNumerNadawczy AS NumerNadania
,CONVERT(VARCHAR(10),DokumentDataNadania,120) AS DataNadania
,DokumentOdbiorca AS Nazwa
,DokumentOdbiorcaAdres1 AS Ulica
,DokumentOdbiorcaAdres1 AS NumerDomu
,DokumentOdbiorcaAdres1 AS NumerLokalu
,DokumentOdbiorcaPoczta AS Miejscowosc
,DokumentOdbiorcaKod AS KodPocztowy
,CASE WHEN typeID = 2 THEN 1 ELSE 0 END AS IloscPotwierdzenOdbioru
,CASE WHEN typeID = 2 THEN 'true' ELSE 'false' END AS EPO
,DokumentOdbiorcaID AS NumerPlatnika
,envelopeID AS idEnvelope
,ISNULL(DokumentOpis,'') AS TypDokumentu2
,ZdarzenieSEQ AS Barkod
,CASE WHEN PlikOryginal LIKE '%EDO%' THEN 'T17'
WHEN PlikOryginal LIKE '%Odnawiacze%' and PlikOryginal LIKE '%AUMS%' THEN 'T18'
WHEN PlikOryginal LIKE '%Odnawiacze%' and (PlikOryginal LIKE '%TS%'or PlikOryginal LIKE '%GZE%') THEN 'T17'
WHEN PlikOryginal LIKE '%Przedluzacze%' and PlikOryginal LIKE '%AUMS%' THEN 'T18'
WHEN PlikOryginal LIKE '%Przedluzacze%' and (PlikOryginal LIKE '%TS%'or PlikOryginal LIKE '%EXP%')THEN 'T17'
WHEN PlikOryginal LIKE '%AUMS%' and PlikOryginal not LIKE '%D1%'THEN 'T18'
WHEN PlikOryginal LIKE '%AUMS%' and PlikOryginal LIKE '%D1%'THEN 'T21'
WHEN PlikOryginal LIKE '%Umowy_rez_EDO_JMochol_%' THEN 'T17'
WHEN PlikOryginal LIKE '%Umowy_rez_AUMS_JMochol_%' THEN 'T18'
When PlikOryginal LIKE '%P02ANK%' THEN 'T18'
When PlikOryginal LIKE '%TD-P01-%' THEN 'T18'
ELSE ''
END AS SystemZrodlowy
,NazwaPlikuPDF AS SciezkaDoPliku
,RIGHT(NazwaPlikuPDF, CHARINDEX('', REVERSE(NazwaPlikuPDF)) -1) AS NazwaPlikuPDF
,PlikID AS PlikID, dokumentopis, plikoryginal,
CASE WHEN (PlikOryginal LIKE '%EDO[]WIN[]TOK[]Z%WUM%') and (dokumentopis like 'WUM_JR6%' or dokumentopis like 'WUM_JR7%' or dokumentopis like 'WUM_JR8%' or dokumentopis like 'WUM_JR9%'
or dokumentopis like 'WUM_JR10%' or dokumentopis like 'WUM_JR11' or dokumentopis like 'WUM_JR12%' or dokumentopis like 'WUM_JR13%'
or dokumentopis like 'WUM_JR14%'or dokumentopis like 'WUM_JR15%' or dokumentopis like 'WUM_JR16%' or dokumentopis like 'WUM_JR17%')
THEN 'WINDYKACJA_WUM_TS'
WHEN (PlikOryginal LIKE '%EDO[
]WIN[]TOK[]Z%WUM%') and (dokumentopis like 'WUM_JR1%' or dokumentopis like 'WUM_JR3%' or dokumentopis like 'WUM_JR38%' or dokumentopis like 'WUM_JR39%')
THEN 'WINDYKACJA_WUM_TSP'
WHEN (PlikOryginal LIKE '%EDO[]WIN[]TOK[]Z%WPS%') and (dokumentopis like '730' or dokumentopis like '930'
or dokumentopis like '1130' or dokumentopis like '1332' or dokumentopis like '1530' or dokumentopis like '1730')
THEN 'WINDYKACJA_WPS_EDO_TS'
WHEN (PlikOryginal LIKE '%EDO[
]WIN[]TOK[]Z%WPS%') and (dokumentopis like '330' or dokumentopis like '3952' or dokumentopis like '3932')
THEN 'WINDYKACJA_WPS_EDO_TSP'
WHEN (PlikOryginal LIKE '%EDO[]WIN[]TOK[]Z%WPS%') and (dokumentopis like '431%' or dokumentopis like '3131%')
THEN 'WINDYKACJA_WPS_EDO_TD'
WHEN (PlikOryginal LIKE '%EDO[
]WIN[]TOK[]Z%WPS%') and (PlikOryginal LIKE '%EDO[]WIN[]TOK[]Z%TD%') and (dokumentopis IS NULL)
THEN 'WINDYKACJA_WPS_SAP_TD'
WHEN PlikOryginal LIKE '%EDO[
]WIN[]TOK[]Z%WUM%' THEN 'WINDYKACJA_WUM'
WHEN PlikOryginal LIKE '%EDO%' THEN 'EDO'
WHEN PlikOryginal LIKE '%Odnawiacze%' THEN 'OdnawiaczeMSP'
WHEN PlikOryginal LIKE '%Przedluzacze%' THEN 'Przedluzacze_GD'
WHEN PlikOryginal LIKE '%AUMS%' THEN 'AUMS'
WHEN PlikOryginal LIKE '%Umowy_rez_EDO_JMochol_%' THEN 'Energia_Bierna'
WHEN PlikOryginal LIKE '%Umowy_rez_AUMS_JMochol_%' THEN 'Energia_Bierna'
When PlikOryginal LIKE '%P02ANK%' THEN 'AUMS'
When PlikOryginal LIKE '%TD-P01-%' THEN 'AUMS'
ELSE ''
END AS TypDokumentu
,ROW_NUMBER() OVER (PARTITION BY PDF.DokumentID ORDER BY SEQ DESC) AS DokumentLicznik
,ZdarzenieCzas
,p.BillingID
,ZdarzenieID
FROM DokumentyNazwyPDF PDF
JOIN Dokumenty D ON D.DokumentID = PDF.DokumentID
JOIN Pliki P ON P.PlikID = D.DokumentPlikID
LEFT JOIN Zdarzenia Z ON PDF.SEQ = Z.Zdarzenieseq AND Z.ZdarzenieID = 2
LEFT JOIN EnvelopeRegistered ER ON ER.docID = D.DokumentID) as sub
WHERE DokumentLicznik = 1 and BillingID = 46147
END_SQL
#DokumentLicznik = 1 and

run query

my @result = doSQL($SQL . $sesID);

przygotowujemy pliki XML na podstawie wyników

foreach my $row (@result) {
my $orgXmlFilePath = $$row[17];
$orgXmlFilePath =~ s/\out_archiwum_out_prod\/out_archiwum_out_prod/Poczekalnia_archiwum/XML//;
#my @poczekalnia = split(///, $orgXmlFilePathRKU);
#$PoczekalniaPath =
$orgXmlFilePath =~ s///\/g;
#$orgXmlFilePath =~ s/\///;

my $RKUPATH = $$row[17];
my $xmlFilePath = $orgXmlFilePath;
$xmlFilePath =~ s/(C|c)\:/$serwerArchiwum/;


my $orgXmlFilePathRKU = $$row[21];
my $xmlFilePathRKU = $orgXmlFilePathRKU;

#$xmlFilePathRKU =~ s/(C|c)\:/$serwerRKU/;
my $nazwa_poczekalnia_XML = "";
unless (-e $xmlFilePath) {
	$xmlFilePath = $orgXmlFilePath;
	$xmlFilePath =~ s/(C|c)\:/$serwerArchiwumAlt/;
	$nazwa_poczekalnia_XML = $serwerArchiwumAlt . basename($xmlFilePath);
}
# zmiana rozszerzenia na xml
$xmlFilePath =~ s/(pdf|PDF)$/xml/;
$nazwa_poczekalnia_XML =~ s/(pdf|PDF)$/xml/;
	#print $xmlFilePath."\n";
	#print $nazwa_poczekalnia_XML;

#print $xmlFilePath;
my $output = IO::File->new(">$nazwa_poczekalnia_XML") or die("umieram");
my $writer = XML::Writer->new(OUTPUT => $output, DATA_MODE => 1, DATA_INDENT => 2);
$writer->xmlDecl('UTF-8');
$writer->startTag('letter');
$writer->startTag('basic');
my $DATANADANIA;

if (defined($$row[0]) && $$row[0] eq"przesylkaFirmowaPoleconaType"){
	
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'PrzesylkaType');
			$writer->dataElement('value', convert($$row[0]));
		$writer->endTag('letter_param');
		
		if (defined($$row[13]) && $$row[13] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'IdEnvelope');
				$writer->dataElement('value', convert($$row[13]));
			$writer->endTag('letter_param');
		}
		
		if (defined($$row[1]) && $$row[1] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'GUID');
				$writer->dataElement('value', trim(convert($$row[1])));
			$writer->endTag('letter_param');
		}
		if (defined($$row[2]) && $$row[2] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'NumerNadania');
				$writer->dataElement('value', convert($$row[2]));
			$writer->endTag('letter_param');
		}

		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Nazwa');
			$writer->dataElement('value', convert($$row[4]));
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Ulica');
			$writer->dataElement('value', convert($$row[5]));
		$writer->endTag('letter_param');

		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Miejscowosc');
			$writer->dataElement('value', convert($$row[8]));
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'KodPocztowy');
			$writer->dataElement('value', convert($$row[9]));
		$writer->endTag('letter_param');
	
		$writer->comment('przesylkaPoleconaKrajowaType');
	
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'PostRestante');
			$writer->dataElement('value', 'false');
		$writer->endTag('letter_param');
		
		if (defined($$row[10]) && $$row[10] ne "") {
			$writer->startTag('letter_param');
				$writer->comment('dopuszczalne wartosci {0, 1}');
				$writer->dataElement('key', 'IloscPotwierdzenOdbioru');
				$writer->dataElement('value', $$row[10]);
			$writer->endTag('letter_param');
		}
		
		$writer->startTag('letter_param');
		$writer->comment('dopuszczalne wartosci {EKONOMICZNA, PRIORYTETOWA}');
			$writer->dataElement('key', 'Kategoria');
			$writer->dataElement('value', 'EKONOMICZNA');
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
		$writer->comment('waga w gramach');
			$writer->dataElement('key', 'Masa');
			$writer->dataElement('value', '100');
		$writer->endTag('letter_param');
		
		if (defined($$row[11]) && $$row[11] ne "") {
			$writer->startTag('letter_param');
				$writer->comment('dopuszczalne wartosci {true, false}');
				$writer->dataElement('key', 'EPO');
				$writer->dataElement('value', convert($$row[11]));
			$writer->endTag('letter_param');
		}
		
		$writer->startTag('letter_param');
		$writer->comment('dopuszczalne wartosci {GABARYT_A, GABARYT_B}');
			$writer->dataElement('key', 'Gabaryt');
			$writer->dataElement('value', 'GABARYT_A');
		$writer->endTag('letter_param');
		
		$writer->comment('Wartości Dodatkowe');		
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Barcode');
			$writer->dataElement('value', convert($$row[15]));
		$writer->endTag('letter_param');
		
		if (defined($$row[13]) && $$row[13] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'NumerKN');
				$writer->dataElement('value', convert('KN/'.$$row[3].'/SWM/'.$$row[13]));
			$writer->endTag('letter_param');
		}	
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'SystemZrodlowy');
			$writer->dataElement('value', convert($$row[16]));
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'TypDokumentu');
			$writer->dataElement('value', convert($$row[22]));
		$writer->endTag('letter_param');
		
	$writer->endTag('basic');
	}
	
	elsif (defined($$row[0]) && $$row[0] eq "listZwyklyFirmowyType"){
	
	$writer->startTag('letter_param');
			$writer->dataElement('key', 'PrzesylkaType');
			$writer->dataElement('value', convert($$row[0]));
		$writer->endTag('letter_param');

		if (defined($$row[13]) && $$row[13] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'IdEnvelope');
				$writer->dataElement('value', convert($$row[13]));
			$writer->endTag('letter_param');
		}
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Nazwa');
			$writer->dataElement('value', convert($$row[4]));
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Ulica');
			$writer->dataElement('value', convert($$row[5]));
		$writer->endTag('letter_param');

		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Miejscowosc');
			$writer->dataElement('value', convert($$row[8]));
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'KodPocztowy');
			$writer->dataElement('value', convert($$row[9]));
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'PostRestante');
			$writer->dataElement('value', 'false');
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
		$writer->comment('waga w gramach');
			$writer->dataElement('key', 'Masa');
			$writer->dataElement('value', '100');
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
		$writer->comment('dopuszczalne wartosci {GABARYT_A, GABARYT_B}');
			$writer->dataElement('key', 'Gabaryt');
			$writer->dataElement('value', 'GABARYT_A');
		$writer->endTag('letter_param');
		
		$writer->startTag('letter_param');
		$writer->comment('dopuszczalne wartosci {EKONOMICZNA, PRIORYTETOWA}');
			$writer->dataElement('key', 'Kategoria');
			$writer->dataElement('value', 'EKONOMICZNA');
		$writer->endTag('letter_param');

		$writer->comment('Wartości Dodatkowe');
		
		$writer->startTag('letter_param');
			$writer->dataElement('key', 'Barkod');
			$writer->dataElement('value', convert($$row[15]));
		$writer->endTag('letter_param');
		
	$writer->endTag('basic');
	}
	
	$writer->startTag('extendend');
		if (defined($$row[3]) && $$row[3] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'DataNadaniaNaKopercie');
				$writer->dataElement('value', convert($$row[3]));
				$DATANADANIA = convert($$row[3]);
				$writer->endTag('letter_param');
		}
		if (defined($$row[12]) && $$row[12] ne "") {
			$writer->startTag('letter_param');
				$writer->dataElement('key', 'NumerPlatnika');
				$writer->dataElement('value', trim($$row[12]));
			$writer->endTag('letter_param');
		}
	$writer->endTag('extendend');
	$writer->startTag('files');
		$writer->emptyTag('file', path => $$row[17], name => $$row[18], id=>$$row[19]) ; # "file" or real file name?
	$writer->endTag('files');
$writer->endTag('letter');
$output->close();

=pod
if ($orgXmlFilePath =~ /RENIA/) {
my $xmlRENIAFilePath = $orgXmlFilePath;
$xmlRENIAFilePath =~ s/(C|c):\out_archiwum_out_prod//;
$xmlRENIAFilePath =~ s/\///g;
$xmlRENIAFilePath =~ s/(pdf|PDF)$/xml/;
$xmlRENIAFilePath = $serwerRobotRenia2 .$xmlRENIAFilePath;
copy($xmlFilePath, $xmlRENIAFilePath);
}

	if ($orgXmlFilePath =~ /Mikroinstalacje-/) {
	my $xmlMikroFilePath = $orgXmlFilePath;
	$xmlMikroFilePath =~ s/(C|c)\:\\out_archiwum_out_prod//;
	$xmlMikroFilePath =~ s/\\/\//g;
	$xmlMikroFilePath =~ s/(pdf|PDF)$/xml/;
	$xmlMikroFilePath = $serwerMikroinstalacje .$xmlMikroFilePath;
	copy($xmlFilePath, $xmlMikroFilePath);
}

	if ($orgXmlFilePath =~ /Mikroinstalacje_R/) {
	my $xmlMikroFilePath = $orgXmlFilePath;
	$xmlMikroFilePath =~ s/(C|c)\:\\out_archiwum_out_prod//;
	$xmlMikroFilePath =~ s/\\/\//g;
	$xmlMikroFilePath =~ s/(pdf|PDF)$/xml/;
	$xmlMikroFilePath = $serwerMikroinstalacje_R .$xmlMikroFilePath;
	copy($xmlFilePath, $xmlMikroFilePath);
}
if ($orgXmlFilePath =~ /ANDARIEL/) {
	my $xmlWymLiczFilePath = $orgXmlFilePath;
	$xmlWymLiczFilePath =~ s/(C|c)\:\\out_archiwum_out_prod//;
	$xmlWymLiczFilePath =~ s/\\/\//g;
	$xmlWymLiczFilePath =~ s/(pdf|PDF)$/xml/;
	
	my @WymLiczxml = split(/\\/, $orgXmlFilePath);
	my $wymliczpath = $WymLiczxml[3];
	
	$xmlWymLiczFilePath =$serwerWymianaLicznika.$wymliczpath;
	#print $xmlWymLiczFilePath;
	
	#$xmlWymLiczFilePath = $serwerWymianaLicznika.$xmlWymLiczFilePath;
	copy($xmlFilePath, $xmlWymLiczFilePath);
}

=cut
if ($orgXmlFilePath =~ /RKU/) {
my $xmlRKUFilePath = $orgXmlFilePath;
$xmlRKUFilePath =~ s/(C|c):\out_archiwum_out_prod//;
$xmlRKUFilePath =~ s/\///g;
$xmlRKUFilePath =~ s/(pdf|PDF)$/xml/;
$xmlRKUFilePath = $serwerRKU .$xmlRKUFilePath;
$orgXmlFilePathRKU =~ s/\///g;
$orgXmlFilePathRKU =~ s/(pdf|PDF)$/xml/;

	#copy($xmlFilePath, $xmlRKUFilePath);
	my @RKU = split(/\\/, $RKUPATH);
	
	my @RKUxml = split(/\//, $orgXmlFilePathRKU);

	my $nazwaPDFnaXML = $RKUxml[5];
		$nazwaPDFnaXML =~ s/(pdf|PDF)$/xml/;
		
	
	my $ZmianaNazwy = $serwerRKU.'/'.$RKU[2].'/'.$RKU[3];
	
	my $nazwaPDFnaXML1 = $RKU[4];
		$nazwaPDFnaXML1 =~ s/(pdf|PDF)$/xml/;

	my $NamePDFOUT = $RKU[4];
		#print $serwerRKU.'/'.$RKU[2].'/'.$RKU[3].'/'.$nazwaPDFnaXML1;
		#print $orgXmlFilePathRKU."\n";
	open (FF, '<', $orgXmlFilePathRKU);
	open (FF1, ">", $serwerRKU.'/'.$nazwaPDFnaXML1)or die("cannot access savefile!");	
		
		while (my $linia =<FF>){
		
		
		my $temp = "<DataNadania>".$DATANADANIA."<\/DataNadania>";
			$linia =~ s/<DataNadania\/><\/RKU><\/xmlRecord>/$temp<NamePDFOUT>$NamePDFOUT<\/NamePDFOUT><\/RKU><\/xmlRecord>/g ;
		#	print $linia;
			print FF1 $linia;
		
		}
		close(FF);
		close(FF1);
		
		   
	#		rename($ZmianaNazwy.'/'.$nazwaPDFnaXML, $ZmianaNazwy.'/'.$nazwaPDFnaXML1);
			   

} 

}

sprawdź czy nie było błędów

if ($hadErrors == 1) {
print "Wystąpiły błędy podczas pobierania danych z bazy: " . $errorDescription;
exit(1);
}

sub doSQL {
my $sql = shift;
my @vals = {};
my $stmnt = <<SQLEND;
$sql
SQLEND

if ($sql =~ /^SELECT/) {
	@vals = $sqlsrv->sql($stmnt, LIST);
} else { # if INSERT or UPDATE or DELETE...
	$sqlsrv->sql($stmnt, LIST);
}

my $errorInfo = "";
# Check for messages.
foreach my $mess (@{$sqlsrv->{ErrInfo}{Messages}}) {
	$errorInfo .= $mess->{Text}."\n";
}
if ($errorInfo ne "") {
	chomp $errorInfo;
	print $sql."\n";
	print "WARNING! Data error in line: $_\n".$errorInfo."\n";
	$errorDescription .= $errorInfo."\n".$sql."\n\n";
	$hadErrors = 1;
	delete $sqlsrv->{ErrInfo}{Messages};
}

return @vals;

}

sub convert {

return encode_utf8(decode('CP-1250', $_[0]));

}

sub trim {
$[0]=~s/^\s+//;
$
[0]=~s/\s+$//;
return $_[0];
}

######### PRZYKŁAD WYNIKU
=DEPENDENCIES: XML-Writer, XML-LibXML
PRZYKŁAD:

<?xml version="1.0" encoding="UTF-8"?> <letter> <basic> <letter_param> <key>NazwaNadawcy</key> <value></value> </letter_param> <letter_param> <key>ImięNadawcy</key> <value></value> </letter_param> <letter_param> <key>Ulica</key> <value></value> </letter_param> </basic> <extendend> <letter_param> <key>Ulica</key> <value></value> </letter_param> <letter_param> <key>Ulica</key> <value></value> </letter_param> <letter_param> <key>Ulica</key> <value></value> </letter_param> </extended> <files> <file name="" /> <file name="" /> <file name="" /> <file name="" /> </files> </letter> =
3

Nawet bez specjalnego przyglądania się temu, co jest w kodzie, pierwszy trop to:

  • skrypt Perla zakodowany jest w innym kodowaniu, niż oczekuje interpreter,
  • dane pochodzące z zewnątrz są w innym kodowaniu, niż skrypt.

Przykładowe rozwiązanie

Znaki końca linii powinny być LF (uniksowe) a nie CRLF (DOSowe). Jeśli to Windows, to sprawdź czy skrypt Perla pójdzie z kodowaniem: - windows 1250, - ISO 8859-2 - UTF-8.

W przypadku tego ostatniego może być potrzebna dyrektywa use utf8. Owa dyrektywa spowoduje również, że będziesz mógł przetwarzać ciągi znaków w unicode - przydatne przy czytaniu danych z bazy albo z dysku. Przy próbie odczytu innych danych, niż unicode, może być koniecznie przekonwertowanie stringów na inne kodowanie. Można to zrobić na kilka sposobów, np. funkcjami encode (masz już w kodzie użycie tej funkcji). Więcej znajdziesz w linkach, które podałem poniżej.
Zwracaj uwagę na wersje Perla przy szukaniu informacji w internecie. Jeśli używasz bardzo starej wersji, może brakować obsługi niektórych stron kodowych.

https://perldoc.perl.org/perlunifaq#Can-I-use-Unicode-in-my-Perl-sources?
https://perldoc.perl.org/perlunicode
https://perldoc.perl.org/Encode::Unicode
https://perldoc.perl.org/utf8

1 użytkowników online, w tym zalogowanych: 0, gości: 1