1 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 22:35:39 ] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板 pc8.2ch.net/php/ ) CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2006/12/21現在の最新版: 5.8.8 ● 2006/12/21現在の開発版: 5.9.3 前スレ Perlについての質問箱 28箱目 pc8.2ch.net/test/read.cgi/tech/1162273941/ リンク集は>>2-3 過去スレは>>4
75 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 16:03:36 ] >>66 r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ . 〃 ヽル1'´ ∠:::::::::::::::::i i′ ___, - ,. = -一  ̄l:::::::::::::::l . ! , -==、´r' l::::::/,ニ.ヽ l _,, -‐''二ゝ l::::l f゙ヽ |、 レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ 2ちゃんはみんなの日記帳だから :ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ ::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ ::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な! :::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::/// :::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ / ::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
76 名前:74 mailto:sage [2006/12/26(火) 16:04:22 ] ごめんなさい。配列型で返ってきてました。。
77 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 16:26:50 ] >>73 use utf8を使えば文字を直接置換できるかな?
78 名前:デフォルトの名無しさん [2006/12/26(火) 16:43:49 ] >>68 pc8.2ch.net/test/read.cgi/php/1164519503/498-512
79 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 02:04:44 ] パール無図杉
80 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 23:00:18 ] すみません、質問があります。 WindowsのActive Perl v5.5.8です。 UTF16の日本語ファイルを開いて処理させようとすると 処理結果のテキストが文字化けしてしまいます。 Shift JISとUTF8形式だと問題なく処理できるのですが…。 UTF16でうまく処理できる方法はないでしょうか?
81 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 01:01:06 ] >>80 シフトJISのファイルを扱うとき、 binmode STDOUT, ":encoding(cp932)"; binmode STDERR, ":encoding(cp932)"; binmode STDIN, ":encoding(cp932)"; use open IO => ":encoding(cp932)"; とか書かなかった? cp932 を例えば、UTF-16LE に変えれば済むことと思われるが。
82 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 01:12:53 ] >>80 前スレがまだ残っているので、前スレ 694 からの流れを参照。 対策としては、前スレ 703 のリンク先にある方法が無難だと思う。
83 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 01:24:39 ] >>81 さん シフトJISのときは何も指定せずにいけました。 >>82 さん ありがとうございます。 明日頑張ってみます。
84 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 11:31:19 ] Activeperl でタイムアウトを指定してホスト名を逆引き(gethostbyaddr) するプログラムを書いています。タイムアウトした場合にはIPアドレスを 返そうと思います。そこで以下のようなサブルーチンを書いたのですが、 タイムアウトしません。古いActiveperlではalarmがないとの情報があった のですが、sleep行で確認した所、5.8.8では問題ないようです。 お知恵を拝借頂ければ幸いです。 sub resolv_host { my ($ip)=@_; my $timeout=2; my $host; $SIG{ALRM} = sub { die 'TIMED OUT' }; eval { alarm($timeout); # ホスト名を逆引きする。 #sleep 5; $host = gethostbyaddr(pack("C4", split(/\./, $ip)), 2); alarm(0); }; alarm(0); if ( $@ =~ /TIMED OUT/ ){ $host = $ip;} return ($host); } ※実行環境は以下の通りです。 Windows XP SP2 Activeperl 5.8.8
85 名前: ◆TWARamEjuA mailto:sage [2006/12/28(木) 13:23:20 BE:2178454-BRZ(6677)] Net::DNS を利用するのはいかがかしら?
86 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:31:04 ] 他所様のサーバの混雑具合を調べるプログラムを書こうとしています。 use IO::Socket; my $sock = IO::Socket::INET->new( PeerAddr => $ip, PeerPort => $port, Proto => 'tcp', Timeout => $TIMEOUT, ); if ($sock) { #接続成功 } else { #タイムアウト } 今現在のコードがこんな感じでして、繋がる繋がらないは分かるのですが、 接続に要する時間を調べたいもののその方法がわかりません。 SOCKETを触るのが今回初めてでして、 そもそもにおいて根本的な過ちを犯してる場合はそちらも併せて、 何かよい方法がありましたら、ご教授いただけると幸いです。
87 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:43:14 ] 普通に前後で現在時間を求めて引き算すればいいのでは?
88 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:58:48 ] >>85 ありがとうございました。 sub resolv_host { use Net::DNS; my ($ip)=@_; my $timeout=2; my $host; my $res = Net::DNS::Resolver->new( tcp_timeout => $timeout, udp_timeout => $timeout ); my $query = $res->query("$ip"); if ($query) { foreach my $rr ($query->answer) { next if $rr->type ne "PTR"; $host=$rr->ptrdname; } } else { $host=$ip; } return ($host); }
89 名前:名無しさん@Linuxザウルス mailto:sage [2006/12/28(木) 18:54:03 ] 任意の文字列からhttpで始まる単語(区切りはスペース)を切り取るにはどうしたらいいでしょうか $str = aaaa bbbb ccc ddd.vv.vv hhhh rrrr ff.ff.mm という文字列から「ddd.vv.vv 」「ff.ff.mm 」を切り出す方法です
90 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 18:59:42 ] @a = grep /^http/, split / /, $str;
91 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 19:05:18 ] @a = $str =~ /(?:^| )(http.*?)(?: |$)/g;
92 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 19:53:46 ] >>55 >>56 遅くなりましたが、ありがとうございました。 レポジトリを追加したらだいぶ便利になりました。 パッケージをダウンロードしてきてそのまま追加することもできるようになりました。
93 名前:名無しさん@Linuxザウルス mailto:sage [2006/12/28(木) 20:04:48 ] >>90 ,91 サンクス
94 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 20:45:12 ] 「後ろにtringが続かないs」を「z」に置換する方法は次の2つ以外にありますか? s/s$/z/; s/s([^t])/z$1/g; s/st([^r])/zt$1/g; s/str([^i])/ztr$1/g; ... s/string/(あり得なさそうな文字列)/g; s/s/z/g; s/(あり得なさそうな文字列)/string/g;
95 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 20:48:34 ] >>94 先読み否定。色々仲間があるので詳細はperlre参照。 s/s(?!tring)/z/g;
96 名前:デフォルトの名無しさん [2006/12/28(木) 21:14:01 ] 任意の精度の数値演算したいんですけど、 どうすればいいでしょうか?
97 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 21:16:21 ] あ、Math::BigFloat モジュールってのがありました すいません m(__)m
98 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 21:17:16 ] >>95 ありがとうございました。
99 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 05:18:57 ] FTPプロトコルでリモートにファイル転送するスクリプトを作ってるのですが ローカルとリモートで同名だけどリモートの方がファイルサイズ小さい場合 差分のみ転送にしたいのですがレジュームはどうやればできますでしょうか? perldoc Net::FTP でresumeをキーに検索したのですが見当たりませんでした。 よろしくお願いします。
100 名前:99 mailto:sage [2006/12/29(金) 08:20:07 ] 自己レス FTP resume perlをキーにググッたら下記の情報見つけた www.garayed.com/perl/215162-net-ftp-resume-file-transfer.html perldoc Net::FTPでWHEREを見ろって書いてあったので見たら ダウンロードはgetメソッドの第3引数でオフセット値が指定できるみたいだけど アップロードはrestartってメソッドでオフセット値をセットしてから putメソッドで転送すればいいのかな。 しかしputメソッドは第3引数でオフセット値を指定できないんだ???
101 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 08:59:14 ] どこまできちんと届いているかは、クライアントしか知らないから、 レジュームって普通クライアントから要求するようになってると思うよ。
102 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 09:29:59 ] >>100 Net::FTPだったらputじゃなくてappendにしないと上書きされちゃうよ >>101 99は具体的なやり方聞いてるのにそんな回答しても意味ネェだろw
103 名前:デフォルトの名無しさん [2006/12/29(金) 12:03:50 ] Perllこついての質問箱?
104 名前:デフォルトの名無しさん [2006/12/29(金) 12:08:27 ] Jcode::CP932 Encode::EUCJPMS をインストールした後 use Jcode::CP932とするとエラーになってしまいます。 エラー内容 Jcode::CP932 is not an object at (eval 2) line 234 Jcode::AUTOLOAD('Jcode::CP932', 'sjis', 'cp932', 'euc', 'cp51932', 'jis', 'cp50221', 'iso_2022_jp', 'cp50220', ...) called at c:/usr/local/site/lib/Jcode/CP932.pm line 39 main::BEGIN() called at c:/usr/local/site/lib/Jcode/CP932.pm line 0 eval {...} called at c:/usr/local/site/lib/Jcode/CP932.pm line 0 Jcode.pmのAUTOLOADでconfessしてるっぽいんですが、何故動かないのでしょうか? ちなみにWinXP、ActivePerl 5.8.7.813です
105 名前:SONY [2006/12/29(金) 15:18:48 ] >>104 仕様です
106 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 16:12:31 ] GK涙目wwwwwwwwwwwww
107 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:03:26 ] ----------------- これwww.example.com/1.txt とttp://www2.example.com/2.txt これ ----------------- この上の文を下の文に変換する"スマートな"方法としてはどのようなやり方がありますでしょうか? ----------------- これ<a href="www.example.com/1.txt">http://www.example.com/1.txt</a> と<a href="www2.example.com/2.txt">ttp://www2.example.com/2.txt</a> これ ----------------- 仕様としましては (1)http://またはhttps://またはttp://またはttps://で始まる場所をURL先頭とする (2)半角空白または全角空白の登場、または文の末尾でURLの最後判定をする (3)一行に複数のhttp://〜やttp://〜があっても全てにAタグを付ける (4)Aタグをつけること以外の文章の加工をしない です。 100stepくらい使えば書けないことはないと思うのですが、 スマートな方法は全く思いつきませんorz
108 名前:デフォルトの名無しさん [2006/12/29(金) 17:17:46 ] なあ、次スレからテンプレートにこれを追加しない? 実は、オレもJperl から Active Perl に移行するとき、 これが解るまでかなり時間がかかった覚えがあるんだけど。 --------------------------------------------------------- # 【Perl 日本語処理の基礎の基礎】 # このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。 # このレスの内容をそのまま(シフトJIS形式の)ソースファイルに保存して下さい。 # 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。 # 文字コードの条件が異なる場合には編集が必要です。 # 編集の仕方はご自分で勉強するか、このスレで質問して下さい。 # まず、以下の行を先頭に入れて下さい。 use encoding "cp932"; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # 次に、あなたが実行したい処理の内容を入れて下さい。 print "やあ!\n"; sleep(1);
109 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:24:21 ] use encodingは弊害がでかすぎるかと…。
110 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:26:35 ] >>107 要するにhttp urlの正規表現が解ればいいわけね。 www.din.or.jp/~ohzaki/perl.htm#httpURL
111 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:31:39 ] >>110 >要するにhttp urlの正規表現が解ればいいわけね。 違うッスorz (1)(2)だけなら $line =~ /(h?)(ttps?:\/\/[^ |^ ]+)/ で。。。
112 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:34:07 ] >107 use strict; use warnings; while (<DATA>) { s{(h?ttps?://([^\s ]+))}{<a href="$2">$1</a>}g; print $_; } __DATA__ これwww.example.com/1.txt とttp://www2.example.com/2.txt これ URLのパターンマッチはこれだと甘いけど。 >108 use encodingはきちんと理解して使わないとバグの元にしかならないから反対。
113 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:35:35 ] s{(h?(ttps?://[^\s ]+))}{<a href="h$2">$1</a>}g; ごめん、間違えた。
114 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 17:37:13 ] 全角空白って文字クラスにそのまま放り込んで大丈夫なんかいな
115 名前:108 mailto:sage [2006/12/29(金) 17:43:36 ] >>109 >>112 確かにね。 これから始める人なら、ソースはUTF-8に統一して もらったほうがいいかもね。これでいいかな? --------------------------------------------------------- # 【Perl 日本語処理の基礎の基礎】 # このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。 # このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。 # 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。 # 文字コードの条件が異なる場合には編集が必要です。 # 編集の仕方はご自分で勉強するか、このスレで質問して下さい。 # まず、以下の行を先頭に入れて下さい。 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # 次に、あなたが実行したい処理の内容を入れて下さい。 print "やあ!\n"; sleep(1);
116 名前:109 mailto:sage [2006/12/29(金) 18:24:42 ] >>108 =115 乙! WindowsのActivePerl初心者による 似たようなQ&Aの再生産を回避するために テンプレートを設置しようというのはとてもすばらしいッス! でも、 ・テキストモードとバイナリモード ・ASCIIとマルチバイトコード ・日本でのマルチバイトコードは複数の種類が存在すること ・UTF-8以外でのマルチバイトコードの扱い を理解してないと結局はすぐにつまづくと思う。 でも、これを丁寧に説明してるとテンプレートで紙面が足りないから 結局「http://〜を読んで」、「binmode, Encodeでググると吉」 ってなっちゃうんだよね。。。 次ぎスレに115のテンプレを追加して様子を見るのがいいのかな。
117 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 18:40:57 ] 両方うぜーよwebprogでやれ
118 名前:109 mailto:sage [2006/12/29(金) 21:07:36 ] >>117 うぜぇのは同意だけど、ウェブはかんけぇねだろバーカw
119 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:10:13 ] レベル的に物凄く関係ありまふ
120 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:15:52 ] くだすれPerlだな
121 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:24:28 ] 117のスルー力たんないからスレが荒れたな。 スルー力身につくまでおまえがROMるかwebprog行ってろ
122 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:30:03 ] >>104 Jcode.pmにパッチあててなくね?
123 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:46:19 ] するーかって何だよ スルメイカかよ
124 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 23:08:30 ] >>123 どうも「スルーする力(ちから)」という意味みたいだな。 それより、>>117 にぴったりのスレがあるぞ。こっちで活躍したらどうだ 【Perl上級者コーナーPart01】 pc8.2ch.net/test/read.cgi/php/1024741312/l50
125 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 23:24:05 ] ゾーキャスラー力を思い出す流れだが、まぁ通じないだろう。
126 名前:107 mailto:sage [2006/12/30(土) 00:21:53 ] >>112 ,113 できました!ありがとうございましたm(_ _)m
127 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 09:48:58 ] www.google.co.jp/search?hl=ja&rlz=1B2GGGL_jaJP177&q=%E3%82%B9%E3%83%AB%E3%83%BC%E3%82%AB&btnG=Google+%E6%A4%9C%E7%B4%A2&lr= スルーカ の検索結果 約 173,000 件中 1 - 10 件目 (0.03 秒)
128 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 09:53:09 ] Срука
129 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 03:05:23 ] kent-web の sunbbs.cgi を改造しまくって使っています。 記事番号が奇数番号のときと偶数番号のときとで、 交互に違う情報を入れたいと思っているのですが、 perl で偶数と奇数を判別するのってどうやればいいんでしょうか?
130 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 03:07:15 ] %2
131 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 03:14:40 ] ?
132 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 03:22:34 ] >>129 2で割った余りが0なら偶数、1なら奇数と判定すればOK
133 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 07:26:19 ] 1 と and とって1ビット目が 0 か 1 かで判断してもおk
134 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 15:02:29 ] >>132-133 例文でお願いしますです。orz
135 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 15:12:55 ] >>134 この程度のこともわからないのに >kent-web の sunbbs.cgi を改造しまくって使っています。 なのか
136 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 15:22:34 ] >>134 %2
137 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 18:38:54 ] 巨大な数字ってどういうビット構造なんかな? $a = 234; if ( $a & 1) { print "奇数" } else { print "偶数" }
138 名前:デフォルトの名無しさん [2007/01/02(火) 00:43:33 ] 詳解 正規表現 をかったんだよお年玉で
139 名前:デフォルトの名無しさん [2007/01/03(水) 10:43:45 ] WINDOWSの鯖でファイルが書き込み可能かどうかを判断するにはどうしたらいいんですか? WINDOWS鯖の場合だと if (-w $write_file_path) { print "書き込み可能\n"; }というプログラムがが使えないんです
140 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 11:06:17 ] >>139 == pc10.2ch.net/test/read.cgi/php/1164519503/635 マルチなので放置しましょう
141 名前:デフォルトの名無しさん [2007/01/03(水) 11:20:32 ] >>109 >use encodingは弊害がでかすぎるかと…。 kwsk. 今まで、Jcode->new($hogehoge)->sjis; でちまちま変換していた者としては use encoding という技は新味ですyo.
142 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 14:25:47 ] うるう年かどうかを判別するプログラムが課題で出ているのですが $y=1900; if($y %4==0){ print "$y is a leap year.\n"; }elsif(($y %4==0) && ($y %100==0)){ print "$y is a common year.\n"; }elsif(($y %100==0) && ($y %400==0)){ print "$y is a leap year.\n"; }else{ print "$y is a common year.\n"; } これで1900を$yに入れても、うるう年になってしまいます。 1900をcommon year.にするには、どうすればよいのでしょうか?
143 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 14:35:27 ] >>142 そういうのは400,100,4の順番に判定するんだよ
144 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 14:45:24 ] なんてほのぼのする質問だろう
145 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 14:52:27 ] 正直に課題って言ったのも好感w
146 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 15:09:31 ] >>142 最初の条件 $y %4==0 が、「4で割り切れたら」だから、4で割り切れる数字は、 全てここで引っかかっちゃうよ。
147 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 17:45:10 ] (´・ω・)ヤサシス
148 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 20:54:19 ] なんでうるう年は4年に一回なのに400と100も判定にいれるの?
149 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 20:55:00 ] >>148 それは冗談で言っているんだよな。
150 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:13:58 ] 愉快なスレだな
151 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:22:42 ] use DateTime; my $y = 1900; if (DateTime->new(year => $y)->is_leap_year) { print "$y is a leap year.\n"; } else { print "$y is a common year.\n"; } こうですか? よくわかりません><
152 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:25:31 ] アッー!
153 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:27:16 ] >>151 反則です
154 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:31:37 ] しかし >>142 にはモジュールを使ってはいけないなんて一言も(ry まあ冗談だろうけど、実際に閏年の判定を書くとしたら >>151 なんだよなぁ・・・。
155 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:41:17 ] >>149 まあ、今後 90年以上は >>148 が正しいわけだが。
156 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:41:24 ] でもデフォルトで入ってたっけ?
157 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:50:31 ] 最新のactiveperlには入ってた。
158 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:00:08 ] >>142 の心温まる条件式を眺めてると、質問者に>>151 を見て欲しくない気持ちになってきた。
159 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:20:40 ] 4000年で割り切れる年も入れないとね。
160 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:34:26 ] >>159 どんだけ先の話やねん
161 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:51:30 ] つ 「このように広く普及するのであれば、もっとちゃんとした設計を施すべきだった」
162 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:59:36 ] そんなに長いこと使われないだろうと思って作ったソフトが2000年問題とかの原因になったんだよな 1993年使われ続けることも考慮しとくべきだな
163 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:02:58 ] sub is_leap_year { $j = shift() + 660; unless ($j % 4) { unless (($j - 660) % 100) { return 0 unless ((($j - 660) / 100) % 4); } return 1; } return 0; } どぞ。
164 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:04:31 ] だが、心配のしすぎではないか。
165 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:08:42 ] もうまもなく4000年になろうとしているのに4000で割り切れる年を閏年にすべきか否かは未だ意見の分かれるところだね。 地球の自転が遅くなるからとか言うが。小賢しい。
166 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:10:06 ] そういってy2kが問題になってたんじゃないか。 だいたい時間を1970/01/01 00:00からの32bit整数であらわすのも心配だな。やっぱり64bitはほしいところだ。
167 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:20:41 ] 符号付 64ビット整数で紀元からのピコ秒数で数えることにすると紀元の前後300年弱しか表せない。
168 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:26:13 ] perl -e "print scalar(localtime(0xffffffff/2));" だと「Tue Jan 19 12:14:07 2038」って出るが perl -e "print scalar(localtime(0xffffffff/2+1));" だと何も表示されないな perlは普通にでかい値扱えるから localtime関数も符号付32bitの上限超えても平気かと思ってたがだめなのか
169 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 00:32:15 ] じゃあ紀元から符号付で128bitあれば足りるかな。
170 名前: ◆TWARamEjuA mailto:sage [2007/01/04(木) 00:35:18 BE:5336677-BRZ(6700)] コンパイル時に指定してあげれば、、、@64bits
171 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 09:43:47 ] ピコ秒って光が30cmしか飛べないんだぜ。 原子時計の精度が1ピコ秒なんだぜ。 どうやって計るんだぜ?
172 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 13:46:03 ] >>168 表示はされたけど1901年だったわさ
173 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 19:54:07 ] >>171 10E-16sオーダの時間の計測に成功したっていうニュースなら見た気がするが。
174 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:23:27 ] 不確定性原理からいくと、最小の時間単位は何だっけ?
175 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:34:09 ] プランク時間か?