Распечатать возврат метода - PullRequest
1 голос
/ 20 сентября 2011

Я знаю, в php я могу сделать что-то вроде этого

echo "{$this->method}";

, и я клянусь, что был способ сделать это в perl

Обновление: Что яя пытаюсь сделать, это распечатать скаляр, который возвращает метод.Я как бы надеялся сделать это внутри строки, как в php, просто потому, что я ленив: P.

Ответы [ 3 ]

5 голосов
/ 20 сентября 2011

Вы просто пытаетесь вычислить произвольное выражение внутри строки в двойных кавычках? Тогда, может быть, вы думаете о

print "@{[$this->method]}";

Существует также хитрость для вызова метода в скалярном контексте, но синтаксис немного менее понятен.

print "${\($this->method)}";
3 голосов
/ 20 сентября 2011

Хорошо, если $this->method выводит строку или число (например, PHP, Perl может автоматически преобразовывать числа в строки при необходимости), тогда вы можете сделать print $this->method . "\n";.

Если $this->method выводит структуру данных (например, ссылку на массив или ссылку на хэш), вы можете использовать Data::Dumper для просмотра структуры данных.По сути, print Dumper($foo) является Perl-эквивалентом PHP var_dump($foo).

Что именно вы пытаетесь сделать?

1 голос
/ 21 сентября 2011

Если $this->method возвращает строку, вы можете сделать это:

print $this->method . "\n";

без кавычек.Это напечатает вашу строку.Иногда это может привести к неуклюжим виду:

print "And we have " . $this->method . " and " . $that->method . " and " . $there->method . "\n";

. В этом случае вы можете использовать небольшую хитрость программирования:

print "And we have @{[$this->method]} and @{[that->method]} and @{[$their->method]}\n";

Окружение функции с помощью @{[]} распечаткизначение функции.Кто-то объяснил мне это однажды, но я не могу вспомнить, почему это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...