Подпрограмма Perl возвращает пустое значение - PullRequest
3 голосов
/ 15 декабря 2011

Я довольно новичок в Perl, извините, если это вопрос новичка.

Насколько я понимаю, Perl, я могу сделать это:

sub BuildAndroidRessourceArgument()
{
    my @xmlResFiles = @_;
    my $fileCnt = @_;
    my $index = 0;
    my $aaptResArg = "-F ";

    foreach( @xmlResFiles )
    {
        $index = $index + 1;
        if( $index == $fileCnt )
        {
            $aaptResArg = $aaptResArg.$_;
        }
        else
        {
            $aaptResArg = $aaptResArg.$_." -F ";
        }

    }
    print "$aaptResArg\n";
    return( $apptResArg );
}

Когда я здесь печатаю свой aaptResArg, я получаю правильное значение, но потом:

my ( $aaptResArg ) = BuildAndroidRessourceArgument( @xmlResFiles );
print "$aaptResArg\n";

Когда я печатаю после возврата значения, он ничего не печатает.

Итак, насколько я знаю, этот код должен работать, если он печатает в функции, то нет причин, по которым он не должен печататься при возврате правильного значения?

Ответы [ 2 ]

12 голосов
/ 15 декабря 2011

Вы ошиблись в переменной $aaptResArg как $apptResArg.Это будет обнаружено, если вы воспользуетесь strict прагмой.

Не забывайте всегда:

use strict;
use warnings;

Цитата Ларри Уолл :

Я знаю это странно, но строгие перемены уже очень и очень близки к разделению толпы на тех, кто может иметь дело с местными лексическими словами, и тех, кто не может.
- Ларри Уолл в <199710050130.SAA04762@wall.org>

5 голосов
/ 15 декабря 2011

Вы неправильно написали. Сделай это:

return($aaptResArg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...