Xpoint
   [напомнить пароль]

Хитрые приемы

Хитрые приемы

Конструкция @{[]} (dereferencing of list reference) позволяет удобно производить любые операции внутри double quoted строк:

>perl -w
print "2 + 3 = @{[ 2 + 3 ]}\n";
my $t = time;
print "@{[ time - $t ]} seconds passed\n";
^D
2 + 3 = 5
0 seconds passed

Дает ли конструкция @{[]} выигрыш по длине строки в сравнении с традиционным «разрыванием»? Сравните:

print "Whoa, deja vu... @{[ time - $t ]} seconds passed\n"; 
print("Whoa, deja vu... ".( time - $t )." seconds passed\n");
# опускать скобки в последней строчке нельзя!

Некоторые люди считают конструкцию @{[]} слишком перегруженной. Отчасти они правы: 5 дополнительных символов, и все — пунктуационные! В целом ряде случаев бывает логично использовать sprintf или printf вместо @{[]}. Например, сравните читабельность:

print  "Whoa, deja vu... @{[ time - $t ]} seconds passed\n"; 
printf "Whoa, deja vu... %s seconds passed\n", (time - $t);
Powered by POEM™ Engine Copyright © 2002-2005