Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
IddoL
Зарегистрирован: 05.11.2002 Сообщения: 44 Откуда: Ступино
|
Добавлено: Пн Окт 04 2004 10:00 Заголовок сообщения: PERL |
|
|
Такой вопрос:
есть массив @data вида:
=======слово=======
Слово2 (пробел tab`ом) Слово3
выбираем из него вторую строку:
$stroka = $data[2];
тоесть получается $stroka содержит:
Слово2 (пробел tab`ом) Слово3
как выбрать в $stroka СЛОВО3???? и присвоить его переменной $slovo??? |
|
Вернуться к началу |
|
|
Scaramouch
Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
|
Добавлено: Пн Окт 04 2004 10:13 Заголовок сообщения: |
|
|
Код: | $stroka =~m/^\w+\s+(\w+)$/;
$slovo = $1; |
ЗЫ. Наверняка на перле это можно сделать можно сделать более извращенным, истинно перловским способом, но я вообще на пых уже давно перешел
ЗЗЫ. $data[2] - это вообще-то третья а не вторая строка _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
|
IddoL
Зарегистрирован: 05.11.2002 Сообщения: 44 Откуда: Ступино
|
Добавлено: Пн Окт 04 2004 10:19 Заголовок сообщения: не получилось.... |
|
|
ничего не получилось...
переменная $stroka содержит 4294967295.... что это?
все остальные переменные($1; $slovo) пустые |
|
Вернуться к началу |
|
|
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 адрес |
|
Вернуться к началу |
|
|
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 Заголовок сообщения: |
|
|
Это я был _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Пн Окт 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
|
Я сейчас плакать буду
Вот подходишь к людям со всей душой, хочешь им помочь, научить, тому что сам умеешь, а они тебе так....
Я тебя что спросил?
Что находится в МАССИВЕ!!!
Не надо мне переписывать твой файл.
Напиши после 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 Заголовок сообщения: |
|
|
Естесственно, там надо проверку на совпадение делать - выше один товарищ уже это говорил.
Я просто показал рег и просил камрада, задавшего вопрос, точно написать значение его строки и предупреждал насчет переводов строки и тому подобного.
Но видимо этому камраду нужно, чтоб ему написали просто действующий код, который будет работать с его, никому кроме него не известными, данными.
Я лично обсуждение этой "проблемы" закончил, так как уже убедился, что на форуме можно помочь только тем, кто сам пытается разобраться в том, что ему пишут и в том, что он сам пишет.
Прошу прощения за развернутый при моем непосредственном участии флейм.
ЗЫ. Почему $data[2] - сие науке неизвестно но дела это не меняет _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Вт Окт 05 2004 11:03 Заголовок сообщения: |
|
|
ешил проблему вот так :
$str = $data[2];
$str=~m/(\d+)\.(\d+)/;
$ip_addr1=$&;
$ip_addr2=$';
я не знал какие спец. переменные принимают значения после поиска... |
|
Вернуться к началу |
|
|
|