2015-05-16 4 views
-3

Я назначил глобальную переменную в начале моего скрипта, который является пустой строкой, и я присвоил значение этой внутренней подпрограмме. Когда скрипт второй раз вводит подпрограмму, эта переменная имеет значение null и назначается новое значение.Объявление переменной в perl

мне нужно иметь переменную имя константы для некоторых вызовов подпрограмм, а затем изменить значение в подпрограмме, когда мое состояние матча

первый раз вызвать подпрограмму эта переменная будет пустой войти в петлю и в петле Я назначу переменную .. в следующий раз, когда она войдет в подпрограмму, я хочу использовать это значение переменной до тех пор, пока условие не будет выполнено.

Вот пример кода

#!/usr/bin/perl 
my $Next_5minus = ''; 

sub write_alog { 
if (my $Next_5minus eq '') 
{ 
........ 
......... 
} 
elsif ($start_mtime < $end_mtime) 
{ 
say $fh join("\n", @$alog); 
} 
elsif ($start_mtime > $end_mtime) 
{ 

my $Next_5minus = <will assign value> 
.......... 
} 
} 
+9

Привет, добро пожаловать в переполнение стека. Ваш вопрос немного трудно понять, потому что вы описываете код, который мы не видим. Пожалуйста, отредактируйте вопрос, чтобы добавить [простой, но проверяемый пример кода] (http://stackoverflow.com/help/mcve) вместе с текущим и желаемым результатом. – IMSoP

+0

Попробуйте удалить все свои «мои» перед именем переменной, кроме первой (на верхнем верхнем уровне), если вы хотите иметь одну глобальную переменную. – asjo

ответ

1

Если вы хотите, чтобы люди, чтобы помочь вам с вашими проблемами, это вежливо, чтобы сделать его как можно более простым для них, чтобы помочь вам. Как минимум, вы должны сделать следующее:

  1. Предоставьте краткую, автономную, управляемую программу, которая продемонстрирует вашу проблему.
  2. Очистите отступы в своем коде, чтобы было легко следовать.
  3. Добавьте use strict и use warnings в свой код и устраните проблемы, которые они указывают.

В этом случае я подозреваю, что вы увидите предупреждения о переменных, которые маскируют переменные с тем же именем. Вы определяете три копии своей переменной $Next_5minus. Каждый из них будет инициализирован как undef по мере его создания и исчезнет, ​​поскольку он выходит за рамки.

Попробуйте удалить посторонние операторы my из вашего кода и посмотреть, устраняет ли это вашу проблему.