1
Я пытаюсь получить два значения из текстового файлаполучить значения из TXT файла Perl
мой Perl код
#!/usr/bin/perl
use strict;
use Fcntl qw(:flock :DEFAULT);
exit unless sysopen(PID, '1.pid', O_RDWR | O_CREAT) && flock(PID, LOCK_EX | LOCK_NB);
print PID "$$\n";
while(-s "1.txt")
{
sleep 1;
open(F,"1.txt")||die"12";
my @arr=<F>;
close F;
exit if $#arr==-1;
my $str=shift(@arr);
open(F,">1.txt")||die"13";
print F @arr;
close F;
$str=~s/[\n\r]+//g;
my ($dx,$code)=$str=~/^(\d+):(\w+)$/;
print"($dx)($code)\n";
}
мой текстовый файл
00001:3wzhs7t2w5t2
00001:3wzhs7t2w5t3
00001:3wzhs7t2w5t4
мой код вывода
()()
Мне нужно
$dx = 00001
$code = 3wzhs7t2w5t2
Таким образом, вы в основном хотите, чтобы удалить первую строку из файла и записать обратно остальное, то содержимое вывода первой линии в скобках? Если это так, я бы предложил что-то более короткое, чем 'perl -i -ne 'if ($. == 1) {s /: /) (/; s/^/(/; s/$ /) /; print STDERR } else {print} '2> & 1' вместо этого. – tripleee
удалите строку один за другим и извлеките $ dx = 00001 $ code = 3wzhs7t2w5t2 после завершения файла завершения цикла – Sonia
Почему, по-вашему, вам нужно перезаписать файл после каждый раз, когда вы читаете строку? – TLP