Cze��!
yoa...@gmail.com wrote:
> Czy da si� zmieni� znaki diakrytyczne polskie na du�e jeszcze przed encode ?
> Jak bym to teraz chcia� zrobi� wrzucaj�c uc befor encode to literki pl zosta�y by ma�ymi.
Da si�. Problem tkwi w tym, �e Perl nie wie jakie jest kodowanie pliku
ze skryptem (traktuje go jako strumie� bajt�w, a nie tekst w UTF-8).
Musisz mu powiedzie�, �e jest inaczej, dodaj�c na pocz�tku tego skryptu
nast�puj�c� dyrektyw�:
use utf8;
Gdy tej dyrektywy nie ma, ta linia:
$line =~ /(PO�O�NICTWO)/ig;
jest �le interpretowana, poniewa� zawiera znaki spoza ASCII kt�re s�
interpretowane jako jakieďż˝ pozbawione sensu bajty, a nie, tak jak
powinny, jako UTF-8.
$rt=encode("utf-8",$upline);
To w�a�nie powoduje, �e $rt te� zawiera strumie� bajt�w, pozbawiony
flagi UTF-8 i dlatego wtedy to "dzia�a".
Pzdr,
Tomasz
PS. Dobrym zwyczajem jest nieu�ywanie fileglobowych uchwyt�w plik�w.
Czyli zamiast:
open(DS,"wydaw file.txt");
daj:
open(my $ds, "wydaw file.txt");
Podstawowym problemem z tymi pierwszym uchwytem jest to, �e jest on
zawsze w globalnym zakresie, z czego mog� wynikn�� r�ne, dziwne b��dy,
na przyk�ad:
sub open_handle {
open (A, '>', 'lol.txt');
}
open_handle;
print A "test";
To nie wy�wietli b��du mimo i� wydawa�oby si�, �e A jest lokalne tylko
dla funkcji open_handle. Nast�puj�cy kod ju� wywo�a b��d:
sub open_handle {
open (my $a, '>', 'lol.txt');
}
open_handle;
print $a "test";
PS2. strict i warnings nie bolďż˝ :)
--
"Lisp has all the visual appeal of oatmeal with fingernail clippings
mixed in." - Larry Wall