Size: a a a

2021 April 08

AP

Anton Petrusevich in Modern::Perl
либо, устаревший способ method PACKAGE
источник

sA

saintserge Andreev in Modern::Perl
нет, вызывается именно так $package->method( $param ). В дебагере $self содержит имя пакета. то есть этот $param как то привязна
источник

sA

saintserge Andreev in Modern::Perl
но куда и как?
источник

AP

Anton Petrusevich in Modern::Perl
а, такое тоже бывает, да
источник

AP

Anton Petrusevich in Modern::Perl
иногда даже можно "blabla"->method("param") звать
источник

D

DarkPerl in Modern::Perl
ну я ж говорю, семантика вызова функции. Оператор ->
источник
2021 April 09

sA

saintserge Andreev in Modern::Perl
Ну вопрос то не почему в $self имя пакета. А почему $self это еще и ссылка на хеш?
источник

D

DarkPerl in Modern::Perl
Вам неявно первым аргументом подставляется имя
источник

AP

Anton Petrusevich in Modern::Perl
нет, тут одно или другое
источник

sA

saintserge Andreev in Modern::Perl
ну попробуйте это запустить. Оно работает.
источник

AP

Anton Petrusevich in Modern::Perl
11 ночи, мне лень
источник

D

DarkPerl in Modern::Perl
package MyPackege;
sub foo{
   return shift(@_);
}
print MyPackege->foo();
источник

D

DarkPerl in Modern::Perl
Эффект будет тот же
источник

sA

saintserge Andreev in Modern::Perl
Да, но суть в другом. Я потом по имени пакета могу получить данные которые в MyPackage
источник

D

DarkPerl in Modern::Perl
$self->{_cache} # поэтому наверное )
источник

sA

saintserge Andreev in Modern::Perl
хотя это просто имя пакета. или это как то отображется в %main ?
источник

D

DarkPerl in Modern::Perl
Вы пытаетесь разименовать то, чего не было. Perl вам это создал и проинициализировал. Я думаю, что так как то )
источник

AP

Anton Petrusevich in Modern::Perl
$ perl -MData::Dumper -E ' package A; sub m { shift->{_c} = shift }; package main; say A->m(2); say Dumper \%{A::}'
A
$VAR1 = {
         'm' => *A::m
       };
источник

sA

saintserge Andreev in Modern::Perl
Понял - отстал!
источник

AP

Anton Petrusevich in Modern::Perl
а вот я как раз не понял про shift->{_c} = shift почему результатом "A" и что за эффект от присвоения :)
источник