Снова perl. Немного о встроенных переменных
25.08.2009
По мотивам стандартной документации Perlvar.
Считать целиком файл в переменную:
open (MOCK, $filename) or die "$!";
local $/;
# переопределяем встроенную переменную "разделитель строк" ($/ или $INPUT_RECORD_SEPARATOR или $RS)
$_ =<MOCK> ; # захавать моск файл целиком
close (MOCK);
Напечатать содержимое массива:
@a=qw( 1 2fewf wf g ag f);
local $,="\n";
# переопределяем встроенную переменную "разделитель полей" ($, или $OUTPUT_FIELD_SEPARATOR или $OFS)
print @a;
Печатать все строки после строки 25
perl -n -e 'print if $.>25' file.txt # используем встроенную переменную "номер текущей строки" ($. или $INPUT_LINE_NUMBER или $NR)
Напечатать переменные среды:
perl -e ‘while ( ($a,$b)=each(%ENV) ) { print «$a=$b\n»; }’; # Используем встроенный хэш %ENV, который содержит переменные среды окружения
Использовать имя программы:
print "Usage: $0 [-k|--kill-all-humans]\n";
# используем встроенную переменную "имя исполняемой программы" ($0 или $PROGRAM_NAME)
Посмотреть версию perl:
print $];
print $^V;
Посмотреть операционную систему:
print $^O;
;
print POSIX::uname()
Посмотреть, когда была запущена программа:
print $^T;
# в секундах с 1970 года, смотри time(). Встроенная переменная $^T или $BASETIME
Напечатать переменные среды:
perl -e 'while ( ($a,$b)=each(%ENV) ) { print "$a=$b\n"; }';
# Используем встроенный хэш %ENV
25.08.2009 в 20:08
никогда, никогда не стоит делать local $_ = ;
это плохой пример.
27.08.2009 в 00:07
Вот блин, согласен — машинально влепил. Исправляюсь ;)