Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись выделенного текста в конкретную строку и конкретное местов в строке файла / 7 сообщений из 7, страница 1 из 1
21.07.2014, 15:10
    #38702052
Maks_84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
Добрый день,
Задача в следующем имеется два файла, в одном информация с какой строкой работать и какое действие совершать, во втором данные которые необходимо изменить. С выделение нужной строки и части строки разобрался, вопрос как записать измененное значение обратно в файл заместив им предыдущее значение, Спасибо.
#!/usr/bin/perl
#use strict;
#use warnings;

my ($n,$i,$dir);
my $count1=0;
my $count2=0;
my $count3=0;
my $dx1=500;

open(LD, "+< vector.dat") || die("Error opening file for reading"); # открываем файл данных
open(NLD, "< vector.dat") || die("Error opening file for reading"); # открываем файл данных
open(LW, "+< beam.anf") || die("Error opening file for reading"); # открываем файл модели
open(NLW, "< beam.anf") || die("Error opening file for reading"); # открываем файл модели
open(WLW, "+< beam.anf") || die("Error opening file for reading"); # открываем файл модели


while (<NLW>) {$count2++ ;} # считаем число строк в файле модели
$n2=$count2;
sub NL2 { $LM[$_[0]]=<LW>};
for ( $j=1; $j<= $n2; $j++)
{ NL2 "$j"; }
sub NL3 { $NLM[$_[0]]=<WLW>};
for ( $j=1; $j<= $n2; $j++)
{ NL3 "$j"; }
while (<NLD>) {$count1++ ;} # считаем число строк в файле модели
$n1=$count1;
sub NL1 { $LD[$_[0]]=<LD>};
for ( $i=1; $i<=$n1; $i++)
{ NL1 "$i"; # присваиваем строки данных
next if ($LD[$i] =~ m/^\s*$/); # пропускаем строку из одних пробелов
chomp($LD[$i] ); # убираем замыкающий перевод строки (если требуется)
$LD[$i] =~ s/^\s*//; # убираем ведущие пробелы
$node_n[$i] = join(' ',(split(/[\s\,\!\?]+/,$LD[$i]))[0]); # получаем номер точки
$dir[$i] = join(' ',(split(/[\s\,\!\?]+/,$LD[$i]))[1]); # получаем направление
$kx_n[$i] = join(' ',(split(/[\s\,\!\?]+/,$LM[(11+$node_n[$i]*2)]))[2]); # получение координаты х
$ky_n[$i] = join(' ',(split(/[\s\,\!\?]+/,$LM[(11+$node_n[$i]*2)]))[3]); # получение координаты y

if ($dir[$i]=1) {$nkx_n[$i]=($kx_n[$i]), $nky_n[$i]=($ky_n[$i]+$dx1);} # Изменение координаты
elsif ($dir[$i]=2) {$nkx_n[$i]=($kx_n[$i]+$dx1), $nky_n[$i]=($ky_n[$i]+$dx1);}
elsif ($dir[$i]=3) {$nkx_n[$i]=($kx_n[$i]+$dx1), $nky_n[$i]=($ky_n[$i]);}
elsif ($dir[$i]=4) {$nkx_n[$i]=($kx_n[$i]+$dx1), $nky_n[$i]=($ky_n[$i]-$dx1);}
elsif ($dir[$i]=5){$nkx_n[$i]=($kx_n[$i]), $nky_n[$i]=($ky_n[$i]-$dx1);}
elsif ($dir[$i]=6) {$nkx_n[$i]=($kx_n[$i]-$dx1), $nky_n[$i]=($ky_n[$i]-$dx1);}
elsif ($dir[$i]=7) {$nkx_n[$i]=($kx_n[$i]-$dx1), $nky_n[$i]=($ky_n[$i]);}
elsif ($dir[$i]=8) {$nkx_n[$i]=($kx_n[$i]-$dx1), $nky_n[$i]=($ky_n[$i]+$dx1);}
else {;}

print $LM[(11+$node_n[$i]*2)][2];
close(WLW); # закрываем файл для чтения
}
close(LD); # закрываем файл для записи
close(LW); # закрываем файл для записи
close(NLW); # закрываем файл для записи
close(NLD); # закрываем файл для чтения
close(WLW);
...
Рейтинг: 0 / 0
21.07.2014, 16:17
    #38702101
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
Maks_84,

Tie::File
...
Рейтинг: 0 / 0
22.07.2014, 14:22
    #38702932
Maks_84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
Спасибо за совет!

попробовал через tie но почему-то не заменяет строку на новую а просто удаляет, что я не так делаю?
...
Рейтинг: 0 / 0
22.07.2014, 14:23
    #38702937
Maks_84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
...
Рейтинг: 0 / 0
22.07.2014, 14:29
    #38702953
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
Maks_84Задача в следующем имеется два файла, в одном информация с какой строкой работать и какое действие совершать, во втором данные которые необходимо изменить.Вроде задача для sed.
...
Рейтинг: 0 / 0
22.07.2014, 17:13
    #38703171
Maks_84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
Для конкретного значения строки всё работает , а в цикле считает только для значения 1 , может я цикл не так задаю?
...
Рейтинг: 0 / 0
23.07.2014, 12:07
    #38703738
Maks_84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись выделенного текста в конкретную строку и конкретное местов в строке файла
Всем спасибо!
Вроде работает.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись выделенного текста в конкретную строку и конкретное местов в строке файла / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]