- 1 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:54:12 ]
- "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についての質問箱 29箱目 pc11.2ch.net/test/read.cgi/tech/1166708139/ リンク集は>>2-3 過去スレは>>4
- 116 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:01:06 ]
- FTPで接続だから、LWPよりもNet::FTPじゃね?
- 117 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 07:36:19 ]
- >>113
ありがとうございます。やってみます。 >>115-116 Net::FTPで作ってたのですがこれだと相手に繋がらなくて客先の担当の方が 「wget使ってください」とのことでした。
- 118 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 08:57:31 ]
- wgetでとれてNet::FTPだとだめというのもかなり不思議だな。
原因はわかってるのかな。それともwgetだと実績あるから 調べるの面倒だしそれにしとけとあしらわれたか?
- 119 名前:デフォルトの名無しさん [2007/03/23(金) 09:41:38 ]
- 突然ですが、xxxyyy.html というファイル名のファイルの、
全てのa要素のhref属性値をzzzwww.html というファイルに出力する方法を教えてください。
- 120 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 09:56:38 ]
- >>118
passiveコマンド叩けば通るとかいうオチだったりして……
- 121 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 10:23:13 ]
- >>119
突然だねぇ・・・
- 122 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 10:24:01 ]
- >>119
ググレカス module.jp/blog/monday_module_HTML-LinkExtor.html
- 123 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 17:56:12 ]
- 突然DOMで対抗してみたり
javascript:a=document.getElementsByTagName('a');b='';for(i=0;i<a.length;i++)b+=a[i].href+'<br>';document.write(b);
- 124 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:19:01 ]
- >>117
pasv() しても駄目か? ファイヤーウォールがある場合は passive mode にしないと駄目なことがあるぞ。
- 125 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:20:00 ]
- 初心者質問で申し訳ないのですが、perlでコロン単体にはどのような意味があるのでしょう。
リファレンスを引いても載ってないし...。
- 126 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:49:02 ]
- 三項演算子?
- 127 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:54:00 ]
- >>126
下記(*)の$_の手前にあるヤツなんですが・・ # CSV形式の $line から値を取り出して @values に入れる { my $tmp = $line; $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} …(*) ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); } Perlメモ www.din.or.jp/~ohzaki/perl.htm#CSV2Values
- 128 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:05:15 ]
- どう見ても三項じゃん
- 129 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:12:49 ]
- なるほど。ありがとうございました。
- 130 名前:デフォルトの名無しさん [2007/03/29(木) 01:14:28 ]
- substrで数値文字列から”001”のような文字列を切り出したいのですが、
デフォルトでは数値として扱われてしまい、1になってしまいます。 キャストの方法を調べたけど思うような情報が得られません。 もうしわけありませんが、教えていただけないでしょうか。
- 131 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 01:41:02 ]
- sprintfとかは?
- 132 名前:デフォルトの名無しさん [2007/03/29(木) 08:07:32 ]
- >>130
ウチの環境下だと、普通に文字列認識なんだが変数かなんかに突っ込んで、 計算かましたりしてない? % perl -le 'print substr qq{00001}, 3' 01 % perl -le 'print unpack qq{x3A2}, qq{00001}' 01
- 133 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:08:16 ]
- 上げてもた…
- 134 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:27:21 ]
- 文字列比較で $name == "admin" とかやってるのでは
- 135 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:13:36 ]
- +で連結してるとか。
- 136 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:40:09 ]
- $val="2007年3月29日○○の温度は20度、○○の温度は10度、○○の温度は15度";
のような文字列があった場合 ○○の温度は10度の"10"を取得したいのですが、 どのように正規表現を書けばいいんでしょうか。 $value =~ /([0-9]+)/ のようにすると $1=2007 となりますが、 最大マッチしたうちのn番目を取得できたりする書き方があるんでしょうか 例がちょっとあれですが、○○には同じワードが入ることを想定してます。
- 137 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:42:39 ]
- 本嫁
- 138 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:57:25 ]
- while ($val =~ /([0-9]+)/g){ push(@val, $1); }
print "$word[3]\n"; 汚くなったけど、上記のようにしてなんとかできました。失礼しました。
- 139 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:08:05 ]
- まー本人がいいっていうのならいいよね(´・ω・`)
- 140 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:10:40 ]
- なにか他にやりかたあれば教えてください(つД`)
- 141 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:28:37 ]
- 3年後に自分のコードみて「俺アホやん」 と思えたら、
君は著しく成長できたということだ。
- 142 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:45:58 ]
- 3年とはのんきな話だな。3ヶ月で一定のレベルに達しないなら、その人が向いてないかまたはその言語に悪意が混入されているかだな。
- 143 名前:壁|・ x ・)つ○ mailto:usage [2007/03/29(木) 22:09:20 ]
- $val =~ /(\d+)度/g
- 144 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 12:21:03 ]
- >>142
そんなこと言うなよ
- 145 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:55:55 ]
- コーディングテクは日々進化し続けると思うけどなぁ。
俺が還暦を迎えた頃にはスゲーことになってると思うんだ。
- 146 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:01:15 ]
- base.pmなんだけど、
sub get_fields { () = \%{$_[0].'::FIELDS'}; return \%{$_[0].'::FIELDS'}; } 「() =」これって何してるんでしょう? perl5.003で動作するように書き換えられないかな?
- 147 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:06:28 ]
- >>146
コメントで「『タイポじゃねーの警告』は黙れ」と書いてあるだろ。 つまりその部分は動作とは無関係。 しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。
- 148 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:23:03 ]
- >>147
すまん。 エラー書いてなかった。 Can't modify stub in list assignment at /path/to/base.pm line 43, near "};" こんなのが出る。 > しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。 大人の事情というやつで・・・。
- 149 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:58:15 ]
- >>148
search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod#Can't_modify_%25s_in_%25s - () = \%{$_[0].'::FIELDS'}; + # () = \%{$_[0].'::FIELDS'}; + local $^W = 0;
- 150 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:24:17 ]
- > 大人の事情というやつで・・・。
そんな仕事辞めてしまえよ
- 151 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:14:49 ]
- 5.003を理由に依願退職する>148であった。
- 152 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:08:39 ]
- linuxのperl向けのIDEでお薦めはなんでしょうか
- 153 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:12:15 ]
- emacs一択。
あとEPICとか? つーかPerlにはいいIDEないよ。
- 154 名前:152 mailto:sage [2007/03/31(土) 02:51:38 ]
- ども
そうですか、ではボチボチとやってみます
- 155 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:53:14 ]
- 春先は150みたいな
社会のしがらみスルー系のレスの ネタっぽさが薄まるんだよな
- 156 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 03:48:41 ]
- (1..10)
は1から10までの数を持つリストを生成する式だと思うんですが、 $hoge = (1..10); print $hoge; とやればリストの最後の値である10が変数$hogeに代入されると思ったのに なにも出力されません。 スカラー変数にリストを代入すると、リストの最後の値が代入されると思うんですが どこが間違っているんでしょうか?
- 157 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 03:59:22 ]
- Perl7っていつ出るんですか?
- 158 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:02:35 ]
- >>156
↓を実行するとわかるけど、範囲演算子(..)が範囲内の値リストを生成するのは、 リストコンテキストの時。スカラーコンテキストでは、違う意味になるよ。 d.hatena.ne.jp/palmo/20060724/rangeop while (<DATA>) { chomp; $hoge = (1..3); print "$_ = $hoge\n"; } __DATA__ AAA BBB CCC DDD EEE FFF
- 159 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:05:29 ]
- ..は範囲演算子。
$hoge = (1..10) のようにスカラコンテキストで用いた場合、..の左項が真になった 時点から右項が真になるところまで真を返す。(...だとちょっと変わる) いずれかの項が定数値であった場合、それは $. との比較であるとみなされる。 全く読み込んでいない状態なら $hoge の値は $. == 1 の結果に等しい。
- 160 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:17:29 ]
- 最後のとこ、全く読み込んでいないなら、$. == 1の結果は偽、で。
- 161 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 16:28:17 ]
- >>158,159
...演算子もコンテキストで意味が変わるんですね。 わかりました。ありがとうございます。
- 162 名前:デフォルトの名無しさん [2007/04/02(月) 04:58:36 ]
- perlのコミュは初心者に優しくて好きだ。
スクリプト言語経験者でも表記にとっつきにくいからかな。 マニュアル嫁で突っ返されることが少ない気がする。 (マニュアル読んでもわかんなかったりするし;ω;)
- 163 名前:デフォルトの名無しさん [2007/04/02(月) 06:06:27 ]
- XpSP2でActivePerl-5.8.8.820-MSWin32-x86-274739.msiを
インストールしたんだけど、Jcode.pmがインストールされない。 なぜ?教えてください。
- 164 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 07:17:48 ]
- ActivePerlのことはよく知らんが、
Perl 5.8.0以降Jcodeが標準モジュールじゃなくなったからじゃないかな
- 165 名前:デフォルトの名無しさん [2007/04/02(月) 09:35:55 ]
- >>164
5.8.0以降はJcode.pmが標準と聞きましたので 当然、インストールされると思ってたのですが、 探しても見つからないんですよ。
- 166 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 09:41:41 ]
- 5.8.0からEncodeモジュールが標準装備になってるからそれ使え。
- 167 名前:デフォルトの名無しさん [2007/04/02(月) 10:17:24 ]
- >>166
使っているアクセス解析プログラムがJcode.pm使っているんですよ。 perlのPG経験がないんで、改造も出来ないんです。 これです。 ttp://www.bflets.dyndns.org/Tools/AWStatsJpn.html
- 168 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 10:23:07 ]
- >>167
池沼か?標準じゃ入ってないと言ってるだろうが。
- 169 名前:デフォルトの名無しさん [2007/04/02(月) 10:29:59 ]
- それじゃ別の方法、考えています
- 170 名前:デフォルトの名無しさん [2007/04/02(月) 10:30:15 ]
- 考えます
- 171 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 10:34:35 ]
- 普通にJcode.pmインストールすりゃいいじゃないか。莫迦か
- 172 名前:デフォルトの名無しさん [2007/04/02(月) 10:46:55 ]
- >>171
インストールしてもうまくいかないんですよ やりかたが間違ってるかもしれませんが。 説明しているページで、そんなモジュールなかったり。 以下は参考にしたページです。 ttp://sakaguch.com/SetJcodePm.html win_install.plなんてないし。 マニュアルで置いても、変換後のファイルは0バイトだし。
- 173 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 11:33:15 ]
- >>172
Jcodeインストールするならコマンドプロンプトからppm(今時はppm-shellかな)を起動させて install Jcode(enter) で一発で入ると思うが。
- 174 名前:デフォルトの名無しさん [2007/04/02(月) 11:57:01 ]
- >>173
ありがと 意味不明だけど、勉強してやってみる
- 175 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:17:49 ]
- つ[ perl -MCPAN -e shell ]
- 176 名前:デフォルトの名無しさん [2007/04/02(月) 12:23:33 ]
- ありがと。ppmでインスコできた。
でも、うまく動かなった。 これはperlが原因じゃないから ここで、さよなら。 じゃ、教えてくれた人、ありがと。
- 177 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:25:27 ]
- っ ttp://openlab.jp/Jcode/index-j.html
- 178 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:31:16 ]
- 次から低レベルな質問は
webprog板でやってくださいね
- 179 名前:デフォルトの名無しさん [2007/04/02(月) 13:02:54 ]
- >>178
そのわりに、明確な回答書いてる奴いねーけどな
- 180 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 13:14:06 ]
- こんな時間帯だからじゃないの?w
公式のは古いからいつものサードパーティの 所にver.2.06があるからそれをインストールするだけじゃん
- 181 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 09:34:45 ]
- すいません。正規表現についての質問なのですが・・・
abcあいうえお123./<>~"@ の様な文字列から日本語だけマッチするもしくはASCIIコードだけマッチさせるようにするには どうすればよいのでしょうか?
- 182 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 10:12:57 ]
- >>181
文字コードをeucにして、 my $pat = pack("C*",0x20,0x21..0x7e); /[$pat]+/ でASCII /[^$pat]+/ で日本語(と制御コード)
- 183 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 10:15:20 BE:264938483-PLT(12980)]
- module.jp/blog/regex_unicode_prop.html
- 184 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:53:28 ]
- 正規表現でのグループ化について質問です
$_ = 'AAAbarbarbazZZZ'; だとして @a = /AAA(foo|bar|baz)+ZZZ/; とすると、@a の中身は最後にマッチした @a = ('baz') 一つとなりますが、 これを @a = ('bar', 'bar', 'baz') とする正規表現はあるでしょうか? (){n} でなく ()+ を使ったのは数量が固定ではないためです。 なんらしか正規表現方法で 上記一文で済ませられたら…と思い質問させていただきました。
- 185 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:38:28 ]
- >>184
何でも一行に詰め込みゃいいってもんでもないけど… @a = splice @{[ grep length, split /(foo|bar|baz)/, 'AAAbarbarbazZZZ' ]}, 1, -1;
- 186 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:55:26 ]
- 確かに一行ですが…^^;レスありがとうございます。
'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合 のチェックを別にしなければなりませんが。 やはり ()+ でのマッチを正規表現の修正で全部リストする無理でしょうか
- 187 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 22:27:05 ]
- m/AAA((?:foo|bar|baz)+)ZZZ/
とかすれば全部とれることはとれる。 リストにはならないけど。
- 188 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 22:29:35 ]
- >>186
> 'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合 その場合 @a は () とするべきか AAA foo XXbarYYYYYbazZZZ と分けるべきか AAAfooXX bar YYYYYbazZZZ と分けるべきか AAAfooXXbarYYYYY baz ZZZ と分けるべきか >>184からは読み取れないよ?
- 189 名前:184 mailto:sage [2007/04/05(木) 23:22:15 ]
- レスありがとうございます
>>187 ()+ での一気取得が駄目だった場合、私もそれを候補の一つに考えていました リストにするには(foo|bar|baz)のマッチングがもう一回必要になってしまいますが >>188 説明不足でした。申し訳ありませんでした (ある程度大きいテキストから) 'AAA' と 'ZZZ' の間が (foo|bar|baz)+ のみで構成されている箇所を探し その部分をリストとして取得したいと思っております ですので、提示くださった選択肢の中では >その場合 @a は () とするべきか を考えています (foo|bar|baz) の部分は実際はかなり重そうな正規表現の羅列と選択(|)で構成されていて ()+ による繰り返しも回数も非常に多く (foo|bar|baz) のマッチングによる2度手間(切り出し・リストへ分割)は避けようと思い 今現在は下記の感じの処理を考えています if (/AAA/) { while ($' =~ /^(foo|bar|baz|ZZZ)/) { if ($1 eq 'ZZZ') { OK; last; } push(@a, $a); } } } そこで >>184 の質問するに至りました マッチングも一回で一文で済ませられたら…と 長文失礼
- 190 名前:184 mailto:sage [2007/04/05(木) 23:38:24 ]
- >>189 の
while ($' =~ //) は while ($' =~ //o) を考えています 今docを読み込んでいるんですが ()+ でのグループの繰り返しマッチングの 全リスト取得は、正規表現工夫しても仕様的に無理なのかな…
- 191 名前:184 mailto:sage [2007/04/05(木) 23:40:39 ]
- push(@a, $a) の行も間違えていました…
慌てて書き上げたもので 連投すみません
- 192 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 23:44:49 ]
- AAAとZZZの間だけでいいのか?
AAAの前や、ZZZの後ろは無視していいのか?
- 193 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 23:47:12 ]
- あと、入力データと出力データの例を具体的に示してくれ。
入力文字列と、それに対する@aの中身はどうなるのか。
- 194 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 23:51:08 ]
- >>190
1対の括弧につき1つの値が保存される仕様なんだから、 1回のマッチにおいて1対の括弧で複数個の値を得るのは そりゃ無理だわな。 それに複雑な正規表現でバックトラックの嵐にするより、 幾つかのシンプルな処理に分けた方が速い。 if (/AAA/g) { push @a, $1 while /\G(foo|bar|baz)/g; }
- 195 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 23:52:06 ]
- マジレスすると、速度とか考慮するなら切り出して二段階とかにした方が速い。
まぁ、元のデータの性質が分からんと何とも言えんが。
- 196 名前:こういうこと? mailto:sage [2007/04/06(金) 00:00:11 ]
- if(($x) = /^AAA(.+)ZZZ$/){
$x =~ s/(foo|bar|baz)/push @a, $1/ge; }
- 197 名前:196 mailto:sage [2007/04/06(金) 00:06:16 ]
- ああ、AAAが行頭とは限らないのか。
- 198 名前:184 mailto:sage [2007/04/06(金) 00:15:33 ]
- >>192
はい。 /AAA(foo|bar|baz)+ZZZ/ これに厳密にマッチするところの(foo|bar|baz)のみを取得したいので 111AAAfooZZZ222 : 111 222 等は要りません 111AAAfooXXXbarZZZ222 : この場合 foo bar も要りません 111AAAfoofoofoobazbarZZZ222 : @a = ('foo', 'foo', 'foo', 'baz', 'bar') を取得したい >>193 申し訳ありません。実際の入力データはお見せすることが出来ないので、 等価な具体例の作成も時間がかかってしまうかも知れません 上記例でご容赦ください >>194 >そりゃ無理だわな。 ありがとうございます。 これが出来るのかどうかが一番知りたかったので、ふんぎりがつきました。 実際の具体例のデータを示せないので、(主に速度に関する)お答えは難しいですよね。 その中でも例やヒントを示してくださった方々ありがとうございました。 内部的な処理は詳しくないのですが、試行錯誤しながら参考にさせていただきたいと思います。 皆さんレスありがとうございました。(_ _)
- 199 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 04:08:13 ]
- >>198
どういたしまして
- 200 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 08:54:56 ]
- 仕事丸投げするのはいいが、藻前さんが辞めた後にメンテする人のことも
わかってやれよな。
- 201 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 09:31:06 ]
- 括弧に量指定子使うのきめえ
- 202 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:26:07 ]
- foo,bar,bazが3文字って決まってるならこれでどうよ。
$_ = '111AAAfoofoofoobazbarZZZ222'; /AAA(?:(foo|bar|baz)(?{push(@a,substr($&,-3))}))+ZZZ/; print join(",",@a),"\n";
- 203 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 11:15:13 ]
- つーか、そもそもどうしてそんなデータ構造なのかが気になる件。
- 204 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 11:30:16 ]
- 宿題?
- 205 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:27:01 ]
- ########################################
# データ内に改行が無ければ最初の二行は # $_ = <>; で置き換え可能 ######################################## chomp(@tmp = <>); $_ = join '', @tmp; $re = qr/foo|bar|baz/i; s!(AAA(?:$re)+ZZZ)!push @a,$1=~/($re)/g !ge; print join("-", @a); これはひどい。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:37:01 ]
- qrのオプションは i じゃなくて o だった。
- 207 名前:デフォルトの名無しさん [2007/04/08(日) 15:55:23 ]
- perlでlogの基数が2の場合を求めるには何をつかうのが
ベスト?? 車輪の再発明はしない方向で・・・
- 208 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 15:56:59 ]
- >>207
底の変換公式
- 209 名前:デフォルトの名無しさん [2007/04/08(日) 16:29:00 ]
- >>208
thx
- 210 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 21:57:13 ]
- 仕事で初めてPerl使うんだが難しいな('A`)
- 211 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 23:12:16 ]
- Cやってりゃ、Cのマクロ言語だと思って書いてれば当座はしのげる。
嵌りどころはあるが、「難しい」ではなく「勝手にいじるなよ!」ってな感じ。 Cの派生言語からでも同様。 「難しい」ってのは今までまっとうな言語の経験がないからじゃないかと思う。
- 212 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 23:59:21 ]
- つーか、Cみたいな型がキッチリしたのから移行すると、
なんとなく気持ち悪いw
- 213 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 00:12:22 ]
- >>212
Cの原始的な型じゃ、実際にコードを書くときたいして助けになってくれてないだろう。 目糞鼻糞だと思うんだけど。
- 214 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 00:21:03 ]
- 俺は、あくまでもテキスト処理用と考えたらすんなり入れた。
Cだと文字列めんどくせえし、C++と比べても正規表現処理のためのコード量がぜんぜん違うからな。
- 215 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 00:22:52 ]
- >>213
そうでもない。例えばプロトタイプ宣言をちゃんと使っていれば 誤った引数を渡したりしたときなど、コンパイルエラーとして コンパイルの時点で捕捉出来るし、プロトタイプ宣言自体が 関数の使い方に関する一番簡単なドキュメントになる。
- 216 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 00:27:16 ]
- >>214
テキストをちょろっと弄くるには便利だよね。 クラスやリスト、リファレンス等の基本的な仕組みが adhoc過ぎて汚いし(←個人的見解) プログラムが大きくなればなるほど型付静的言語の有り難味が増す。 Perlで小さいプログラム以上のものを書く気にはとてもなれない。 同じ動的言語でも、Pythonあたりならまだ許容量大きいかな。
|

|