Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

PERL

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
IddoL



Зарегистрирован: 05.11.2002
Сообщения: 44
Откуда: Ступино

СообщениеДобавлено: Пн Окт 04 2004 10:00    Заголовок сообщения: PERL Ответить с цитатой

Такой вопрос:
есть массив @data вида:
=======слово=======
Слово2 (пробел tab`ом) Слово3

выбираем из него вторую строку:
$stroka = $data[2];

тоесть получается $stroka содержит:
Слово2 (пробел tab`ом) Слово3

как выбрать в $stroka СЛОВО3???? и присвоить его переменной $slovo???
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Окт 04 2004 10:13    Заголовок сообщения: Ответить с цитатой

Код:
$stroka =~m/^\w+\s+(\w+)$/;
$slovo = $1;


ЗЫ. Наверняка на перле это можно сделать можно сделать более извращенным, истинно перловским способом, но я вообще на пых уже давно перешел Smile

ЗЗЫ. $data[2] - это вообще-то третья а не вторая строка Smile
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
IddoL



Зарегистрирован: 05.11.2002
Сообщения: 44
Откуда: Ступино

СообщениеДобавлено: Пн Окт 04 2004 10:19    Заголовок сообщения: не получилось.... Ответить с цитатой

ничего не получилось...
переменная $stroka содержит 4294967295.... что это?
все остальные переменные($1; $slovo) пустые
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Окт 04 2004 10:37    Заголовок сообщения: Ответить с цитатой

Что у тебя содержит изначальная строка - $data[2]????
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
IddoL



Зарегистрирован: 05.11.2002
Сообщения: 44
Откуда: Ступино

СообщениеДобавлено: Пн Окт 04 2004 10:42    Заголовок сообщения: Ответить с цитатой

Основной шлюз (пробел табом) 192.168.1.1
надо взять в переменную IP адрес
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Окт 04 2004 10:49    Заголовок сообщения: Ответить с цитатой

Код:
$stroka =~m/^.+\s(\S+)$/;
$slovo = $1;

_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FUKS



Зарегистрирован: 14.04.2002
Сообщения: 148
Откуда: Москва

СообщениеДобавлено: Пн Окт 04 2004 13:05    Заголовок сообщения: Ответить с цитатой

Только грамотнее будет так:
Код:
$slovo=$1 if $stroka =~/^.+\s(\S+)$/;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Пн Окт 04 2004 14:05    Заголовок сообщения: Ответить с цитатой

код:

$file_path="route.print";
open FILE, "$file_path";

@data=<FILE>;
close FILE;

$stroka =~m/^.+\s(\S+)$/;
$slovo = $1;

print $slovo;

файл route.print содержит:
---------- C:\ROUTE\ROUTE.PRINT1
Ћб­®ў­®© и«о§: 192.168.8.66





ни в каком варианте на экран ничего не выходит! пусто.... незнаю что делать...
Вернуться к началу
Гость






СообщениеДобавлено: Пн Окт 04 2004 14:09    Заголовок сообщения: Ответить с цитатой

немного не так написал...
код:


$file_path="route.print";

open FILE, "$file_path";

@data=<FILE>;
close FILE;
$slovo=$data[2];
$stroka =~m/^.+\s(\S+)$/;
$slovo = $1;
print $slovo;
Вернуться к началу
Гость






СообщениеДобавлено: Пн Окт 04 2004 14:45    Заголовок сообщения: Ответить с цитатой

Цитата:
незнаю что делать

Такое слово "отладка" - знакомо?

Посмотреть, что у тебя именно находится в массиве @data, можешь?
Что находится в строке $stroka перед регулярным выражением???
С точностью до символа.

Может у тебя где там переводы строки стоят, откуда я знаю.
Вернуться к началу
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Окт 04 2004 14:47    Заголовок сообщения: Ответить с цитатой

Это я был Smile
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Пн Окт 04 2004 14:52    Заголовок сообщения: Ответить с цитатой

в массиве $data содержиться:
---------- C:\ROUTE\ROUTE.PRINT1
Ћб­®ў­®© и«о§: 192.168.8.66

надо 192.168.8.66 записать в отдельную переменную!
Вернуться к началу
Гость






СообщениеДобавлено: Пн Окт 04 2004 15:26    Заголовок сообщения: Ответить с цитатой

$file_path="route.print";

open FILE, "$file_path";

@data=<FILE>;
close FILE;
$stroka=$data[2];
$stroka =~m/^.+\s(\S+)$/;
$slovo = $1;
print $slovo;
Вернуться к началу
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Окт 04 2004 16:09    Заголовок сообщения: Ответить с цитатой

Цитата:
в массиве $data содержиться:
---------- C:\ROUTE\ROUTE.PRINT1
Ћб­®ў­®© и«о§: 192.168.8.66

Я сейчас плакать буду Smile
Вот подходишь к людям со всей душой, хочешь им помочь, научить, тому что сам умеешь, а они тебе так....
Я тебя что спросил?
Что находится в МАССИВЕ!!!
Не надо мне переписывать твой файл.
Напиши после close FILE; одну строчку: print $data[2];
А все, что дальше - закомментируй.
И посмотри, что ты прочитал из этого файла.

Ты понимаешь смысл этого действия?
А что делает твой код - понимаешь?
Вот каждая строчка - что делает???

Программирование - это не переписывание чужих скриптов, а написание своих; и любые ответы на форуме - лишь подсказки.
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Пн Окт 04 2004 16:12    Заголовок сообщения: Ответить с цитатой

переменная $data[2]
содержит строку Ћб­®ў­®© и«о§: 192.168.8.66
Вернуться к началу
Гость






СообщениеДобавлено: Пн Окт 04 2004 16:45    Заголовок сообщения: Ответить с цитатой

я понимаю каждую строчку своего кода, и никогда ничей код не копировал!!!

а до этого я просто не понял вопрос либо ты неграмотно задал!
Вернуться к началу
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Окт 04 2004 17:15    Заголовок сообщения: Ответить с цитатой

Окей.
Что делают эти строки?
Код:
$stroka =~m/^.+\s(\S+)$/;
$slovo = $1;

_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FUKS



Зарегистрирован: 14.04.2002
Сообщения: 148
Откуда: Москва

СообщениеДобавлено: Вт Окт 05 2004 10:19    Заголовок сообщения: Ответить с цитатой

А лучше сразу все строки массива распечатать:
Код:

  @data=<FILE>;    close FILE;
print "$_: \n$data[$_]" foreach (0..@data); # Распечатать все элементы массива @data
  $stroka=$data[2]; # Почему [2], когда в массиве только элементы [0] и [1]?
  $stroka =~m/^.+\s(\S+)$/;
  $slovo = $1;

Так НЕПРАВИЛЬНО: в $1 будет нужное содержимое только при успешной операции привязки, а если там затешется \0, то последующий вывод
Код:

  print $slovo; # окажется "за концом строки" и не попадёт на экран.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Вт Окт 05 2004 10:34    Заголовок сообщения: Ответить с цитатой

Естесственно, там надо проверку на совпадение делать - выше один товарищ уже это говорил.
Я просто показал рег и просил камрада, задавшего вопрос, точно написать значение его строки и предупреждал насчет переводов строки и тому подобного.
Но видимо этому камраду нужно, чтоб ему написали просто действующий код, который будет работать с его, никому кроме него не известными, данными. Smile
Я лично обсуждение этой "проблемы" закончил, так как уже убедился, что на форуме можно помочь только тем, кто сам пытается разобраться в том, что ему пишут и в том, что он сам пишет.
Прошу прощения за развернутый при моем непосредственном участии флейм.

ЗЫ. Почему $data[2] - сие науке неизвестно Smile но дела это не меняет Twisted Evil
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вт Окт 05 2004 11:03    Заголовок сообщения: Ответить с цитатой

ешил проблему вот так :

$str = $data[2];
$str=~m/(\d+)\.(\d+)/;

$ip_addr1=$&;
$ip_addr2=$';


я не знал какие спец. переменные принимают значения после поиска...
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...