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