Автор Тема: Ошибка:( Помогите, плиз, очень срочно  (Прочитано 3750 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Привет!
Прога вот ошибку выдает:
Can\'t use string ("1") as an ARRAY ref while "strict refs" in use at /var/www/cgi-bin/script.pl line 129
В этой строчке находится вот это if($a1[$i][0]==$a2[$i][0]){тут то что мне нужно}
если этот код меняю на if(1){тут то что мне нужно}то ошибок нет
где a1 и a2 - двумерные массивы, заполняемце из файла
Причем прога работала, без пробдлем, теперь не работает:(

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
Ошибка:( Помогите, плиз, очень срочно
« Ответ #1 : 30 Апреля 2003, 00:30:35 »
Ну а в массивах что находится? Или ты предлагаешь нам угадать?

P.S. Поставь перед этой строкой:

print $ar1[$i], $ar2[$i], "\\n";

Оффлайн NCRangeR

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.mephix.h1.ru
Ошибка:( Помогите, плиз, очень срочно
« Ответ #2 : 30 Апреля 2003, 05:39:01 »
C++
поставь в начале
no strict "refs";
- How does the CPAN work?
 - With dark magic, evil-looking sacrificial knives and scantily clad virgins under pale moonlight.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка:( Помогите, плиз, очень срочно
« Ответ #3 : 30 Апреля 2003, 10:45:49 »
Цитировать

no strict "refs";

А что это означает?
КшЫуфксрук
В массивах с данными все ОК, там строки и числа....
Что самое интересное, скрипт работал, а потом перестал:(

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Ошибка:( Помогите, плиз, очень срочно
« Ответ #4 : 30 Апреля 2003, 12:47:12 »
Цитировать
В массивах с данными все ОК


В каком-то из массивов перебираемый i-тый элемент не является ссылкой.


use strict;

# Как подразумевалось, каждый элемент является ссылкой на массив
my @a1 = ( [1,2], [2,1] );
my @a2 = ( [1,2], [2,1] );

# Приведет к ошибке Can\'t use string ("1") as an ARRAY ref while "strict refs"
# т.к. $a1[0] не "ссылка на массив"
# my @a1 = ( 1, [2,1] );

for (my $i = 0; $i <= $#a1; $i++) {
if ($a1[$i][0] == $a2[$i][0]){
print "Ok\\n";
}
}
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн PROnya

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.pronya.gibforex.com
Ошибка:( Помогите, плиз, очень срочно
« Ответ #5 : 30 Апреля 2003, 13:04:44 »
Проблема в том, что у тебя получается символическая ссылка.
Цитата из "Advanced Perl Programming":
--------------------------------------
The strict pragma tells Perl to do strict error checking. You can even enumerate specific aspects to be strict about, one of which is `refs\':

use strict \'refs\';  # Tell Perl not to allow symbolic references
$var = "x";
$$var = 30;
This results in a run-time error whenever you try to use a symbolic reference:

Can\'t use string ("x") as a SCALAR ref while "strict refs" in use at try.pl line 3
The strict directive remains in effect until the end of the block. It can be turned off by saying no strict or, more specifically, no strict \'refs\'.
--------------------------------------

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28