• 締切済み

perlについて質問です。

perlの曜日から日付を表示するスクリプトについて質問です。 (問)1月1日が土曜日の平年(例えば、2011年)について曜日の入力データからその月日を全て表示する。 (実行結果) 曜日を入力してください(1:日-7:土): 4↓ 水曜日の月日は : 1月:5,12,19,26 2月:2,9,16,23 3月:2,9,16,23,30 4月:6,13,20,27 5月:4,11,18,25 6月:1,8,15,22,29 7月:6,13,20,27 8月:3,10,17,24,31 9月:7,14,21,28 10月:5,12,19,26 11月:2,9,16,23,30 12月:7,14,21,28 このように表示するために「for命令」と「while命令」を使用して作成したいのですがどのように作成できますでしょうか?(printとchomp使用) 回答よろしくお願いいたします。

みんなの回答

回答No.1

カテゴリーが違うような気もしますが・・ 入力を受け付けてchompして、 Time::Localで2011年1月1日の適当な時刻(例えば12:30:30)のエポック秒を作って Whileループで2011年であることをチェックしつつ、 forループで24*60*60秒ずつエポック秒に加算して localtimeで曜日と月と日を取り出して、 曜日が一緒(日曜日が0になってるのに注意)である月と日を抽出して それをprintするといった感じではいかがでしょうか? http://d.hatena.ne.jp/perlcodesample/20081009/1223570590 http://d.hatena.ne.jp/perlcodesample/20081014/1224168958

関連するQ&A

  • perlのwhile,連想配列についてです。

    perlの連想配列を使い "AP" => "Apple" "BN" => "Banana" "OG" => "Orange" という値を格納します。 そしてこの格納した値をキーボードからの入力で取り出します。 このように表示したいです↓↓ "好きな果物を入力してください[AP/BN/OG]" そして入力を受けるとその果物の値を返し果物の名前を表示します↓↓ "あなたの好きな果物はAppleですね" ここまではできたのですが、この格納した果物以外を入力するとwhileで格納した果物が入力されるまで"3種類から選んでください”というようにループしたいです。 この場合どのように書けばよいのでしょうか。 whileの場合andで書きたい場合はどのように書けばよいのでしょうか。 また入力には<STDIN>を使い引数はchmopで処理すると良いとアドバイスを貰いましたがchompの使い道がよくわかりません。 そちらも説明していただけると幸いです。 わかりにくい質問ですがよろしくお願いします。

    • ベストアンサー
    • Perl
  • エクセルで月日と曜日一覧を自動的に入力させたい

    恐れ入ります。 エクセルについて質問します。 下記のような月日と曜日の入力をしております。     A    B    C       ーーーーーーーーーーーーーーーーー 1  7月1日|7月2日|7月3日|・・・・   ーーーーーーーーーーーーーーーーー 2    月 |  火 |  水 |・・・・   ーーーーーーーーーーーーーーーーー 3  たとえばどこかのセルに「  年」「  月」を入力するようにしたら、自動的に上記の一覧に月日と曜日を入力させるようにできませんでしょうか。  30日までの月の場合、31日にあたるセルがエラー表示にならないようにもしたいです。  お知恵をお貸しください。

  • エクセル

    A1に入力規制のリスト表示で2016年~2018年 B1に入力規制のリスト表示で1月から12月を入力できるにします 2016年9月と入れたときA2に日数とB2に 月曜日、水曜日、金曜日を抽出したいのですが A2  何日 B2 曜日 A3  何日 B2 曜日 A4  何日 B2 曜日 A5  何日 B2 曜日 ・ ・ ・ どうやればいいでしょうか?

  • perlとhtml

    perlでカレンダーを表示させるというプログラムを作っています。そこでテキストボックスをつけて入力された年と月のカレンダーを表示させたいのですがどのうように手をつけてよいのかまったくわかりません。 どんな風に作っていけばいいのでしょうか?

  • エクセルでカレンダーを作りたいのですが。

    エクセル2003を使用しています。 次のようなカレンダーを作成したいと思います。 A1に2006などの年、A2、B2~に3/6などの月日、そしてA3、B3~に曜日(月、火…)の入ったカレンダーです。 A1の「年」やA2の「月日」を変更したら自動的に日にち(30日まで31日まで)や曜日が変わるようにするにはどうしたらいいですか? よろしくお願いします。

  • perl -wc

    telnet を利用できないユーザーの為に、ブラウザ上でPerl(CGI)の文法チェックができるようにしています。 フォームでファイル名を入力させ、チェックプログラム内で "perl -wc $filename" を実行して結果を出力させるだけだと思い作成したのですが、実行結果を受け取ることができません。 apache のログには実行結果が書かれているのでコマンドは正常に動作しています。  open(IN, "perl -wc $filename |");  while (<IN>) {   print $_; と  $ret=`perl -wc $filename`; でやってみましたがダメでした。 どなたかご教授願います。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Perlのプログラミングについて

    Perlのプログラミングでつまづきました。 # ファイルから指定文字列を含む行を収集する # 入力ファイルのオープンと読み込み print( "入力ファイル名?" ); $n = <STDIN>; chomp( $n ); open( FIN, "<$n" ) or die "入力ファイルオープンエラー: $!\n"; $n = @a = <FIN>; close( FIN ); print( "$n 行読み込みました\n" ); # 行の収集 print( "検索文字列?" ); $x = <STDIN>; chomp( $x ); $ptn = $x; #指定の文字列 $x = @b = grep( /$ptn/, @a ); print( "$x 行見つかりました\n" ); # 出力ファイルのオープンと書き出し print( "出力ファイル名?" ); $y = <STDIN>; chomp( $y ); open( FOUT, ">$y" ) or die "出力ファイルオープンエラー: $!\n"; print FOUT ( $ptn, "\n" ); print FOUT ( $x, "\n" ); print FOUT ( @b ); close( FOUT ); というプログラムで実行すると C:\My Perl\pl>perl プログラムの実行.pl 入力ファイル名?sample1.txt 168 行読み込みました 検索文字列?k 45 行見つかりました 出力ファイル名?out3-24.txt 続行するには何かキーを押してください . . . となり出力ファイルの中身が表示されません。 どこを間違えているのかご指摘いただけないでしょうか?

  • Perlによるディレクトリ内の連続的な大量データ処理

    Perlのテキスト処理に関する質問です.やりたいことはあるディレクトリ内に10000個ほどの(1)のようなテキストデータがあります.ここで私は(2)のプログラムを作成しました.しかしながら,このプログラムだと10000個あるテキストデータの一つしか処理できません.この処理内容をディレクトリ全体に適用させる方法はありますでしょうか?File::Find::Ruleなどがネット上にあったので使おうと努力しましたができませんでした.どなたかよろしくお願いします. (1)  2020 01 01 00 109.18970 18.36816 -2.317 -2.459 292.712 0.013 91.276 30.618 292.712 0.013 -2.317 -2.459 998.793 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 2020 01 01 00 109.54297 18.39178 -2.702 -2.652 292.653 0.013 90.044 30.676  292.653 0.013 -2.702 -2.652 993.902 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ・ ・ ・ ・ (2) use warnings; open INFILE, '<', '2020-01-01_00.txt' or die "file open error: $!"; while( <INFILE> ){ chomp if( /\n$/ ); $Year = substr($_,0,4); chomp if( /\n$/ ); $Month = substr($_,5,2); chomp if( /\n$/ ); $Day = substr($_,8,2); chomp if( /\n$/ ); $Time = substr($_,11,2); chomp if( /\n$/ ); $Lon = substr($_,16,9); chomp if( /\n$/ ); $Lat = substr($_,29,8); chomp if( /\n$/ ); $Temp = substr($_,57,7); chomp if( /\n$/ ); $Hum = substr($_,76,6); chomp if( /\n$/ ); $Ozone = substr($_,85,6); chomp if( /\n$/ ); $Rad = substr($_,140,5); $data = $Year. "-".$Month."-".$Day." ".$Time." ".$Lon." ".$Lat." ".$Ozone." ".$Rad." ".$Hum." ".$Temp."\n"; open($data, ">", "data.txt") or die("error :$!"); } # ファイルを閉じる close INFILE; exit;  

  • エクセルのオートフィルタを使わないフィルタ方法を伝授してください。

    エクセルで日報を作成しています。 1sheetに365日分のセルを作成。 A1のセルに3月と入力すると以下の365行が「3月1日~3月31日」の 31行分の1か月分が表示になるようにするにはどんなテクニックが必要でしょうか?エクセルを終了して、その条件はキープしていて欲しい。 《元データ》  A列  B列  C列  D列 1    月  2 3 月日 曜日  本日の容量  残容量  合計 4 1月1日 月   150      20   170 5 1月2日 火   150      20   170 6 1月3日 水   200      20   220 7 : 368 12月31日........ 《入力結果》  A列  B列  C列  D列 1 3   月 ←このつきの前に「表示月」を入力 例えば「3」 2 3 月日 曜日  本日の容量  残容量  合計 4 3月1日 木          5 3月2日 金    6 3月3日 土    : 34 3月31日土 が表示される。  

  • エクセルVBAで、期間内にある指定した数字を自動入力

    下のように月日(A列)のみが書いてある表があります。 ここに定価を自動入力させたいと考えています。 ただ条件が複雑で・・・。 期間内にあるもので、曜日により値を振り分けする必要があります。 例えば、 ■月日(from) 3/1 ■月日(to) 3/3 ■値 土・日・・・500    月・・・・・450 このような条件で、下の[入力前]の表の「値」の列に [入力前] 月日  曜日   値 3/1    (土) 3/2    (日) 3/3    (月) 3/4    (火) 3/5    (水) 3/6    (木) 下のようにそれぞれ入力させたいのです。 [入力後] 月日  曜日    値 3/1    (土)    500 3/2   (日)    500 3/3    (月)    450 3/4    (火) 3/5   (水) 3/6    (木) どこかのスペースに ■月日(from) 3/1 ■月日(to) 3/3 ■値 土・日・・・500    月・・・・・450 このような条件入力をするところを設けて、マクロを実行すると入力するようにしたいのですが、こんな複雑な振り分け設定ってVBAでもできるでしょうか?