Помогите разобраться
open(TESTFILE, "Z:/home/test1.ru/www/in2.txt");
$i=0;
while(<TESTFILE>) {
$text= $_;
if ($text=~/(\w+):(\S+):(\w+):(\w+)::(\S+)::/)
{
$user=$1;
$passwd=$2;
$cr=$3;
$cr2=$4;
$put=$5;
}
$strings[2*$i]=$user; #user
$strings[2*$i+1]=$passwd; #passwd
$i++;
}файл in2.txt
it:555e283e36d46da2e6caa4bf306e05f5:fdfd:fdfdf:dsdsds::
123:a43c006e3cfca6b385a80e3769fdda87:11:1:234::
на выходе $user = it как результат вывод
it:555e283e36d46da2e6caa4bf306e05f5:fdfd:fdfdf:dsdsds::
it:555e283e36d46da2e6caa4bf306e05f5:fdfd:fdfdf:dsdsds::как сделать чтобы значение из файла воспринималось как текст, а не как оператор it ???
>[оверквотинг удален]
> $i++;
> }
> файл in2.txt
> it:555e283e36d46da2e6caa4bf306e05f5:fdfd:fdfdf:dsdsds::
> 123:a43c006e3cfca6b385a80e3769fdda87:11:1:234::
> на выходе $user = it как результат вывод
> it:555e283e36d46da2e6caa4bf306e05f5:fdfd:fdfdf:dsdsds::
> it:555e283e36d46da2e6caa4bf306e05f5:fdfd:fdfdf:dsdsds::
> как сделать чтобы значение из файла воспринималось как текст, а не как
> оператор it ???Значение из файла воспринимается адекватно. Ошибка в скрипте.
область видимости переменных? )
($v1, $v2, $v3) = split(":", $_)мне кажется, что так было бы лучше.
> open(TESTFILE, "Z:/home/test1.ru/www/in2.txt");
> $i=0;1. убираем open и индекс для массива. Это не Basic
> while(<TESTFILE>) {
> $text= $_;
> if ($text=~/(\w+):(\S+):(\w+):(\w+)::(\S+)::/)2. убираем ненужную переменную и проверки, если нет обработчика ошибок формата
> $user=$1;
> $passwd=$2;[...]
3. убираем разбор ненужных переменных
> $strings[2*$i]=$user;
> $strings[2*$i+1]=$passwd; #passwd4. убираем заполнение массива вручную.
Пишем:
#!/usr/bin/perl -w
use strict;
my (@fld,@strings);while (<>) {
@fld = split /:/;
# здесь можно проверить значения @fld[0,1]
push @strings, @fld[0,1];
}запускаем script.pl < in2.txt
ну вот взял и все испортил ))
так человек не научится ходить по граблям ))