До сегодняшнего дня я не задумывался о том, что действия с оператором defined-or (//) возможно объединять в цепочки, и это весьма удобно.
Например:
my $ip =
$ENV{X_HTTP_FORWARDED_FOR} //
$ENV{HTTP_X_REAL_IP} //
$ENV{REMOTE_ADDR};
Соответственно, добавить новый вариант и одновременно установить нужный приоритет значению, очень просто.
my $ip =
$page->param('request_ip') //
$ENV{X_HTTP_FORWARDED_FOR} //
$ENV{HTTP_X_REAL_IP} //
$ENV{REMOTE_ADDR};
Комментировать