-3

私は perl アプリケーションを開発しています。私の javascript アラートに perl 配列を出力したいのですが、うまくいきません。これが私のコードです。

sub leaveInfo{
            my ( $title_id ) = @_;
            $sql = "SELECT tab_timeslot.`location` , tab_timeslot.`date` , tab_timeslot.`time` , tab_timeslot.`end_time`
            FROM tab_appointment
            INNER JOIN tab_timeslot ON tab_appointment.timeslot_id = tab_timeslot.timeslot_id
            WHERE tab_appointment.lecture_id ='" . $title_id ." '";
            $query = &statement_database($sql);
            my @co; 
            my @arro;
            my $num = 0;
            while(my(@co)=$query->fetchrow_array){
             push (@arro,$co[$num]);
            $num++; 
            }
            print @arro;

        }   

        print '<script type="text/javascript">' . "\n" .
              '   Check = confirm("Do you really want to leave this lecture?'.leaveInfo(1215).'");' . "\n" .
              '   if (Check == false) history.back();' . "\n" .
              '   else                location.href="index.pl?value=my_events&to_do=leave_lecture_exec&user_id=' . $cgi->param('user_id') . '&title_id=' . $cgi->param('title_id') . '"' .  "\n" .
              '</script>' . "\n";



        }

アラートは、配列自体の値ではなく、配列に格納されたオブジェクトの数のみを表示します。ヘルプがあれば役立ちます

4

1 に答える 1

1

あなたが得たと言った出力を得るには、

sub leaveInfo{
   ...
   return @arro;
}

あなたが持っているという主張にもかかわらず

sub leaveInfo{
   ...
   print @arro;
}

それは実際には良いことです。


@arrayリスト コンテキストでは、値のリストに評価されます。

@arrayスカラー コンテキストでは、配列内の要素数に評価されます。

連結演算子は必然的にそのオペランドをスカラー コンテキストで評価するため、配列内の要素数を取得しているのはそのためです。

@a = qw( a b c d );
print @a."\n";   # 4

あなたの場合、使用できます

print '... confirm("... '
    . join(' ', leaveInfo(1215))
    . '");...';

文字列のいずれかに"またはが含まれている場合は失敗します\。より良い:

sub to_js_str_literal {
   my ($s) = @_;
   $s =~ s/([\\"])/\\$1/g;
   return qq{"$s"};
}

print '... confirm("... "+'
    . to_js_str_literal(join(' ', leaveInfo(1215)))
    . ');...';
于 2013-05-16T09:22:24.543 に答える