Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Perl] ucfirst в кириллице (https://forum.antichat.xyz/showthread.php?t=201510)

apofis 04.05.2010 07:35

[Perl] ucfirst в кириллице
 
Как можно использовать ucfirst с русским текстом?

krypt3r 04.05.2010 07:43

use utf8;

apofis 04.05.2010 08:40

Если текст брать из файла, то не получается.
Например, если создать текстовый файл с текстом: тестовое слово (и сохранить по умолчанию в кодировке ANSI), то в итоге получается такой текст: тҐ±Іовое слово. Если же созданный текстовый файл сохранить в UTF8, то никаких изменений не происходит вообще.

Код такой:

Код:

use open ":utf8";
use utf8;
open (FILE, '<slovo.txt');
@slovo = <FILE>;
close FILE;
$text = ucfirst"@slovo";
print $text;
open f, ">ucfirsted.txt";
print f "$text\n";
close f;
<STDIN>;


krypt3r 04.05.2010 09:20

Вы для начала с кодировкой определитесь. У вас прагмы для utf8, а открываете файл в цп1251
Исходный текст
Код:

тестовое слово
текст брать из файла
не получается
файл с текстом

UTF-8
Код:

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use open qw /:utf8 :std/;

$\ = "\n";
open my $F, '<', '82_utf8.txt' or die "open error: $!";
chomp (my @lines = <$F>);
close $F;
@lines = map {ucfirst $_} @lines;
print join ' : ', @lines;

Вывод
Код:

Тестовое слово : Текст брать из файла : Не получается : Файл с текстом
ЗЫ. Если у вас все же кодировка CP1251, то ее и стоит указать либо в прагме open, либо при открытии файла
Код:

use open ':encoding(cp1251)';
open my $FILE, '<:encoding(cp1251)', 'file.txt';


apofis 04.05.2010 09:41

Цитата:

Сообщение от krypt3r
Код:

use open ':encoding(cp1251)';

Спасибо)
Так работает


Время: 09:41