From: Brother Rabbit 2:460/5858 03 Apr 2019 22:59 +0300
To: Eugene Grosbein grosbein.net
Subject: регулярные выражения.
Hi, Eugene! 04 апр 19 02:49, Eugene Grosbein -> Mikhail Stakhanov: EG> (undef, $echo, $desc) = $_ =~ /^(Hold)?,(.*?),(.*?),+/); Зачем? Нас же совсем не интересует холд или нет. Можно ваще вот так: ( $echo, $desc ) = $_ =~ /^[Hold]*,([^,]),([^,]),+/); А, вот на счет "не запятая" вместо "любое количество любых символов, но не жадно", я сомневаюсь. Have nice nights. Brother Rabbit.
From: Michael Dukelsky 2:5020/1042 10 Jun 2019 16:50 +0300
To: Eugene Grosbein grosbein.net
Subject: что я не так делаю?
Привет, Eugene! 10 June 2019 03:27, Eugene Grosbein послал(а) письмо к Brother Rabbit: EG> #!/usr/local/bin/perl EG> use 5.22.0; EG> use strict; EG> use warnings; EG> use locale; EG> my @wrds = qw(по закону); EG> my $w; EG> foreach $w ( @wrds ) { EG> print "Hайдено: $w\n" if $ARGV[0] =~ /\b$w\b/i; EG> } EG> $ ./find.pl "по новому закону" EG> Hайдено: по EG> Hайдено: закону EG> $ ./find.pl "гипопотам не указ закону" EG> Hайдено: закону EG> $ ./find.pl "по закону" EG> Hайдено: по EG> Hайдено: закону EG> \b обозначает границу слова в регулярных выражениях. EG> backspace оно обозначает внутри классов символов (в квадратных EG> скобках) и вне регулярных выражений при интерполяции строк. В 5.16 это не работает. Если закомментировать строчку "use 5.22.0;", то получаем $ ./find.pl "по новому закону" по новому закону $ ./find.pl "гипопотам не указ закону" гипопотам не указ закону $ ./find.pl "по закону" по закону Желаю успехов, Eugene! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Brother Rabbit 2:460/5858 19 Jan 2019 13:50 +0200
To: Mikhail Stakhanov 2:5020/932.1
Subject: txt2pkt
Hi, Mikhail! 19 янв 19 02:03, Mikhail Stakhanov -> All: MS> а есть ли сабдж на эхотаге ? может кто писал уже ? Есть pktview в комплекте HPT. Сделать из него уже не трудно, я думаю. ($origNode,$destNode,$year,$month,$day,$hour,$minute,$seconds, $baud,$type,$origNet,$destNet, # Follows Type2+ packet fields... $ProductCode,$RevMaj,$Password,$QMOrigZone,$QMDestZone,$AuxNet,$CapValidate, $PCodeHi,$RevMin,$Cap,$origZone,$destZone,$origPoint,$destPoint,$appdata)= unpack('S2S3S3 S2S2 C2A8S2S2 C2SS4I',$pkthdr); Have nice nights. Brother Rabbit.
From: Michael Dukelsky 2:5020/1042 17 Apr 2019 16:15 +0300
To: Eugene Grosbein grosbein.net
Subject: strif
Привет, Eugene! 16 April 2019 14:36, Eugene Grosbein послал(а) письмо к Mikhail Stakhanov: EG> @REPLY: 2:5020/932.1 5cb4c031 EG> 15 апр. 2019, понедельник, в 18:31 NOVT, Mikhail Stakhanov написал(а): Хм. А у меня этого письма нет. :-( Я должен был его получить от 5020/4441. Я единственный, кто не получил это письмо от /4441? Желаю успехов, Eugene! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Eugene Grosbein grosbein.net 01 Apr 2019 15:30 +0300
To: Brother Rabbit 2:460/5858
Subject: freq скрипт
31 марта 2019, воскресенье, в 21:40 NOVT, Brother Rabbit написал(а): BR> sub getBSOname BR> { BR> my ( $addr, $out ) = @_; BR> $addr =~ /([\d]+)\:([\d]+)\/([\d]+)\.?([\d]*)/; BR> my ( $zone, $net, $node, $point ) = ( $1, $2, $3, $4 ); BR> $bsoname = $out; BR> $bsoname .= ".".sprintf("%03x", $zone) if $zone != $defaultzone; BR> mkdir $bsoname unless -e $bsoname; BR> $bsoname .= "\\" if $bsoname =~ /\\/; BR> $bsoname .= "\/" if $bsoname =~ /\//; BR> $bsoname .= sprintf("%04x", $net) . sprintf("%04x", $node); BR> if ( defined ( $point ) && $point != 0 ) { BR> mkdir $bsoname unless -e $bsoname; BR> $bsoname .= "\\" if $bsoname =~ /\\/; BR> $bsoname .= "\/" if $bsoname =~ /\//; BR> $bsoname .= sprintf( "%08x", $point ); BR> } BR> return $bsoname; BR> } BR> === Import Windows Clipboard End === BR> $freqfilename = getBSOname($address, '/home/fido/out/fidonet') . '.req'; BR> Требуется глобальная переменная $defaultzone. Обычно берется из конфига или BR> указывается явно прямо в скрипте. И абсолютно никаких проверок. Что будет, если передан некорректный формат адреса, или формат корректный, но на месте создаваемого каталога уже есть такое имя, только это обычный файл? Я уж не говорю о странном склеивании sprintf("%04x", $net) . sprintf("%04x", $node) вместо одного простого вызова sprintf("%04x04x", $net, $node), и четырехкратного поиска слешей в $bsoname вместо однократного. Eugene -- Устав от радостных пиров, Hе зная страхов и желаний
From: Mikhail Stakhanov 2:5020/932.1 30 Mar 2019 02:12 +0200
To: All
Subject: freq скрипт
Здравствуйте, All! Прошу высказать замечания, так как скрипт писал вообще первый раз: -----freq.pl----- #!/usr/bin/perl -w # Генератор freq для запросов фалов # v0.1 от 29.03.2019г. # Работает пока только с 1й зоной use strict; use warnings; use Data::Dumper qw(Dumper); use Scalar::Util qw(looks_like_number); my $usage = \ 'EOT'; Использование: freq.pl Аргументы: node = 2:5020/932 или 5050/932 file = имя запрашиваемого файла EOT # Нужно прописать переменную outbound # для Windows \ пишется как \\ # для Linux / my $outbound="d:\\fido\\spool\\out\\"; if ($#ARGV<1) { die $usage }; my $adr=$ARGV[0]; my $fname=lc($ARGV[1]); my $temp_str=index($adr,":"); my $zone; if ($temp_str!=-1) { ($zone,$adr)=split(":",$adr); } else { $zone="2"; } print "Зона: $zone, "; $temp_str=index($adr,"/"); my $net; my $node; if ($temp_str!=-1) { ($net,$node)=split("/",$adr,$temp_str); } else { print "ошибка в поле адреса, шаблон *:*/*"; } print "Сеть: $net, "; print "Нода: $node\n"; if (!looks_like_number($zone)) { die "Зона должна быть числом!\n"}; if (!looks_like_number($net)) { die "Сеть должна быть числом!\n"}; if (!looks_like_number($node)) { die "Нода должна быть числом!\n"}; my $adr_hex=sprintf("%x",$net); if ($node<4096) {$adr_hex.="0"}; $adr_hex.=sprintf("%x",$node); my $freq=$adr_hex.".req"; open(HANDLE,">$outbound"."$freq"); print HANDLE $fname; close(HANDLE); ----- Всего наилучшего, Mikhail
From: Eugene Grosbein grosbein.net 30 Jan 2019 22:08 +0200
To: Gennadij Pastuhov 2:5036/26
Subject: hash, продолжение
30 янв. 2019, среда, в 16:33 NOVT, Gennadij Pastuhov написал(а): GP> Встретил сегодня такую конструкцию: GP> my $handler = { GP> owner_changed => 'process_owner_changed', GP> changed => 'process_changed', GP> created => 'process_created', GP> }->{$event}; GP> Здесь что, внутренний массив является ключом хэша? Hет. Фигурные скобки означают определение ссылки на анонимный хеш. Оператор -> в данном случае означает выборку значения из этого анонимного хеша по ссылке на него и по ключу $event. То есть, это краткая запись такой конструкции: my $handler; if ($event eq 'owner_changed') { $handler = 'process_owner_changed'; } elsif ($event eq 'changed') { $handler = 'process_changed'; } elsif ($event eq 'created') { $handler = 'process_created'; } Eugene -- Все любят естественный наркотик
From: Brother Rabbit 2:460/5858 09 Apr 2019 10:08 +0300
To: Eugene Grosbein grosbein.net
Subject: регулярные выражения.
Hi, Eugene! 06 апр 19 09:09, Eugene Grosbein -> Brother Rabbit: EG>>>>> (undef, $echo, $desc) = $_ =~ /^(Hold)?,(.*?),(.*?),+/); BR>>>> Зачем? Hас же совсем не интересует холд или нет. EG>>> undef как раз и означает, что нас первая группа не интересует. BR>> Да. Вопрос был в том, зачем ее вообще выделять в таком случае в скобки? EG> Скобки тут ради знака вопроса, чтобы он применялся ко всей группе. А зачем, если нам вообще не интересно, что там? EG>>> читабельность хуже, чем с круглыми скобками - новичка может сбить с EG>>> толку, да и остальным потребуется сначала сообразить, в чём тут финт. BR>> Мне кажется, что читается как раз проще всего, когда написано "не BR>> запятая", понятно, что нужен текст меджу запятыми. EG> Это несколько субъективно, конечно, кому как легче читается. EG> Лично мне .* читается легче любой другой нетривиально конструкции. Да, но сюда попадает вообще все, а нужно [^,]+. Have nice nights. Brother Rabbit.
From: Eugene Grosbein grosbein.net 23 Apr 2019 15:07 +0300
To: Mikhail Stakhanov 2:5020/932.1
Subject: помогите!!!
22 апр. 2019, понедельник, в 11:00 NOVT, Mikhail Stakhanov написал(а): >>---=== Куть офф "strif.pl" ===--- MS> в чем ошибка ? Даже пытаться не будут декодировать, как в прошлый раз делал. Hикаких вводных, никакой информации о входных данных, о том, что ожидается и что на самом деле получается. Hе надо так. Eugene -- Hаучить не кланяться авторитетам, а исследовать их и сравнивать их поучения с жизнью. Hаучить настороженно относиться к опыту бывалых людей, потому что жизнь меняется необычайно быстро.
From: Mikhail Stakhanov 2:5020/932.1 21 Jan 2019 19:56 +0200
To: All
Subject: perl 5.28.1
Здравствуйте, All! * Оригинал написан в ru.husky * Скопировано в ru.perl приплыл не собирается на роутере: ==== Checking your choice of C compiler and flags for coherency... I've tried to compile and run the following simple program: #include int main() { printf("Ok\n"); return(0); } I used the command: gcc -o try -O2 -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -fstack-protector-strong try.c -lpthread -lgdbm -ldb -lm -lcrypt -lutil -lc ./try and I got the following output: /opt/bin/ld: warning: libc.so.0, needed by /usr/lib/libgdbm.so, may conflict with libc.so.6 /opt/bin/ld: warning: libc.so.0, needed by /usr/lib/libgdbm.so, may conflict with libc.so.6 /opt/bin/ld: errno@@GLIBC_PRIVATE: TLS definition in /tmp/mnt/My_Passport/asusware.arm/bin/../lib/gcc/arm-openwrt-linux-gnueabi/6.3.0/libc.so.6 section .tbss mismatches non-TLS definition in /opt/lib/libc.so.0 section .bss /opt/lib/libc.so.0: error adding symbols: Bad value collect2: error: ld returned 1 exit status I can't compile the test program. You have a BIG problem. Shall I abort Configure [y] Ok. Stopping Configure. ==== Что посоветуете ? Всего наилучшего, Mikhail