Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Массив = содержимое файла. Почему не работает? |
Автор: PyccHeBa 30.11.2007, 06:35 |
Почем он читает только первую строку? Мне надо в массив загнать все строки. #!/usr/bin/perl # Include library files. # Library file for parsing excel files. # use Spreadsheet::ParseExcel; # Library file for working with databases. # use DBI; $filename = "mnogostrok.txt"; open (F1, $filename) || die ("Could not open $filename"); @data = <F1>; foreach my $i (@data) { print "$i\n"; } |
Автор: KSURi 30.11.2007, 06:47 | ||
У меня ваш код работает. Попробуйте еще так на всякий случай:
|
Автор: nitr 30.11.2007, 10:52 | ||
проверьте так ![]()
|
Автор: KSURi 30.11.2007, 18:50 |
nitr, а в чем разница использования SCALAR вместо GLOB в данном случае? Только сейчас об этом задумался... |
Автор: nitr 30.11.2007, 21:05 |
Ну как ответить, чтобы не запутать... Я отдаю предпочтение перлу выбирать. Это допускается с версии 5.6, этот метод называется autovivifies, получаем косвенный файловый манипулятор/(создается анонимный тип-глоб и сохраняется ссылка на него), к примеру, очень удобно с ним работать к примеру в функциях, не надо думать какой манипулятор заюзать (имя), всё автоматически. Подробнее: 1) perldoc perlfunc open, 2) Книга: "Perl: Сборник рецептов 2-е издание" параграф 7.5 ![]() |
Автор: PyccHeBa 1.12.2007, 00:43 |
Вот в чем дело. Он открывает все строки, но задает их все сразу в один элемент массива. А мне нужно чтобы массив собрал строки в разные элементы |
Автор: nitr 1.12.2007, 01:11 |
PyccHeBa, чего-чего? Добавлено через 26 секунд Покажите "на пальцах", я не понял вашей мысли... |
Автор: KSURi 2.12.2007, 19:34 |
nitr, спасибо за интересную информацию. Разберусь на досуге. |
Автор: amg 3.12.2007, 07:13 | ||
Такое случится только в том случае, если где-то выше была переопределена переменная $/ (INPUT RECORDS SEPARATOR) с умолчаемого значения "\n" на undef (не обязательно, чтобы этой переменной был присвоен undef в явном виде, достаточно local $/; в той же области видимости). См. http://forum.vingrad.ru/index.php?showtopic=184608&view=findpost&p=1332712 KSURi, в котром упоминается $/: если там заменить скалярную переменную на массив, то все содержимое файла будет в первом элементе этого массива. |
Автор: nitr 3.12.2007, 10:58 |
PyccHeBa, можно было не собирать со всех ответов, а взять только один, и просто проверить, к примеру, мой ответ не должен содержать эти ошибки, да и другие тоже ![]() |