2013-11-02 2 views
0

Я использую CGI в строгом режиме и немного путаюсь с переменными. Я читаю файл с двумя строками. Сохранение как двух переменных. Но когда я пытаюсь outputing их с помощью HTML, это говорит глобальные переменные ошибкиПеременная область в perl

Это то, что я делаю

open TEXT, "filename"; 
$title = <TEXT>; 
$about = <TEXT>; 
close TEXT; 

, но это дает глобальную переменную ошибку. Каков наилучший способ исправить это?

+4

Ошибка в глобальном переменном отсутствует. Никогда, никогда не давайте приблизительные сообщения об ошибках - всегда указывайте * точное сообщение, как указано. – TLP

ответ

4

Вам необходимо объявить переменную my, чтобы сделать ее область локальной. Это лучшая практика и обязательный при использовании strict

use strict; 
use warnings; 

open my $fh, '<', 'filename' or die $!; 
my ($title, $about) = <$fh>; 
close $fh; 

Дальнейших улучшений:

  1. избегал ручки bareword файлов (например, FILE). Вместо того, чтобы использовать локальный файл обрабатывает такие как my $fh
  2. Б обработки ошибок с die при работе с обработкой файлов
  3. Комбинированное назначение $title и $about как предложено @Suic
  4. use warnings, чтобы показать то, что происходит не так, как указывал @TLP
+0

Я тоже это пробовал, но когда я попытаюсь получить доступ к нему в разделе html ниже, он не появится. – user2055171

+0

print << END HTML

$ title

END_HTML; – user2055171

+2

'использование предупреждений' покажет вам путь. – TLP

Смежные вопросы