Size: a a a

2020 April 12

AP

Anton Petrusevich in Modern::Perl
ну eval "use Module" модуль то грузит. вот с импортом что-то непонятное
источник

AP

Anton Petrusevich in Modern::Perl
Vyacheslav Olkhovchenkov
что-то я торможу, для условного use модуля нормальный вариант -- только в eval этот use засовывать?
есть вот такой вариант:
use if CONDITION, "MODULE", ARGUMENTS;
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
да у меня просто на одном из хостов модуль не стоит, но в той ветке исполнения что там нужна -- он нафиг не нужен. а компиляция обламывается.
источник

AP

Anton Petrusevich in Modern::Perl
Vyacheslav Olkhovchenkov
да у меня просто на одном из хостов модуль не стоит, но в той ветке исполнения что там нужна -- он нафиг не нужен. а компиляция обламывается.
тогда просто BEGIN { eval { require ... } }
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
т.е. мне просто что бы если внурь if() не захожу, то оно бы и не обламывалось там там use несуществующего модуля.
источник

AP

Anton Petrusevich in Modern::Perl
require тебе нужен. варианты использования уже привели
источник

AP

Anton Petrusevich in Modern::Perl
перлдок цитировать не буду, так что поверь на слово, require имеет специальный случай в первловом компиляторе именно чтобы понимать БлаБла::БлаБла
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
да, это я уже прочитал.
источник

AP

Anton Petrusevich in Modern::Perl
Vadim Goncharov
я себе в один скрипт воткнул eval "use Time::HiRes qw(time)" и забыл
а, всё, я вспомнил. я же разбирался раньше уже. всё отработало как надо, всё было проимпортировано. проблема в том, что компайл тайм случился раньше и time было уже связано со стандартным буилтинсом.
источник

AP

Anton Petrusevich in Modern::Perl
$ perl -E 'eval "use Time::HiRes qw(time)"; say time()'
1586707322

$ perl -E 'BEGIN { eval "use Time::HiRes qw(time)"; } say time()'
1586708635.52763
источник

VG

Vadim Goncharov in Modern::Perl
а, отоночо
источник

О

Оскар in Modern::Perl
$ perl -E 'eval "use Time::HiRes qw(time)"; say &time'
1586710805.69439
;)
источник

SZ

Sergey Zhmylove in Modern::Perl
Оскар
$ perl -E 'eval "use Time::HiRes qw(time)"; say &time'
1586710805.69439
;)
Это не тот scope имён, не тот эффект. Ты б ещё предложил keyword сделать. Надо просто в begin это вызывать, как Антон и написал.
источник
2020 April 13

VZ

Vladimir Zhavoronkov in Modern::Perl
Использую XML::LibXML, он иногда пишет в  stderr строку 'error : string is not in UTF-8'. Как можно перехватить stderr в момент вызова?
источник

a

allter in Modern::Perl
Vladimir Zhavoronkov
Использую XML::LibXML, он иногда пишет в  stderr строку 'error : string is not in UTF-8'. Как можно перехватить stderr в момент вызова?
Не проще ли исправить данные? Он специально пишет, что бы никто не отстрелил ногу. А отловить место - через $SIG{__WARN__}, наверное.
источник

VZ

Vladimir Zhavoronkov in Modern::Perl
allter
Не проще ли исправить данные? Он специально пишет, что бы никто не отстрелил ногу. А отловить место - через $SIG{__WARN__}, наверное.
через сигнал не ловится почему-то, это обертка над сишным кодом, libxml2, мб поэтому такое поведение.
источник

a

allter in Modern::Perl
Vladimir Zhavoronkov
через сигнал не ловится почему-то, это обертка над сишным кодом, libxml2, мб поэтому такое поведение.
Тогда скорее всего не получится. Можно попробовать кастомный STDERR сделать, но там уже не получится найти место. Так что проще искать, когда появилось и по коммитам найти место, где кривая кодировка получается.
источник

VZ

Vladimir Zhavoronkov in Modern::Perl
С тем что надо устранять причину согласен. Тут еще интерес как такой варнинг подавлять.
источник

VZ

Vladimir Zhavoronkov in Modern::Perl
allter
Тогда скорее всего не получится. Можно попробовать кастомный STDERR сделать, но там уже не получится найти место. Так что проще искать, когда появилось и по коммитам найти место, где кривая кодировка получается.
Эта ошибка встречается в логах, в эксепшенах, например 'package=HASH(0xb335db0)string is not in UTF-8', пытаюсь найти баг в движке.
источник

a

allter in Modern::Perl
Vladimir Zhavoronkov
С тем что надо устранять причину согласен. Тут еще интерес как такой варнинг подавлять.
Для этого-то, скорее всего, достаточно переоткрыть STDERR в /dev/null . Но тогда и других варнингов не будет.
источник