カレンダーの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.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度回答を締め切ることにしました。
プログラミング言語には共通点も沢山あるのですね。
さまざまな書き方があるのだという事も知ることができましたし、勉強になりました。
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.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.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というのを想定しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- 英語 【 論・表 for the day の意味 】 She often took both of us 2 2022/08/14 17:36
- 英語 英文についての質問です。 The 23 million Taiwanese people live 1 2023/07/06 10:51
- 英語 「英文解釈」についての質問です。 2 2023/06/16 17:41
- Visual Basic(VBA) VBAで列を削除 3 2023/02/01 11:00
- Excel(エクセル) VBA EOMonthについて 5 2023/02/10 11:51
- 生物学 【生命科学】ヒトが1日に消費するATP量?(精度を変えて再計算) 3 2022/10/07 18:48
- 英語 提示したアリストテレスの名言のtooの意味と働きについて 13 2023/08/07 08:58
- Visual Basic(VBA) 【VBA】ボタンに登録したマクロがエラーになる 4 2022/07/25 17:47
- モテる・モテたい どの時期の女性と魅力を感じますか??JC。JK。JD、社会人。俺はJDです! 2 2022/10/04 16:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページでCGIのフォームを...
-
エクセルで集計したい。
-
number 改行が追加できない
-
htmlからcgiを自動的に起動させ...
-
ラズパイでのCGIで、pythonソー...
-
CGIが読み書きするデータファイ...
-
フォームを再送信しますか?
-
apacheでPerl CGIが作動せず、5...
-
POSTメソッドの最大容量について
-
CGIの設置が分かりません・・・
-
(フリーの)ツリー掲示版CGI、...
-
ディープフェイクを作成するサ...
-
500 Internal Server Error
-
ホームページにCGIを設置したの...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
cgi
-
CGIでinit.dで起動したプロセス...
-
フォーム送信とURLエンコードに...
-
cgiファイルのパス指定について
-
生成AI画像について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
フォームを再送信しますか?
-
apacheでPerl CGIが作動せず、5...
-
ホームページでCGIのフォームを...
-
生成AI画像について
-
/bin/awk '{print $5}'ってどう...
-
入力フォーム(電話番号)
-
(フリーの)ツリー掲示版CGI、...
-
古ーくからフリーのtree.cgi掲...
-
VBAで条件から範囲を指定して色...
-
ホームページにメールフォーム...
-
一番簡単なCGI,掲示板の設置教...
-
CGIって何ですか?簡潔に教えて...
-
サーバーのエラーでおしえてく...
-
サイト訪問者の情報を取得したい
-
htmlからパラメータで、cgiに渡...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
cgiからsendmailを送信で文字化け
-
POSTメソッドの最大容量について
-
ホームページにCGIを設置したの...
おすすめ情報