- 1 名前:nobodyさん mailto:sage [2007/09/16(日) 19:49:43 ID:???]
- Perlのコーディングで困ってる人のスレです。
【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
- 955 名前:952 mailto:sage [2008/02/21(木) 03:31:08 ID:???]
- >>954
ありがとうございます。そちらの方で検討させていただきます。 このような複雑な置換について私は苦手でして、もしこれがお分かりになられるなら後学のためにも教えていただきたいのですが、ご無理でしょうか?
- 956 名前:nobodyさん mailto:sage [2008/02/21(木) 10:36:05 ID:???]
- マッチした文字列の前後は$esc_inで囲って
マッチした文字列はルールに沿って変換 ってことかな?
- 957 名前:nobodyさん mailto:sage [2008/02/21(木) 10:36:46 ID:???]
- ×$esc_inで囲って
○$esc_inと$esc_outで囲って
- 958 名前:nobodyさん mailto:sage [2008/02/21(木) 10:39:56 ID:???]
- 無理に書くとこんな感じ? 全くお勧めしない。
# 絵文字部分を1文字ずつ加工。 # 1バイトずれてマッチしたり、ascii部分にマッチしないようにしてるので面倒 $str =~ s{ ( (?:\G | ^[^\1b]*\x1b\x24\x42) (?:[^\x1b]{2}|\x1b\x28\x42[^\x1b]*\x1b\x24\x42)*? ) ([\x75-\x7b])([\x21-\x7e]) }{ sprintf "%s\x1b\x28\x42[%02x%02x]\x1b\x24\x42", $1, ord($2), ord($3) }gex; # 冗長なエスケープシーケンスの並びを除去 $str =~ s/(\x1b\x24\x42)+/$1/g; $str =~ s/(\x1b\x28\x42)+/$1/g; $str =~ s/\x1b\x28\x42\x1b\x24\x42//g; $str =~ s/\x1b\x24\x42\x1b\x28\x42//g;
- 959 名前:952 mailto:sage [2008/02/21(木) 14:20:04 ID:???]
- >>958
ありがとうございます。 やはりすごい複雑になってしまうんですね。 ( (?:\G | ^[^\1b]*\x1b\x24\x42) (?:[^\x1b]{2}|\x1b\x28\x42[^\x1b]*\x1b\x24\x42)*? ) を見てもさっぱり理解できません。 これが絵文字でない文字を指すというのはわかるのですが、詳しく教えていただけないでしょうか? または参考になる書籍などがありましたら教えていただけないでしょうか。
- 960 名前:952 mailto:sage [2008/02/21(木) 14:25:02 ID:???]
- 書き忘れましたが、Encode::JP::Mobileを使い無事utf8にできました。
これを作った方すごいですね。こんな便利なものがあると知りませんでした。
- 961 名前:初心者 [2008/02/21(木) 14:43:22 ID:eHzrHpy8]
- perlでカレンダーを作るのですが、プログラミングする内容としては何がひつようでしょうか?
何から書いていいやらとっかかりがわかりません。どなたかアドバイス等をお願いします。
- 962 名前:nobodyさん mailto:sage [2008/02/21(木) 14:48:53 ID:???]
- ggrks
- 963 名前:nobodyさん mailto:sage [2008/02/21(木) 14:49:53 ID:???]
- とりあえず以下のサブルーチンを作る
1. 本日の年・月・日・曜日を返す 2. x年y月z日の曜日を返す 3. x年y月1日の曜日を返す 4. x年y月の月末日を返す 5. x年y月の前月を返す 6. x年y月の翌月を返す 7. x年y月z日の前日を返す 8. x年y月z日の翌日を返す
- 964 名前:初心者 [2008/02/21(木) 15:13:33 ID:eHzrHpy8]
- ありがとうございます。
- 965 名前:初心者 [2008/02/21(木) 15:26:58 ID:eHzrHpy8]
- 今年のようなうるう年かどうかを調べるにはどうしたらよいのでしょうか?
- 966 名前:nobodyさん [2008/02/21(木) 15:35:05 ID:/bZGgDSr]
- 閏年の定義に当てはまるかどうかを調べればよい。>>965
西暦が4で割り切れて、100で割り切れなければ閏年。 西暦が4で割り切れて、400でも割り切れれば、100で割り切れても閏年。
- 967 名前:nobodyさん mailto:sage [2008/02/21(木) 15:35:25 ID:???]
- いちいち相手にするからググればわかるような質問が絶えないんだよな
- 968 名前:nobodyさん [2008/02/21(木) 15:38:45 ID:/bZGgDSr]
- 悪かった。今は反省している。
- 969 名前:nobodyさん mailto:sage [2008/02/21(木) 16:23:42 ID:???]
- 閏年を知る必要は無いはず。
月末=翌月1日の1日前( x年y月の月末日=(x年y+1月1日)-1日 )だから、 PerlインタプリタとOSとライブラリにバグがなけりゃ閏年だろうが、平年だろうが 関係なく計算できる。 Date::Calc使って計算すりゃ一発で出るだろ。
- 970 名前:nobodyさん mailto:sage [2008/02/21(木) 16:35:43 ID:???]
- ググっても分からないような初心者質問って?
- 971 名前:nobodyさん mailto:sage [2008/02/21(木) 17:03:05 ID:???]
- >>1
- 972 名前:nobodyさん mailto:sage [2008/02/21(木) 18:08:27 ID:???]
- >>969
ggrksには同意だが、 たとえば誕生日の入力で2/29が妥当かどうかってのは閏年を判別しなきゃいかんだろ。 質問者の意図は知らんが。
- 973 名前:969 mailto:sage [2008/02/21(木) 18:13:29 ID:???]
- >>972
名前: 初心者 ID:eHzrHpy8 が継続的に質問してるんで、 ID:eHzrHpy8 : 「>961 カレンダーを作りたい。」 nobodyさん: 「>963」 ID:eHzrHpy8 : 「>965 月末日を知るのに閏年を知りたい」 って一連の流れだと思ったんだが、違うのか?
- 974 名前:nobodyさん mailto:sage [2008/02/21(木) 18:21:25 ID:???]
- 要するに2月のカレンダーを作るときには、3月1日の日付から−1してやって、日付を取得すれば
いいってことを>>969は言ってるんだね。 カレンダーを書くルーチンを考えたことないから、参考になるね。
- 975 名前:nobodyさん mailto:sage [2008/02/21(木) 19:03:40 ID:???]
- localtime使う前提だよね?
末日計算を前提としてる話とごっちゃになっとる
- 976 名前:nobodyさん mailto:sage [2008/02/21(木) 19:18:16 ID:???]
- もちろん。
でもさ、カレンダーを書くcgiくらい、散々ソースが転がっていそうな気がするんだけどね。 その辺の中から、適当に拾ってアレンジすれば目的は果たせるんじゃないの?
- 977 名前:nobodyさん mailto:sage [2008/02/21(木) 19:26:16 ID:???]
- 自分が使うカレンダーならどっかから拾ってくればいいが、
課題ともなるとそうもいかないんじゃない?
- 978 名前:nobodyさん mailto:sage [2008/02/21(木) 19:33:08 ID:???]
- というか、今更perlの課題とか出す大学とかあるの?
- 979 名前:nobodyさん mailto:sage [2008/02/21(木) 20:55:28 ID:???]
- >>952とまったく同じ文章が今日MLに流れてきてたけど、同一人物?
- 980 名前:nobodyさん mailto:sage [2008/02/21(木) 23:37:02 ID:???]
- >>978
専門学校とかじゃね?
- 981 名前:ID消し挑戦w mailto:000 [2008/02/23(土) 16:05:17 ID:???]
- テスト^^;
- 982 名前:nobodyさん mailto:sage [2008/02/23(土) 16:40:22 ID:???]
- 自分用モジュールつくってるんだけどさ
package hoge; use strict; my $test = 'ABC'; sub new { my $pkg = shift; bless { hoge => $test, },$pkg; } みたいに先頭で定数定義してメソッド内で使いまくるのって問題ありますか? これならuse strictしない方が良かったりする?
- 983 名前:nobodyさん mailto:sage [2008/02/23(土) 16:46:25 ID:???]
- 外部値で初期化したいなら引数として渡せば?
- 984 名前:nobodyさん mailto:sage [2008/02/23(土) 17:07:54 ID:???]
- >>982
問題ないとおも。 ただ、定数として明示したければ、 use Readonly; Readonly my $test = 'ABC'; しといた方が
- 985 名前:nobodyさん mailto:sage [2008/02/23(土) 17:09:32 ID:???]
- 定数は大文字にする習し
- 986 名前:nobodyさん mailto:sage [2008/02/23(土) 18:07:36 ID:???]
- (・∀・)
- 987 名前:nobodyさん mailto:sage [2008/02/23(土) 18:54:14 ID:???]
- >>983
箱から出したくないしので、blessに絡めたくないんです。 ちなみに全メソッドで使います。 >>984 CPAN配布物ですかね? 名前からして便利そうですが、標準で入ってないのは遠慮したいです。 >>985 おk コールバックあたりも調べてみます。 とりあえずみなさんありがとうです。
- 988 名前:nobodyさん mailto:sage [2008/02/23(土) 19:03:14 ID:???]
- use Vars, oursなんてあったのか。
- 989 名前:nobodyさん mailto:sage [2008/02/23(土) 19:57:03 ID:???]
- >>987
標準ならconstantプラグマ
- 990 名前:nobodyさん mailto:sage [2008/02/23(土) 21:32:08 ID:???]
- 以前は値を返すだけのsub使ってた。
- 991 名前:nobodyさん mailto:sage [2008/02/23(土) 21:46:40 ID:???]
- >>987
CPAN配布物だけど、純Perlソースだから、インスコしなくても、 下記からダウソして自分のモジュールと同じディレクトリに入れればよさげ。 search.cpan.org/src/ROODE/Readonly-1.03/Readonly.pm
- 992 名前:nobodyさん mailto:sage [2008/02/23(土) 21:47:49 ID:???]
- 空のプロトタイプ付きサブルーチンはコンパイル時に展開されるので
効率はいい。constant プラグマはいわばその構文糖。 www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html#Constant_Functions 変数展開コンテキストに埋め込みたいなら、リテラルのリファレンスに 名前を付ける方法もある。 www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html#Symbol_Tables パッケージグローバルな my 変数も、そのパッケージ内でうっかり 書き換える心配が無いのなら別に悪い選択肢じゃない。
- 993 名前:982 mailto:sage [2008/02/23(土) 22:24:31 ID:???]
- >>991
ダウソしました。できるだけ理解してから使ってみます。 >>990,>>992 サブルーチンでやるならsub Readonly () { 'ABC' }でおkですね。 とりあえず自分用はそうします。 もし他人に配布するような事があれば>>989,>>991が良いっす 短時間ですごい勉強になりました。ありがとう
- 994 名前:nobodyさん mailto:sage [2008/02/24(日) 18:30:29 ID:???]
- 保 守
- 995 名前:nobodyさん mailto:sage [2008/02/25(月) 16:37:54 ID:???]
- 次スレ希望
- 996 名前:nobodyさん mailto:sage [2008/02/25(月) 17:52:22 ID:???]
- テンプレ貼るなら立ててやるよ
- 997 名前:nobodyさん mailto:sage [2008/02/25(月) 19:27:13 ID:???]
- ほらよ
Perlコーディング初心者質問スレ Part 57 pc11.2ch.net/test/read.cgi/php/1203935151/
- 998 名前:nobodyさん mailto:sage [2008/02/25(月) 20:00:31 ID:???]
- 乙です。
埋め
- 999 名前:nobodyさん mailto:sage [2008/02/25(月) 20:07:07 ID:???]
- 埋め
- 1000 名前:nobodyさん mailto:sage [2008/02/25(月) 20:07:31 ID:???]
- 埋め
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|