- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
sub Tgetent {
local($TERM) = @_;
local($TERMCAP,$_,$entry,$loop,$field);
# warn "Tgetent: no ospeed set" unless $ospeed;
foreach $key (keys %TC) {
delete $TC{$key};
}
$TERM = $ENV{'TERM'} unless $TERM;
$TERM =~ s/(\W)/\\$1/g;
$TERMCAP = $ENV{'TERMCAP'};
$TERMCAP = '/etc/termcap' unless $TERMCAP;
if ($TERMCAP !~ m:^/:) {
if ($TERMCAP !~ /(^|\|)$TERM[:\|]/) {
$TERMCAP = '/etc/termcap';
}
}
if ($TERMCAP =~ m:^/:) {
$entry = '';
do {
$loop = "
open(TERMCAP,'<$TERMCAP') || die \"Can't open $TERMCAP\";
while (<TERMCAP>) {
next if /^#/;
next if /^\t/;
if (/(^|\\|)${TERM}[:\\|]/) {
chop;
while (chop eq '\\\\') {
\$_ .= <TERMCAP>;
chop;
}
\$_ .= ':';
last;
}
}
close TERMCAP;
\$entry .= \$_;
";
eval $loop;
} while s/:tc=([^:]+):/:/ && ($TERM = $1);
$TERMCAP = $entry;
}
foreach $field (split(/:[\s:\\]*/,$TERMCAP)) {
if ($field =~ /^\w\w$/) {
$TC{$field} = 1;
}
elsif ($field =~ /^(\w\w)#(.*)/) {
$TC{$1} = $2 if $TC{$1} eq '';
}
elsif ($field =~ /^(\w\w)=(.*)/) {
$entry = $1;
$_ = $2;
s/\\E/\033/g;
s/\\(200)/pack('c',0)/eg; # NUL character
s/\\(0\d\d)/pack('c',oct($1))/eg; # octal
s/\\(0x[0-9A-Fa-f][0-9A-Fa-f])/pack('c',hex($1))/eg; # hex
s/\\(\d\d\d)/pack('c',$1 & 0177)/eg;
s/\\n/\n/g;
s/\\r/\r/g;
s/\\t/\t/g;
s/\\b/\b/g;
s/\\f/\f/g;
s/\\\^/\377/g;
s/\^\?/\177/g;
s/\^(.)/pack('c',ord($1) & 31)/eg;
s/\\(.)/$1/g;
s/\377/^/g;
$TC{$entry} = $_ if $TC{$entry} eq '';
}
}
$TC{'pc'} = "\0" if $TC{'pc'} eq '';
$TC{'bc'} = "\b" if $TC{'bc'} eq '';
}
eth0 01.11.2010 19:03 # +3
KirAmp 01.11.2010 22:07 # 0
Dummy00001 01.11.2010 19:11 # 0
Oleg_quadro 01.11.2010 19:35 # 0
Но повторюсь: "По существу надо, а не потому, что перл не нравится.",
Надо расписать конкретно почему здесь плохой код, а не постить, потому что perl не нравится.
Это я не чтоб вам надоесть, это я за чистоту говнокода.
Arigato 01.11.2010 19:38 # −3
Да хотя бы на тело цикла гляньте:
Это не говнокод?
Oleg_quadro 01.11.2010 19:42 # +1
Добавь автор явные строки, было бы лучше.
Oleg_quadro 01.11.2010 19:43 # −1
Oleg_quadro 01.11.2010 19:48 # 0
Arigato 01.11.2010 19:52 # +1
Oleg_quadro 01.11.2010 19:53 # 0
seonull 01.11.2010 20:44 # 0
Oleg_quadro 01.11.2010 22:21 # 0
bugmenot 01.11.2010 23:27 # +1
krushi 02.11.2010 01:03 # 0
Анонимус 01.11.2010 21:02 # +1
Обычно перловики (в отличии кстати от пхпшников) используют готовые модули, коих на CPANе пруд-пруди.
Так что автор этого кода видимо совершенно не понимал сути перла, наверное он много писал на php.
Хотя и этот код впринципе читаем.
зы: интересно, как бы автор переписал этот код на другой прекрасный язык программирования
Arigato 01.11.2010 22:40 # −1
Да, я тоже считаю, что автор данного кода не понимал сути перла и специализировался на php. Тем более, что этот код взят из файла lib/termcap.pl, поставляемого вместе с дистрибутивом Perl.
# $RCSfile: termcap.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:16 $
krushi 02.11.2010 00:56 # +3
...А теперь открываем исходник и читаем, что написано в комментариях ниже этой самой строчки SVN:
krushi 02.11.2010 00:58 # 0
Arigato 02.11.2010 08:29 # 0
При этом было интересно наблюдать за реакцией, когда выдвинули предположение, что это php-шник писал :)
krushi 02.11.2010 10:13 # 0
seonull 02.11.2010 11:33 # 0
krushi 02.11.2010 11:50 # 0
seonull 02.11.2010 12:07 # 0
- злоупотребление "$_" - ставим галочку.
- злоупотребление регекспами - ставим галочку.
- предпочтение краткости удобочитаемости - ставим галочку.
krushi 02.11.2010 12:25 # 0
Согласен, "как бы общеизвестный факт".
Что касается "галочек", то см: http://oreilly.com/catalog/9780596001735.
seonull 02.11.2010 12:44 # 0
krushi 02.11.2010 13:00 # −1
seonull 02.11.2010 13:23 # 0
krushi 02.11.2010 13:43 # 0
Arigato 02.11.2010 17:37 # +1
Arigato 02.11.2010 17:39 # +1
da4ever 02.11.2010 19:05 # −1
Arigato 02.11.2010 19:55 # −1
Анонимус 02.11.2010 23:28 # −1
что Вас смущает? Регулярки?
da4ever 02.11.2010 23:38 # +2
два ваших последних говнокода, как бы это вежливее сказать, не доставляют достаточно положительных эмоций. длинные треды про "перл - говно" то ли печальны, то ли унылы.
именно поэтому появились вопросы:
- "что вас так задело?",
- "зачем вы тратите свое время на разбор стандартных модулей в поисках евалов и черезмеоного использования регеспов?",
- "кому и что вы пытаетесь доказать?"
да, пока только эти три.
krushi 02.11.2010 19:45 # −1
Анонимус 02.11.2010 23:29 # 0
Можно подумать что регулярки в его любимом php пахнут как-то иначе
krushi 02.11.2010 23:51 # −2
Я думаю, категоричность и необъективность оценок -- следствие... как бы покорректнее выразиться... профессиональной изолированности.
Arigato 03.11.2010 09:01 # 0
Можно подумать что регулярки в его любимом php пахнут как-то иначе
Регулярки в PHP мало чем от перловких отличаются.
seonull 03.11.2010 09:27 # +1
krushi 03.11.2010 10:01 # +1
поолучится всего 3 результата. И в каждом случае eval абсолютно оправдан. К примеру, в модуле Benchmark.
seonull 03.11.2010 19:35 # 0
krushi 04.11.2010 00:24 # −2
seonull 05.11.2010 09:49 # 0
не знаю что у вас "нет", но у меня стандартные модули лежат именно в \lib. может под стандартными модулями вы понимаете какие-то труЪ красноглазые модули. лично я под стандартными имел ввиду модули идущие в составе дистрибутива.
krushi 05.11.2010 11:01 # +1
11 результатов на 914 файлов. Откуда число 101?
seonull 05.11.2010 11:34 # 0
Benchmark.pm
Cwd.pm
diagnostics.pm
Errno.pm
Fatal.pm
JSON.pm
SelfLoader.pm
Shell.pm
Thread.pm
threads.pm
version.pm
Win32.pm
ActiveState\ModInfo.pm
ActiveState\Scineplex.pm
Archive\Zip\BufferedFileHandle.pm
Archive\Zip\MemberRead.pm
Archive\Zip\MockFileHandle.pm
Attribute\Handlers.pm
Class\Struct.pm
Compress\Zlib.pm
Compress\Raw\Bzip2.pm
Compress\Raw\Zlib.pm
CPAN\Distribution.pm
CPAN\Distroprefs.pm
CPAN\InfoObj.pm
CPAN\Kwalify.pm
CPANPLUS\Dist\Build.pm
CPANPLUS\Internals\Source.pm
CPANPLUS\Shell\Classic.pm
CPANPLUS\Shell\Default.pm
Data\Dump.pm
Data\Dumper.pm
DBD\Proxy.pm
Devel\Peek.pm
Encode\Alias.pm
ExtUtils\CBuilder.pm
ExtUtils\Install.pm
ExtUtils\Installed.pm
ExtUtils\Packlist.pm
File\CheckTree.pm
File\Fetch.pm
File\Spec.pm
File\Spec\Cygwin.pm
File\Spec\Epoc.pm
File\Spec\Functions.pm
File\Spec\Mac.pm
File\Spec\OS2.pm
File\Spec\Unix.pm
File\Spec\VMS.pm
File\Spec\Win32.pm
HTML\AsSubs.pm
HTML\Entities.pm
HTTP\Status.pm
IO\Dir.pm
IO\Handle.pm
IO\Seekable.pm
IO\Socket\UNIX.pm
List\Util.pm
List\Util\PP.pm
List\Util\XS.pm
Locale\Maketext\GutsLoader.pm
Math\Complex.pm
Module\Build.pm
Module\Build\Base.pm
Module\Build\Config.pm
Module\Build\ModuleInfo.pm
Module\Build\Notes.pm
Module\Build\PodParser.pm
Module\Build\PPMMaker.pm
Module\Build\Version.pm
Module\Build\Platform\aix.pm
Module\Build\Platform\Amiga.pm
Module\Build\Platform\cygwin.pm
Module\Build\Platform\darwin.pm
Module\Build\Platform\Default.pm
Module\Build\Platform\EBCDIC.pm
Module\Build\Platform\MacOS.pm
Module\Build\Platform\MPEiX.pm
Module\Build\Platform\os2.pm
Module\Build\Platform\RiscOS.pm
Module\Build\Platform\Unix.pm
Module\Build\Platform\VMS.pm
Module\Build\Platform\VOS.pm
Module\Build\Platform\Windows.pm
Net\Ping.pm
Net\Telnet.pm
Scalar\Util.pm
Scalar\Util\PP.pm
SQL\Statement.pm
Sub\Uplevel.pm
Term\Cap.pm
Test\Builder.pm
Test\More.pm
Test\Simple.pm
Test\Builder\Module.pm
Text\Diff\Table.pm
threads\shared.pm
Time\HiRes.pm
version\vxs.pm
Win32\TieRegistry.pm
krushi 05.11.2010 12:34 # 0
И так почти везде. К алгоритмам это не имеет никакого отношения.
Oleg_quadro 06.11.2010 15:04 # +1
$VERSION = '0.3607';
$VERSION = eval $VERSION;
krushi 06.11.2010 18:27 # +1
Module::Install, где парсеру правильнее давать строку. В то же время, в рантайме номер версии должен быть числом.
Это необходимо, если версия выглядит как: 0.001_001. Без кавычек парсер установщика неверно проинтерпретирует ее как число 0.001001. Тогда как часть после подчеркивания здесь, по соглашению, является постфиксом, указывающим на девелоперский релиз.
Oleg_quadro 06.11.2010 18:32 # 0
Arigato 06.11.2010 22:30 # −5
Ну тоже знатное говнецо.
Arigato 02.11.2010 17:34 # −4
Что-то не понял, вы спамите тут книжками по перлу за $49.99?
krushi 02.11.2010 21:52 # 0
Arigato 02.11.2010 22:19 # −4
krushi 02.11.2010 22:33 # −1
Arigato 02.11.2010 23:17 # −2
Т.е. достаточно глянуть только на обложку книги, как сразу все вопросы, заданные seonull отпадут сами собой?
А ну ка, попробую. Смотрю на обложку книги... Вижу: верблюды, Perl... Ясно, рас там Perl, в таком случае вопросы отпадают. ДА и какие тут могут быть вопросы, если это перл :)
krushi 02.11.2010 23:27 # 0
Точно глянули? А то там не верблюды, а собачка. Ниже текст на три экрана и оглавление, а под ними -- интервью с автором.
Arigato 02.11.2010 17:31 # 0
Анонимус 02.11.2010 15:40 # +4
в 92м году вообще писали немного иначе (поищите сырцы любой программы 1992го года).
Кроме того этот файл не рефакторят (там написано что no longer being maintained).
Вместо того, что бы искать файлы 20ти летней давности и смеятся над ними -- занялись бы лучше самообразованием, глядишь поумнеете.