Size: a a a

2021 February 06

AK

Andrey Konovalov in Modern::Perl
eval sprintf 'my %s $%s', $pkg, $var_name
источник

AK

Andrey Konovalov in Modern::Perl
Сразу понятно стало, спасибо
источник

AK

Andrey Konovalov in Modern::Perl
Мой eval не канает?
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
Мой eval не канает?
Почему нет? Всё работает и с sprintf, только зачем:
источник

SZ

Sergey Zhmylove in Modern::Perl
@PerlBanjoBot
package xxx;
package yyy;
$zzz::z = \$zzz::z;
package main;
for my $pkg (qw( main xxx yyy zzz nothing )) {
   say "($pkg) exists" if
   eval sprintf "my %s \$_ = 1", $pkg;
};
источник

P

PerlBanjoBot in Modern::Perl
Sergey Zhmylove
@PerlBanjoBot
package xxx;
package yyy;
$zzz::z = \$zzz::z;
package main;
for my $pkg (qw( main xxx yyy zzz nothing )) {
   say "($pkg) exists" if
   eval sprintf "my %s \$_ = 1", $pkg;
};
(main) exists
(xxx) exists
(yyy) exists
(zzz) exists
https://PerlBanjo.com/6673a3602c
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
В пакете мы пытаемся определить переменную x. Вот её имя лучше рандомом
Чтобы определить переменную в пакете можно использовать один из пяти (а может и больше, лень думать) способов и my к ним не относится :)
источник

OP

Oleg Pronin in Modern::Perl
Sergey Zhmylove
@PerlBanjoBot
package yyy;
my $invisible_variable = 1;
package main;
for my $pkg (qw( main xxx yyy )) { eval "my $pkg \$x = 1" and say "($pkg) exists" };
Эээ зачем так сложно?
say scalar keys %yyy::;
Будет 0 если пакета нет или в пакете нет ни одной внешне видимой сущности (что для стороннего пользователя одно и тоже)
источник

SZ

Sergey Zhmylove in Modern::Perl
Oleg Pronin
Эээ зачем так сложно?
say scalar keys %yyy::;
Будет 0 если пакета нет или в пакете нет ни одной внешне видимой сущности (что для стороннего пользователя одно и тоже)
Я уже это ему выше предлагал, пару недель назад.
А теперь предложил способ, который работает ещё точнее
источник

SZ

Sergey Zhmylove in Modern::Perl
Oleg Pronin
Эээ зачем так сложно?
say scalar keys %yyy::;
Будет 0 если пакета нет или в пакете нет ни одной внешне видимой сущности (что для стороннего пользователя одно и тоже)
И это неправда, что для стороннего пользователя это одно и то же
источник

AK

Andrey Konovalov in Modern::Perl
Oleg Pronin
Эээ зачем так сложно?
say scalar keys %yyy::;
Будет 0 если пакета нет или в пакете нет ни одной внешне видимой сущности (что для стороннего пользователя одно и тоже)
В пакете может и не быть таких сущностей. Я напоролся недавно на то, что JSON подгружен ещё где-то, но некие XS и PP от него были видны и в моём пакете, хотя new не работал
источник

AK

Andrey Konovalov in Modern::Perl
TYPE конечно оригинальная штука: https://perldoc.perl.org/functions/my Сколько прошло с момента добавления такого синтаксиса - и даже к Perl 7 никто так и не придумал единственного разумного применения.
источник

AP

Anton Petrusevich in Modern::Perl
Andrey Konovalov
TYPE конечно оригинальная штука: https://perldoc.perl.org/functions/my Сколько прошло с момента добавления такого синтаксиса - и даже к Perl 7 никто так и не придумал единственного разумного применения.
в cperl есть план по его использованию
источник

DF

Denis F in Modern::Perl
Я думал на нем сделать перегрузку методов, но оказалось что толком не применить его
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
В пакете может и не быть таких сущностей. Я напоролся недавно на то, что JSON подгружен ещё где-то, но некие XS и PP от него были видны и в моём пакете, хотя new не работал
А вот это уже маловероятно
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
TYPE конечно оригинальная штука: https://perldoc.perl.org/functions/my Сколько прошло с момента добавления такого синтаксиса - и даже к Perl 7 никто так и не придумал единственного разумного применения.
так "единственное" - это не про перл :)
источник

AS

Anton Selin in Modern::Perl
Всем привет. Изучаю Perl, и случайно наткнулся на неочевидную (для себя) вещь.
То, что push не выдает ошибку на undefined - это особенности внутренней реализации функции push?
источник

VG

Vadim Goncharov in Modern::Perl
Anton Selin
Всем привет. Изучаю Perl, и случайно наткнулся на неочевидную (для себя) вещь.
То, что push не выдает ошибку на undefined - это особенности внутренней реализации функции push?
man perlref /autovivification
источник

IB

Ivan Bessarabov in Modern::Perl
Anton Selin
Всем привет. Изучаю Perl, и случайно наткнулся на неочевидную (для себя) вещь.
То, что push не выдает ошибку на undefined - это особенности внутренней реализации функции push?
Иногда удобно скидывать код с помощью вот такого сервиса — сразу видно что и как работает и легко другим взять и доработать код — https://perlbanjo.com/12b67482d0
источник

AS

Anton Selin in Modern::Perl
Ivan Bessarabov
Иногда удобно скидывать код с помощью вот такого сервиса — сразу видно что и как работает и легко другим взять и доработать код — https://perlbanjo.com/12b67482d0
Спасибо, возьму себе на вооружение.
источник