Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построковый вывод данных, Вывод определенной строки из файла.... 
V
    Опции темы
fregat
Дата 23.10.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Уважаемые программисты!!!

Прошу помочь в слудующем вопросе:

из формы передаю в скрипт значение, допустим a=12....
вопрос такой, а как сделать вывод из текстового файла только той строки (в данном случае 12)

Заранее благодарен......
PM MAIL   Вверх
amg
Дата 23.10.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Вывести 12-ю строку текстового файла? Я правильно понял?
Код
my $file = 'file.txt';
my $str_num = 12;
open FILE, $file or die "Can't open $file: $!\n";
while (<FILE>) {
  print && last if $.==$str_num;
}
close FILE;

PM MAIL   Вверх
fregat
Дата 23.10.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Спасибо за помощь!!! Все супер!!!
PM MAIL   Вверх
fregat
Дата 23.10.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



В текстовом файле данные разбиты двойным двоиточием:

009::2,65::2,79::290::21::700::001::001

При выводу получаем чистый вывод строки

009::2,65::2,79::290::21::700::001::001

В скрипте есть вывод из масива, а как привязать 
Код

$str_num = 12;


к

Код

print "Content-type: text/html\n\n";

$file = "news.txt"; # Файл с сообщениями

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
if (!$buffer) {
$buffer=$ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $form{$name} = $value;
}

$id = $form{'news'};

open (NEWS1, "$file");
@list=<NEWS1>;
close (NEWS1);
#for ($i=0;$i<@list;$i++)
 
($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8)=split(/::/,$list);


PM MAIL   Вверх
amg
Дата 23.10.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Опять приходится догадываться, что же ты хочешь smile 
Пресловутый текстовый файл, в котором 12-ю строку нужно расщепить по :: -- это NEWS1 ? Если да, то 
Код
chomp @list;
($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8)=split(/::/,$list[$str_num-1])

или, модифицируя мой пример, 
Код
while (<NEWS1>) {
  if ($.==$str_num) {
    chomp;
    @a = split /::/, $_;
    print "@a";
    last;
  }
}


Это сообщение отредактировал(а) amg - 23.10.2006, 14:52
PM MAIL   Вверх
fregat
Дата 23.10.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Возмодно у меня руки кривые или нехватает опыта.... не получилось.....
Исходный код изначальный...
Код

#!/usr/bin/perl

print "Content-type: text/html\n\n";

$file = "news.txt"; # Файл с сообщениями

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
if (!$buffer) {
$buffer=$ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $form{$name} = $value;
}

$id = $form{'news'};

open (NEWS1, "$file");
@list=<NEWS1>;
close (NEWS1);
#for ($i=0;$i<@list;$i++)
foreach $list (@list){

($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8)=split(/::/,$list);


print <<EOF;

$a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8<br>

EOF
}



PM MAIL   Вверх
amg
Дата 23.10.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Ты так и не ответил. Текстовый файл, в котором 12-ю строку нужно расщепить по :: -- это NEWS1 ? Если да, то вместо
Код
foreach $list (@list){
($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8)=split(/::/,$list);
print <<EOF;
$a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8<br>
EOF
}
 напиши
Код
chomp @list;
$str_num = 12;
($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8)=split(/::/,$list[$str_num-1]);
print <<EOF;
$a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8<br>
EOF

PM MAIL   Вверх
fregat
Дата 23.10.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Спасибо!!! Все Ок...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.