No.7ベストアンサー
- 回答日時:
#6補足>横槍ですみませんが
#6のソースには
<head></head>がない
$qがない
${\head}の形で呼び出すには先行宣言が必要
呼び出される関数でprintするより関数で文字列を返した方がよい。
</html>の後にタグがある
</td></tr>がない(マッチしてない)
を直してみました
あとは、良きに・
require 'lib.pl';
use CGI;
#$q = new CGI;
sub head;
print <<"_HTML_";
<HTML>
<HEAD>
<TITLE>result</TITLE>
</HEAD>
<BODY>
<HR width="90%">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#BBBBBB">
<table border="0" cellpadding="2" cellspacing="1">
<tr>
${\head}
</tr>
</table>
</td>
</tr>
</table>
<HR width="90%">
</BODY>
</HTML>
_HTML_
# $q->end_html;
sub head
{
my $wk ;
@name = (aa,bb,cc,dd,ee,ff);
$ii = @name-1;
for ($i = 0 ; $i <= $ii ; $i++) {
$wk = "$wk<td>$name[$i]</td>";
#print "<td>$name[$i]</td>";
}
return $wk;
}
ありがとうございました。ようやく解決することができました。
本当に助かりました。
最後にもうひとつだけ質問があります。
以下のような場合はどのように変数に入れたらよいのでしょうか?
もし、お時間があればご回答お願いします。
sub html {
print <<"_HTML_";
<HTML>
<HEAD>
</HEAD>
.
.
.
_HTML_
}
No.8
- 回答日時:
>以下のような場合はどのように変数に入れたらよいのでしょうか?
もうひとつ意味がよくわからないんですけど、
同じだと思います。
意図を理解していなかもしれないけど、こんな感じ?
require 'lib.pl';
use CGI;
#$q = new CGI;
sub head;
sub html {
print <<"_HTML_";
<HTML>
<HEAD>
<TITLE>result</TITLE>
</HEAD>
<BODY>
<HR width="90%">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#BBBBBB">
<table border="0" cellpadding="2" cellspacing="1">
<tr>
${\head}
</tr>
</table>
</td>
</tr>
</table>
<HR width="90%">
</BODY>
</HTML>
_HTML_
}
&html;
# $q->end_html;
sub head
{
my $wk ;
@name = (aa,bb,cc,dd,ee,ff);
$ii = @name-1;
for ($i = 0 ; $i <= $ii ; $i++) {
$wk = "$wk<td>$name[$i]</td>";
#print "<td>$name[$i]</td>";
}
return $wk;
}
#-----------8<---------8<------------
関数の中でヒアドキュメントを使うのに(関数として返すのための)変数に入れるのにどうするか?というような意味なら
sub html {
my $ret = <<_HTML_;
なんたら
かたら
_HTML_
return $ret;
}
みたいに書けます。
本当いうと、最後に実行した式が値になるので、(returnは要らなくて、$retも要らないので)
sub html {
<<_HTML_;
なんたら
かたら
_HTML_
}
でもいいですが、関数にする意味がよくわかりません。
あと、#5は、#6で言われている通り同じ意味でした。
あと、
#2で書いているような
<< "_HTML_"
の様にスペースをあけるのは、よくない(非標準的な)書き方でした。
同じようでも、この場合、
<< _HTML_
とは書けません(空行以降がスクリプトになる)ので意味が変わってしまいます。
(スペースを空けない場合は同じ意味です)
ご丁寧な回答ありがとうございました。
私が聞きたかったのは
sub html {
<<_HTML_;
なんたら
かたら
_HTML_
}
のことでした、printしていたのもですからうまくいきませんでした。
今回は本当にありがとうございました。すっきりしました。
No.6
- 回答日時:
<<__HTML__ は <<"__HTML__" と等価だった気がします。
こっちでは実行できるんですが、perlのバージョンとかわかったら教えていただけます? こちらは5.6以降でチェックしてます。もしくは、サブルーチンの中身と呼び出し方を具体的に教えて頂ければ、アドバイスできるかもしれません。
> なにかテーブル内だからとか関係あるのでしょうか?
いいえ、perlは自分が吐いている物がhtmlだと言うことは知らないので、関係ありません。
この回答への補足
省略し短くまとめると以下のようになります。
&headの部分を表示させたいのですが、うまくいきません。
もし、お分かりになれば教えてください。
お願いします。
#!/usr/bin/perl -w
require 'lib.pl';
use CGI;
print <<"_HTML_";
<HTML>
<TITLE>result</TITLE>
<BODY>
<HR width="90%">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#BBBBBB">
<table border="0" cellpadding="2" cellspacing="1">
<tr>
&head
</tr>
</td>
</BODY>
</HTML>
</table>
</table>
<HR width="90%">
_HTML_
$q->end_html;
sub head
{
@name = (aa,bb,cc,dd,ee,ff);
$ii = @name-1;
for ($i = 0 ; $i <= $ii ; $i++) {
print "<td>$name[$i]</td>";
}
}
No.3
- 回答日時:
私はいつもこうです。
sub date{'日付:' . localtime()}
print <<__HTML__;
この下に
@{[&date]}
サブルーチンをば
__HTML__
${&sub}みたいな方法もあったような・・・わかったらまた書き込みますね。
No.2
- 回答日時:
#別のやり方、こっちのがいいかも
sub test {
return "TEST";
}
sub test2($$) {
my ($a,$b) = @_;
return $a+$b;
}
sub evaluate {
my $str = shift;
$str =~ s/^(&.*)/$1/gmee;
return $str;
}
print evaluate << "_HTML_";
ここでサブルーチンを実行させたい。
&test
&test2(4,5)
_HTML_
No.1
- 回答日時:
ちょっと違うかもしれませんが…
sub test {
return "TEST";
}
sub test2($$) {
my ($a,$b) = @_;
return $a+$b;
}
sub evaluate {
my $str = shift;
if($str =~ /^\&/){
return eval($str) ."\n";
} else {
return $str;
}
}
while(<DATA>){
print evaluate($_);
}
__END__
ここでサブルーチンを実行させたい。
&test
&test2(4,5)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) どうしてもエラーが解決できません。 1 2022/07/23 04:32
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで複数の値を返す良い方法...
-
Perl:計算誤差について
-
[perl] next と return 同じ意...
-
Pythonのプログラミングの質問...
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
JSONで文字列が長い時
-
どちのほうがすきですか?
-
int(input("○○"))の使い方
-
実行時エラー 3020の対策
-
プルダウンで別項目に値を代入...
-
C言語のflagの使い方が分かりま...
-
16進の10進変換について
-
ACCESS テキストボックスを隙...
-
[html]ラジオボタンを使った診...
-
コンボボックスのtag情報の取得...
-
I2C接続のLCDディスプレイを使う
-
日齢計算プログラム
-
c言語 16進数の2進数への変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで複数の値を返す良い方法...
-
HASH(0xほげほげ)
-
10進数→2進数
-
内部処理形式が日付型 (Date) ...
-
Wコロン
-
変数に値を代入するのに、まずu...
-
Perlで自分自身の関数名を知る...
-
PerlでCabochaを呼び出すには(...
-
print <<"_HTML_"の中でサブル...
-
プロトタイプ宣言のワーニング...
-
Perlで use strict して our変数
-
Pythonのマルチプロセスでの並...
-
Perl 一定時間後にプログラムを...
-
これは動いてくれますか??
-
Net::SSH::Perlについて
-
Python 点座標表示の不具合
-
引数の値をURLのパスに配列とし...
-
Pythonのプログラミングの質問...
-
Net::Telnetでタイムアウト時間...
-
[perl] next と return 同じ意...
おすすめ情報