LINUX.ORG.RU

[Perl] print <<EOF и gettext

 


0

0

print <<EOMSG;
Localized message following:
gettext(«Hello, world!»)

EOMSG

Нужно в сотне разных мест, но вызов функции внутри print <<EOF; не работает!
Может, как-то через eval пропустить сначала?

★★★★★
#!/usr/bin/perl
use strict;

sub gettext
{
    'local '.shift;
}

my $gettext=sub
{
    gettext(@_);
};

print <<EOMSG;
Localized message following:
@{[$gettext->("Hello, world!")]}
EOMSG

iSage ★★★★
()
Ответ на: комментарий от www_linux_org_ru

Переменные и функции в heredoc интерполируются по-разному.
У вас переменная. А топикстартеру нужна функция.

iSage ★★★★
()
Ответ на: комментарий от www_linux_org_ru

Хеш ничем не плох. Но именно для хранения строк, а не обработки.
Ибо иначе нельзя переключить на лету язык, нельзя использовать формы множественных чисел.
Я правда не в курсе, что за задача у опа.
К тому же, ежели там все УЖЕ построено на геттексте, то что проще: дописать переменную и сделать реплейс, или переводить все языковые файлы в хеши?
Ну а синтаксис - что поделать, никто за heredoc не тянул.

iSage ★★★★
()
Ответ на: комментарий от www_linux_org_ru

Ну и в целом да, зависит от того, нужна ли. По тексту топикстартера - нужна. А как там на самом деле знает только он.

iSage ★★★★
()
Ответ на: комментарий от www_linux_org_ru

По некоторым объективным причинам я не могу, не имею права, впечатывать перевод в текст программы. Были одни кретины, они уже так сделали, вот теперь я ЭТО и разгребаю :(
В итоге пришёл к такому варианту:
print "
<html>
<head>
<title>".gettext('This is a title').«</title>
</head>»

И т.д.
Цель: генерировать удобочитаемый нормально отформатированный HTML-код в любой удобной для конечного вывода кодировке.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от iSage

iSage, спасибо огромное, думаю, мне Ваш совет не сейчас, так ещё когда-нибудь пригодится. Уважаю настоящий профессионализм!

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

А не лучше ли для этого тогда взять Template::Toolkit?

Я не профессионал, я еще только учусь)

iSage ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.