1 Востаннє редагувалося Дмитро-Чебурашка (06.04.2016 15:57:45)

Тема: Примитивні запитання з мови Perl

Я хочу усі повідомлення перл з консолі переводити в текстовий документ.

Мене трохи нудить щоб ото переписуватти руками английську, щоб запитати у форумі або щоб сунути
оту фразу в пошуковик гуглу. Тим більш, що надалі я це можливо робитиму сотні разів.

Так от я в FAR-і відкриваю бат файл і потім запускаю його.

Загальна мета, ціль, ознайомитися з можливостями перл нормально, так що ви мене, якщо ж я все-таки що те
роблю правою рукою та через ліве вухо, поправте мене теж.

Reguljar2.cgi

#!/usr/bin/perl -w
use utf8;                  # говорит Perl что код нашей программа написан в кодировке utf8.
use open qw(:std :utf8);   # говорит Perl что все потоки STDIN, STDOUT, STDERR должны работать с utf8.
use warnings;
sleep(10);

my $string = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";

print "'" . utf8::is_utf8($string) . "'" . "\n";
print length($string) . "\n";
print $string . "\n";
print uc($string) . "\n";
sleep(10);


print "A zaraz Perl vidkrye fail\n";
my $filename = 'отчет.txt';
open(my $fh, '>', $filename) or die "Ne moju vidkryty '$filename' $!"; # знак "більше" (>) означає що файл відкривається для запису.
print $fh "Ze  perl\n";
close $fh;
print "Gotovo\n";
sleep(10);

$Zmina_naprjamku=select($fh);  #изменить направление вывода

$name='new14.txt';$param=0666;
sysopen($Handle_new14,$name, O_RDWR|O_CREAT  , $param);
sysopen(PASSWD, "passwd", O_WRONLY|O_TRUNC|O_CREATE);
  
  
$Zmina_naprjamku=select($Handle_new14);  #изменить направление вывода
print "В маєтку гетьмана Івана Сулими,

В сучасному селі, що зветься Сулимівка,

До кінських грив припадені грудьми,

Промчали хлопці – загула бруківка –

І тільки гриви…курява…і свист…

Лунких копит оддаленілий цокіт…

І ми…і степ…і жовтий падолист…

І цих дворів передвечірній клопіт…

І як за сонцем повертає сонях,

Так довго вслід чомусь дивились ми.

А що такого? Підлітки на конях…

В маєтку гетьмана… Івана Сулими…";
select($Zmina_naprjamku);     #поставити на місце изменить направление вывода
select($fh);     #поставити на місце изменить направление вывода


sleep(15);

if ($reply =~ m/
^[0-9]+$
/) {
     print "only digits\n";
} else {
    print "not only digits\n";
}


sleep(15);



#my $Filename = 'корректная_директория_с_опечаткой/отчет.txt';
#open(my $Filehandle, '>', $Filename) or die "Не могу открыть файл '$Filename' $!";


sleep(15);



Perl_Bat_4.BAT

C:\Strawberry_Perl\perl\bin\perl C:\PPPP\Reguljar2.cgi  

Приєдную до теми редагувач FAR




Нотепад я причіплюю до цієї теми. Для того що б засвітити код в саме моєму файлі, необхідно вибрати у ньому Синтаксисы- P - Perl.



Попередження! Цю помилку має бути виправлено перед відправленням повідомлення:

    Вибраний файл був завеликий для завантаження. Сервер не дозволив завантаження.

2

Re: Примитивні запитання з мови Perl

perl -c $script_name

шо виводить і яка версія Perl ?

- Поганому трояну фаєрвол заважає
- Ніколи не програмуйте та не пийте пиво
Якщо ви з першого разу написали програму, в якій немає жодної помилки, повідомте про це системного програмісту: він виправить помилки в компіляторі

3

Re: Примитивні запитання з мови Perl

Загальна мета, ціль, ознайомитися з можливостями перл нормально

То беріть підручник і читайте з початку, а не кидайтеся одразу писати власні скрипти

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: VertoX, leofun012

4 Востаннє редагувалося Дмитро-Чебурашка (06.04.2016 17:26:56)

Re: Примитивні запитання з мови Perl

гм..  А я не пам'ятаю, яка версія.

Далі я здаеться не зрозумів. 

C:\Strawberry_Perl\perl\bin\perl -c $script_name

у вигляді батника спалахуе на мить й одразу ж згасае, так що не роздивитися.

А та що я, я зараз цей ключ впишу до себе. До себе в батник.

Ні, з ключем -c таки не діе.

5

Re: Примитивні запитання з мови Perl

Ох, perl, звісно крут, але для початківців не рекомендується.

Оце колись було на linux.org.ru (однорядкова програма на Perl)

echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

Тут замаскована команда rm -rf, тому ні в якому разі не пробуйте це на своєму компі із *nix OS

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/

6 Востаннє редагувалося Дмитро-Чебурашка (06.04.2016 17:32:12)

Re: Примитивні запитання з мови Perl

Perl дійсно крут. Мабудь для редагування документів та коду кращого не знайти.


Однорядкова програма на Perl важкочітаєма. Вона ніби відрізана.. Тай в мене вінда.

7 Востаннє редагувалося Дмитро-Чебурашка (06.04.2016 22:15:40)

Re: Примитивні запитання з мови Perl

Чомусь, коли я суну теку мишею на Яндекс Диск, невозможно загрузить папку или файл размером 0 байт

Та що ж воно??


Як мені зробити так, щоб всі могли скачувати з мого яндекс-диску, всі хто забажає?

8

Re: Примитивні запитання з мови Perl

$script_name — замість цього треба підставити справжнє ім'я скрипта. По-перше, це ніксовий синтаксис для підстановки змінної (у віндовому командному рядку йому відповідало б %dcript_name%), по-друге, ця змінна середовища ніде не встановлюється — тобто, малось на увазі «допишіть самі ім'я свого скрипта».

py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊
Подякували: Дмитро-Чебурашка1

9 Востаннє редагувалося Дмитро-Чебурашка (12.04.2016 18:29:19)

Re: Примитивні запитання з мови Perl

Так, ляпов в мене- гора....  , саме з ними й розбираюся. Саме як в брильянтовій руці точнисинько  -ААААААА!!!!!...........



Допоможить-таки написати вираз..  По-перше, кд нижче падає...  Рядки біжать-біжать, і одразу оп- і все щезае, так що я навить не зміркую як помилку відстежити

#!/usr/bin/perl -w
use utf8;                  # говорит Perl что код нашей программа написан в кодировке utf8.
use open qw(:std :utf8);   # говорит Perl что все потоки STDIN, STDOUT, STDERR должны работать с utf8.
use warnings;
sleep(10);


@BUFFER_temp = ();
$GLOBAL_lichylnyk = 0;
$FileNazva_1   =  'OPAfile.txt';
$Nazvadopovnjuvach = 'New_';
$FileNazva_2 = $Nazvadopovnjuvach+$FileNazva_1;

$Rjadky = 0;

open FILEHANDLE_2, '>>$FileNazva_2';      
       #Відкриємо файл для читання і створимо іншого файлу, для запису в нього зміненого тексту.
open FILEHANDLE_1, $FileNazva_1;
while (defined (my $file_line = <FILEHANDLE_1>)) {
        print $file_line; print "/n";
        push @BUFFER_temp, $file_line;
        print FILEHANDLE_2 "@BUFFER_temp[$GLOBAL_lichylnyk]\n";        
        
        $Rjadky++;
        print " Tse rjadok $Rjadky/n";
        print  "A sho my maemo 1 @BUFFER_temp[1]\n";
        print  "A sho my maemo $GLOBAL_lichylnyk @BUFFER_temp[$GLOBAL_lichylnyk]\n";
        @BUFFER_temp = ();
        if ($file_line =~ m/^.([0-9]{3}s (.*) )$/) #Шукаємо число з трьох цифр в кожному рядку і виділяємо окремо число і залишившийсь у залишку подальший рядок
           {print  'S1='  S1 , 'S2='  S2 /n " );
           sleep (50);}
           else {  sleep (50);
                   print  "Mabud sho nytsogo ne znayshlosya\n";
                   sleep (50);
                }
    
        #sleep(25);
}



# $file_line =~ m/^.([0-9]{3}s (.*) )$/;
#$file_line =~ m/^.([0-9]{3}[A-Za-z]+(\.[09]*)?)([CF])$/;



 

 
close FILEHANDLE_2;
 
close FILEHANDLE_1;



#(*) -

#Операція, яка позначається крапкою "." поєднує дві текстові змінні. Результатом цієї дії є третій рядок, який дорівнює першому і другому рядкам разом взятим. Англійською мовою операція об'єднання двох рядків зветься "concatenation". Не маючи кращого варіанту, я буду звати її конкатенацією (на слух сприймається як дуже розумне слово - і це основна причина його вживання).

10 Востаннє редагувалося Дмитро-Чебурашка (13.04.2016 13:18:04)

Re: Примитивні запитання з мови Perl

Ну я за декілька секунд зрозумів - кавичка там зайва.  О как! А до цього, пів  дня голову ламав.

Ну так чі інакше вираз не діє, не знаходить він те що потрібно. Так що я зараз поміркую, що ще воно.

АААААА!!!   О я гоню...  ну так, не знаходить і на кожний рядок повідомляє, знайшов він це або ні. Все ж правильно!

Re: Примитивні запитання з мови Perl

Будь ласка, напишить мені, як в регулярному виразі знайти отакого типу рядок


[[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[02.зтрумрсДрооРвауыйливуы]]
[[14.ЭслунРваово-РваиЭсРваовуы (Бутрумр прукропджуючуы трумрДроеБуиБу)]]

Я вже хвилин тридцять пишу, скріпти падають, ну прям мені не змога..

12

Re: Примитивні запитання з мови Perl

забийте на перл, але це діло ваше, я теж страждав перлом, але як повчив pyhon і lua стало легче, вічно в мене там були проблеми з " i ' ніби все по дукументації і правильно, а воно не працює. чого мені коштував квест розпаковки архівів в папці

- Поганому трояну фаєрвол заважає
- Ніколи не програмуйте та не пийте пиво
Якщо ви з першого разу написали програму, в якій немає жодної помилки, повідомте про це системного програмісту: він виправить помилки в компіляторі
Подякували: Дмитро-Чебурашка1

13

Re: Примитивні запитання з мови Perl

Дмитро-Чебурашка написав:

Будь ласка, напишить мені, як в регулярному виразі знайти отакого типу рядок

[[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[02.зтрумрсДрооРвауыйливуы]]
[[14.ЭслунРваово-РваиЭсРваовуы (Бутрумр прукропджуючуы трумрДроеБуиБу)]]

Я вже хвилин тридцять пишу, скріпти падають, ну прям мені не змога..

Сам регулярний вираз виглядає так:
/\[{2}[0-9]{2}\.[^\[\]]*\]{2}/
Але я ото дивлюсь на використання регулярних виразів в Perl і схоже що доведеться трохи потанцювати з бубном, щоб воно працювало.

Re: Примитивні запитання з мови Perl

Ну не знаю, reverse2500. Я ж і з пітоном, рівно так само справи раніше не мав. Я не впевнений, що варто кидатися від одного до іншого.
Справа напевно не в перл-і, взагалі то а в моїх кривуватих руках. І в голові неуважній.
І тим не менше, ось до чого я дійшов.

Заждить..  Я дрібни помилки подивлюся!  Так, справді, ще подивлюся.
Ну так, і дужок нема, і ком з запятою. І тім не менш...  Ні, зараз ще..

Та і так нісенитниця...   Багато чого поправив. 

Далі знов не бачу!! Не зміркую, не зрозумію, що ще треба.
Ось саме регулярній вираз, розпишу його по частинах

if ($file_line =~ m/^.*(([0-9]{3}) (.*) )$/) #Шукаємо число з трьох цифр в кожному рядку і виділяємо окремо число і залишившийсь у залишку подальший рядок
           {
             print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
             sleep (150);
            }
           elsif ($file_line =~ m/^.*(([\Q[[\E]) (.*) )$/)
           {  
                   print  "Mabud sho nytsogo ne znayshlosya\n";
                   print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
                   print  "JHa ne zrozumiv\n";
                   sleep (150);
                }

Така велика затримка щоб я бачів що спрацювало.
m означає що треба шукати,  // виділяє саме регулярний вираз,
^ означає що йти з початку рядка, . крапка означає будь який символ,  * зірочка
означає будь- яку кількисть символів,  тобто разом означають будь-яку кількість будь-яких символів
[0-9] означае будь-якого цифрового символу, {3} означае що кількість будь-якого цифрового символу три,  .*  знов це  будь-яка кількість будь-яких символів  і $ кінець рядка.

Дужки потрібні для того щоб в кожну змінну S1, S2, S3 і далі потрапляло те що у виразі написане в ціх дужках.

Подякували: 221VOLT1

Re: Примитивні запитання з мови Perl

=~ це  спеціяльний знак котрий саме тут потрібен.

([\Q[[\E]) це в моєму розумінні повинне знаходити ось це [[ й загоняти його в змінну $n.

Ось так якось. Але воно ничого не працює.

Re: Примитивні запитання з мови Perl

13 leofun01, дякую! Не бачів відповіді, зараз бачу.

17 Востаннє редагувалося Дмитро-Чебурашка (15.04.2016 21:12:51)

Re: Примитивні запитання з мови Perl

Підкажіть будь ласка, як все-таки перенаправити будь-який, увесь, вихід консолі, у текстовий файл.
Не можу! Лаюся вже. В неті якись> воронки, більш складні конструкції, але ж ничого воно не діє.
Може діє тільки в лінуксі, не знаю. Так я раніше робив таке, і не раз, а тут раптом не пам'ятаю.
Диски летять, винда періодично падає, і того, що було тепер вже уж немає.
Швидше це саме з дисками нерідко щось таке відбувається, це не вінда просто падає.
Ну і інформація втрачається, або ж поки не доступна - диски зберігаються але не відповідають.


До речі, leofun01, дякую тричі!!!! Саме ваш варіант працює, й добре працює.  Я ледь не розувіривсь в регулярних виразах!

C:\Strawberry_Perl\perl\bin\perl  -d C:\PPPP\Reguljar4.cgi >logfile.txt 2>&1
Подякували: leofun01, 221VOLT2

18 Востаннє редагувалося Дмитро-Чебурашка (16.04.2016 16:49:47)

Re: Примитивні запитання з мови Perl

Будь ласка, подивиться! Прога падає на ось цьому ось рядку.

#!/usr/bin/perl -w
use utf8;                  # говорит Perl что код нашей программа написан в кодировке utf8.
use open qw(:std :utf8);   # говорит Perl что все потоки STDIN, STDOUT, STDERR должны работать с utf8.
use warnings;
sleep(10);

@BUFFER_temp = ();
$GLOBAL_lichylnyk = 0; $zvIryuvalnik = 0;

$FileNazva_1   =  'C:\Polygon Regulyar\Z365\OPAfile.txt';
$Nazvadopovnjuvach = 'New_';
$FileNazva_2 = $Nazvadopovnjuvach+$FileNazva_1;

$Rjadky = 0;

open FILEHANDLE_2, '>>$FileNazva_2';
       #Відкриємо файл для читання і створимо іншого файлу, для запису в нього зміненого тексту.
open FILEHANDLE_1, $FileNazva_1;

while (defined (my $file_line = <FILEHANDLE_1>)) {

    sub Ste
    {
        if ($zvIryuvalnik-$GLOBAL_lichylnyk>=2)
        {                                   #блок стеження за лічильниками
                 print 'Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste';
                   sleep(50);
                 print $file_line; print "/n";
                 #push @BUFFER_temp, $file_line;
                 push $BUFFER_temp [$GLOBAL_lichylnyk], ' |';
                 push $BUFFER_temp [$GLOBAL_lichylnyk], "\n";
                 print FILEHANDLE_2 "$BUFFER_temp[$GLOBAL_lichylnyk]";
                 $GLOBAL_lichylnyk++;



        }
    }

        $Rjadky++;
        print " Tse rjadok $Rjadky\n";
        print  "A sho my maemo 1 $BUFFER_temp[1]\n";
        print  "A sho my maemo $GLOBAL_lichylnyk @BUFFER_temp[$GLOBAL_lichylnyk]\n";
        #@BUFFER_temp = ();
        if ($file_line =~ m/(^.*(([0-9]{3}) (.*) )$)/) #Шукаємо число з трьох цифр в кожному рядку і виділяємо окремо число і залишившийсь у залишку подальший рядок
           {
                   print 'elsif 0';
                   sleep(50);
                   $zvIryuvalnik++;
                   print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
                   $temp = $1;
                   $temp =~ s/\s+$//;#Чтобы отсечь "хвостовые" пробелы, годится
                   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                   push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                   Ste;

            }

            elsif ($file_line =~ /(^.*[0-9]{3}(.*)$)/)
            {
                   $zvIryuvalnik++;
                   print 'elsif 1';
                   sleep(50);
                   print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
                   $temp = $1;
                   $temp =~ s/\s+$//;#Чтобы отсечь "хвостовые" пробелы, годится
                   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                   push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                   print 'Ste';
                   sleep(50);
                   Ste;
            }

            elsif ($file_line =~/(\[{2}[0-9]{2}\.[^\[\]]*\]{2})/)
            {
                   print 'elsif 2';
                   sleep(50);
                   $temp = $1;
                   $temp =~ s/\s+$//;#Чтобы отсечь "хвостовые" пробелы, годится
                   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                   push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;
            }




        #sleep(25);
        #print "A thi zminulysja zminni? 1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
        #sleep(25);

}



# $file_line =~ m/^.([0-9]{3}s (.*) )$/;
#$file_line =~ m/^.([0-9]{3}[A-Za-z]+(\.[09]*)?)([CF])$/;

# s - це спеціальний символ, який вказує на будь-який символ з підмножини пробільних (пробіл, табуляція, etc ...) Уточню.  вказує на одиничний пробільний символ.
# ^ - в контейнері заперечення     Ну тобто перевертання значення
# Часто використовується послідовність .* для позначення будь-якої кількості будь-яких символів між двома частинами регулярного виразу.




close FILEHANDLE_2;

close FILEHANDLE_1;



#(*) -

#Операція, яка позначається крапкою "." поєднує дві текстові змінні. Результатом цієї дії є третій рядок, який дорівнює першому і другому рядкам разом взятим. Англійською мовою операція об'єднання двох рядків зветься "concatenation". Не маючи кращого варіанту, я буду звати її конкатенацією (на слух сприймається як дуже розумне слово - і це основна причина його вживання).


  __END__

І хай би лаялася, чі що, а то падає взагалі з кінцями.

push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;


З повідомленням Not an ARRAY reference at [#] Reguljar4.cgi [#] line 76, <FILEHANDLE_1> line 2.

непоказно, не урочисто, тихо помирає.

І що воно таке? Я дійсно таки не зміркую.


Немає масиву? Так є ж масив! Як я не дивлюся, щось я начебто не бачу нічого такого, нічого патологічного, щоб воно було щось підозріле або так ото падало все ж одразу!


Рядок 54, 68.         Я принцип помилки не зрозумію

19 Востаннє редагувалося Дмитро-Чебурашка (16.04.2016 17:22:40)

Re: Примитивні запитання з мови Perl

Вищщче варіант коду над котрим я працюю. Без коментарів виглядає жахливо, чесно кажучи.

Попередній варіант, з коментарями

#!/usr/bin/perl -w
use utf8;                  # говорить Perl що код нашій програми написаний в кодуванні utf8. 
use open qw(:std :utf8);   # говорить Perl що усі потоки STDIN, STDOUT, STDERR повинні працювати з utf8. 
use warnings;
sleep(10);



@BUFFER_temp = ();
$GLOBAL_lichylnyk = 0; $zvIryuvalnik = 0;

$FileNazva_1   =  'OPAfile.txt';  #Файл - джерело 
$Nazvadopovnjuvach = 'New_';
$FileNazva_2 = $Nazvadopovnjuvach+$FileNazva_1; # Нова назва для файлу, в який будемо зберігати результати потрібних змін ( побудовану годну таблицю ). 

$Rjadky = 0;  #Будемо перераховувати усі рядки першого файлу, нашошо джерела скільки їх в ньому не є.

open FILEHANDLE_2, '>>$FileNazva_2';      
       #Відкриємо файл для читання і створимо іншого файлу, для запису в нього зміненого тексту.
open FILEHANDLE_1, $FileNazva_1;

while (defined (my $file_line = <FILEHANDLE_1>)) {
        
    sub Ste   # Це хфункція безпосерьедньо записи нашого всього в новий наш файл  
    {
        if ($zvIryuvalnik-$GLOBAL_lichylnyk>=2)    
        {                                   #блок стеження за лічильниками
                 print 'Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste';
                   sleep(50);
                 print $file_line; print "/n";
                 #push @BUFFER_temp, $file_line;
                 push @BUFFER_temp [$GLOBAL_lichylnyk], ' |';
                 push @BUFFER_temp [$GLOBAL_lichylnyk], "\n";
                 print FILEHANDLE_2 "@BUFFER_temp[$GLOBAL_lichylnyk]";
                 $GLOBAL_lichylnyk++;
                 #Усі знайдені нами рядки - складаємо їх в один рядок, в масив @BUFFER _ temp
#а як тільки лиш буде знайдений новий рядок, який розпочинається з тррех цифр на своєму початку, так
#відразу ми починаємо складати усі знову знайдені рядки в один, і сунемо його в наступний елемент масиву!
                 
                
                 
        }
    }    
        
        $Rjadky++;
        print " Tse rjadok $Rjadky\n";
        print  "A sho my maemo 1 @BUFFER_temp[1]\n";
        print  "A sho my maemo $GLOBAL_lichylnyk @BUFFER_temp[$GLOBAL_lichylnyk]\n";
        #@BUFFER_temp = ();
        if ($file_line =~ m/(^.*(([0-9]{3}) (.*) )$)/) #Шукаймо число з трьох цифр в кожному рядку і виділяємо окремо число і залишившийсь у залишку подальший рядок
           {
                   print 'elsif 0';
                   sleep(50);
                   $zvIryuvalnik++;
                   print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
                   $temp = $1;
                   $temp =~ s/\s+$//;#Щоб відсікти "хвостові" пробіли, годится
                   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                   push @BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                   Ste;
                   
            }
            
            elsif ($file_line =~ /(^.*[0-9]{3}(.*)$)/) 
            {      
                   $zvIryuvalnik++;
                   print 'elsif 1';
                   sleep(50);
                   print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
                   $temp = $1;
                   $temp =~ s/\s+$//;#Щоб відсікти "хвостові" пробіли, годится
                   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                   push @BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                   print 'Ste';
                   sleep(50);
                   Ste;
            }
            
            elsif ($file_line =~/(\[{2}[0-9]{2}\.[^\[\]]*\]{2})/)
            {  
                   print 'elsif 2';
                   sleep(50);
                   $temp = $1;
                   $temp =~ s/\s+$//;#Щоб відсікти "хвостові" пробіли, годится
                   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                   push @BUFFER_temp[$GLOBAL_lichylnyk], $temp;
            }
            
            
                
    
        #sleep(25);
        #print "A thi zminulysja zminni? 1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
        #sleep(25);
        
}



# $file_line =~ m/^.([0-9]{3}s (.*) )$/;
#$file_line =~ m/^.([0-9]{3}[A-Za-z]+(\.[09]*)?)([CF])$/;

# s - це спеціяльний символ, який вказує на будь-який символ з підмножини пробільних (пробіл, табуляція, etc ...) Уточню.  вказує на одиничний пробільний символ.
# ^ - в контейнері заперечення     Ну тобто перевертання значення
# Часто використовується послідовність .* для позначення будь-якої кількості будь-яких символів між двома частинами регулярного виразу.

 

 
close FILEHANDLE_2;
 
close FILEHANDLE_1;



#(*) -

#Операція, яка позначається крапкою "." поєднує дві текстові змінні. Результатом цієї дії є третій рядок, який дорівнює першому і другому рядкам разом взятим. Англійською мовою операція об'єднання двох рядків зветься "concatenation". Не маючи кращого варіанту, я буду звати її конкатенацією (на слух сприймається як дуже розумне слово - і це основна причина його вживання).
Подякували: leofun011

20 Востаннє редагувалося Дмитро-Чебурашка (22.04.2016 16:47:17)

Re: Примитивні запитання з мови Perl

Допоможіть мені будь ласка всеж- таки написати ось таку ось річ, із квадратним масивом.

Гальмую, як найбільш гарно та правильно працювати з масивом, що б

при читанні файлу на кожен читаєюймий рядок відразу створювати 58 елементів масиву

рядків кілька сотень, не пам'ятаю, три або дев'ять.  Та що там гарно та правильно,

хай взагалі хоч не падає.

http://perldoc.perl.org/perllol.html читав, матеріал хороший! Але запарює англійська, ну дуже мене втомлює.

Вибачте за гальма, не можу я уже дві години написати що - то, що б програма не падала!!

Й учора не зміг. Тикнить носом що не так, чі що.

Буду дуже дуже дуже вдячний за приблизний приклад коду.

Ось що я у загалі написав ще учора.

Сил вже нияких нема, мозку вже теж немаэ.


$N = 1;
@KonstruktorRjadkiv = ([59][$N]);
                     for($U=0;$U<=58;$U++)  
                            { 
                                @KonstruktorRjadkiv [$U][$N-1]= ('|!    Немає значення     ');
                                  @KonstruktorRjadkiv [58][$N-1]= ('|!    Немає значення  |  '. "\n";);
                            }    

print "$FileNazva_2";

open FILEHANDLE_2, ">>$FileNazva_2";
       #Відкриємо файл для читання і створимо іншого файлу, для запису в нього зміненого тексту.
open FILEHANDLE_1, $FileNazva_1;

open FILEHANDLE_3, ">>$FileNazva_3";


sub Vpysuvats{
                   
                   
       if($zvIryuvalnik-$N >=2)
                   {     
                        $N = $zvIryuvalnik;
                                                 for($U=0;$U<=57;$U++)  
                            { 
                                @KonstruktorRjadkiv [$U][$N-1]= ('|!    Немає значення     ');
                                @KonstruktorRjadkiv [58][$N-1]= ('|!    Немає значення  |  '. "\n";);                                  
                            }    
                    }

}




І, до речі, шматкикоду, яки я там скопипастив, теж одразу ж падають!!

#!/usr/bin/perl
    # assign to our array, an array of array references
    @AoA = (
       [ "fred", "barney", "pebbles", "bambam", "dino", ],
       [ "george", "jane", "elroy", "judy", ],
       [ "homer", "bart", "marge", "maggie", ],
    );
    say $AoA[2][1];