カレンダーのCGIを作成したのですが、下記のような構文を繰り返し処理で入力できずにおり、ファイルが重くなっています。
@pla = &jd'Cal($day1 + 0.5);
@plb = &jd'Cal($day2 + 0.5);
@plc = &jd'Cal($day3 + 0.5);
@pld = &jd'Cal($day4 + 0.5);
@ple = &jd'Cal($day5 + 0.5);
@plf = &jd'Cal($day6 + 0.5);
@plg = &jd'Cal($day7 + 0.5);
@plh = &jd'Cal($day8 + 0.5);
@pli = &jd'Cal($day9 + 0.5);
@plj = &jd'Cal($day10 + 0.5);
この構文は省略していますが、実際は$day31まであります。
まず知りたいのは、上の構文を繰り返し処理にて短くする方法です。
短くした状態の構文も記入いただけるとありがたいです。
どうぞ、よろしくおねがいします。
No.4
- 回答日時:
おそらく、No.3の_--_1l1_1_さんの回答が質問者さんが欲しい回答ではないかと思われます。
内容が少し高度?で、使い方がわからないのでは?と推測します。
かいつまんで書くと、No.3さんの回答は以下です(結果格納場所は配列にしてますが)。
my @pl;
for my $count (1..31) { # 1~100ならここを1..100にする
no strict 'refs';
my $day = eval '$day'.$count;
push @pl, jd::Cal($day + 0.5); # ここが、$pl[0] = &jd'Cal($day1 + 0.5)に相当
}
@plに欲しい情報が入っています(この場合、$pl[0]~$pl[30]に入ってます)。
jd::Cal(=&jd'Cal)の引数は、$day1 + 0.5というのを想定しています。
No.3ベストアンサー
- 回答日時:
たしかに何がやりたのか曖昧だが、予想して書くとこんな感じ?
表示がくずれるので全角空白を空白2文字にしていることに注意。
use strict;
use warnings;
my ( $day1, $day2, $day3 ) = qw(100 200 300);
{
no strict qw(refs vars);
no warnings;
for my $count ( 1 .. 3 ) {
my $day_var = eval '$day' . $count;
my $array_name = 'pl' . chr( ord('a') + $count - 1 );
@{$array_name} = cal($day_var);
}
print $_, q{, } for @pla; # 100A, 100B, 100C,
print $/;
}
sub cal {
return ( $_[0] . 'A', $_[0] . 'B', $_[0] . 'C' );
}
この回答への補足
回答ありがとうございます。
説明不足で申し訳ありません。
PERL言語で書いてます。
printについては最後にまとめておりますので、あくまで@pla ($plという書き方でもかまいません)の値を[1]から複数(仮に[10]まで)求めたい場合の、foreachなどの使い方が知りたくて質問させていただきました。
ご回答ありがとうございました。
no.4の回答者さんのご指摘により、この答えがベストだと知ることができました。
このような複雑な構文になってしまうとは思いませんでしたが、この文を理解し、自分で応用できるよう努力しようと思います。
No.2
- 回答日時:
抽象すぎる
CGIって言っても色々あるしPHPかPerlかRubyか
あとどのように考えてそのソースにしたかの説明がないと有力な回答が得られにくいと思うけど
この回答への補足
回答ありがとうございます。
言語はPerlを使用しています。
下の回答者様のところにも補足させていただきました。
$pl[1]=&cal($1);
$pl[2]=&cal($2);
・・・・と仮に$pl[100]まで値を求めたい場合、この書き方でいけば100行になってしまいますが、これをforeachなどを使えれば2~3行で済むのではないか?と考え、質問させていただきました。
ちなみにカレンダーに使うものですので、$1などにはユリウス日の数値が代入されており、$pl[1]などは60干支であったり、曜日であったりします。
どうぞ、よろしくおねがいします。
No.1
- 回答日時:
そのプログラムは知りませんが、どの言語にも繰り返し処理の命令はあるはずです。
例えばvbとかで言えば、dim i as integer 変数の宣言です
for i=1 to 10 iの値が1から1+1+1・・・でiの値が10になるまで
なんらかの処理
next i
基本的にc言語とか一緒です
というような for nextなどあると思いますが
この回答への補足
回答ありがとうございます。
プログラミングに関する知識がほとんどないため、説明不足でした。
言語はperlで、おそらくforeachを使うのだろうなと思うのですが、foreach(1,2,3){という123の部分の入力がいまいち理解できず、困っており、それで簡単な例をインターネット上でも探してみたのですが、いまだ理解できずという状況です。
やりたい事としては、最初の@plaなどは$pl[1]という書き方でも$pl1でもいいのですが、これが連番ですし、&jd'cal($day1 + 0.5)の部分も、&cal($1)でもOKです。
$pl[1]=&cal($1);
$pl[2]=&cal($2);
・・・・と仮に100まで$plの値を出す場合に、この書き方でいけば100行になってしまいますが、これをforeachなどを使えれば2~3行で済むのではないか?と考え、質問させていただきました。
どうぞ、よろしくおねがいします。
ご回答ありがとうございました。
質問に対して全うな解答がついたとわかりましたので、1度回答を締め切ることにしました。
プログラミング言語には共通点も沢山あるのですね。
さまざまな書き方があるのだという事も知ることができましたし、勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
/bin/awk '{print $5}'ってどう...
-
フォームを再送信しますか?
-
ラズパイでのCGIで、pythonソー...
-
関数Ln(x)の使い方
-
ホームページでCGIのフォームを...
-
apacheでPerl CGIが作動せず、5...
-
utf-8で作成した。formmailのht...
-
python についての質問です
-
docomoの構成プロファイルはど...
-
postmail(UTF-8)でメールが文字...
-
CGIで得た内容をHTMlページに代入
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
apacheでPerl CGIが作動せず、5...
-
フォームを再送信しますか?
-
(フリーの)ツリー掲示版CGI、...
-
ホームページでCGIのフォームを...
-
/bin/awk '{print $5}'ってどう...
-
CGIって何ですか?簡潔に教えて...
-
cgiからsendmailを送信で文字化け
-
入力フォーム(電話番号)
-
CGI.pmはもう古い!?
-
フォームメールを受信すると文...
-
古ーくからフリーのtree.cgi掲...
-
チェックボックスでのvalue値の...
-
誕生日占いをプログラムで作成...
-
cgiファイルで構成された検索結...
-
VBAで条件から範囲を指定して色...
-
Perl 別ドメインのファイル存在...
-
.htaccessについて
-
number 改行が追加できない
-
JQUERYでウェブのフォームから...
おすすめ情報