トップページ⇒php
1001コメント322KB

Perlコーディング初心者質問スレ Part 57

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/25(月) 19:25:51ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0792nobodyさん2008/06/27(金) 17:41:01ID:???
連想配列
07937882008/06/27(金) 17:59:26ID:???
初めは$DATA{項目} = データ; で一つだけ残そうと考えました。
そうじゃなくて、連想配列にしてデータサイズでソートとかあるんでしょうか?
分かりません(><)
0794nobodyさん2008/06/27(金) 18:21:02ID:???
連想配列にしてデータサイズでソートすりゃいいだろ
0795nobodyさん2008/06/27(金) 18:27:40ID:???
書かないってことはまだなにも書けない状態ってこと?
まずはopenでファイル開けるの解かる?
07967882008/06/27(金) 18:50:29ID:???
>>795
連想配列に入れてみました。

my %DATA;
open R, "koumoku.txt" or die;
while (<R>) {
chomp;
my ($key, $value) = split(/\t/);
$DATA{$key} = $value;
}
close R;

データサイズでソートは後でググってみます。
項目ごとに最短データだけ残す方法は今の時点で想像できません。。
0797nobodyさん2008/06/27(金) 19:15:25ID:???
そこまで出来てるならあとは場合わけでしょ

if (exists $DATA{$key}){
length($DATA{$key}) > length($value) and $DATA{$key}= $value;
} else {
$DATA{$key}= $value;
}
0798nobodyさん2008/06/27(金) 19:47:44ID:???
>>797
食事してて遅れました。
そのままコピペしたのですが望むとおりです完璧です。
項目ごとに一番小さいデータが残る。凄い考え付かない。
本当にありがとうございました。
0799nobodyさん2008/06/28(土) 13:36:15ID:???
◆◆◆◆◆◆◆◆◆毎日新聞社による日本人への誹謗中傷◆◆◆◆◆◆◆◆◆

・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する

※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです

◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
 http://www9.atwiki.jp/mainichiwaiwai/
◆毎日新聞問題の情報集積wiki
 http://www8.atwiki.jp/mainichi-matome/

つまり日本人なら
http://www.vipper.net/vip552788.jpg
0800nobodyさん2008/06/29(日) 21:21:31ID:ib7dTQ8m
シンタックスハイライト用のモジュールでオススメってありますか?
Syntax::Highlight::Engine::Kateはちょっと好みじゃなかったのと、
Text::Highlightは今のところ使い方が分からないの。
0801nobodyさん2008/06/29(日) 21:37:01ID:???
Text::VimColor
0802nobodyさん2008/06/29(日) 23:14:30ID:???
ありがとう。日本語が上手くいかず。
0803nobodyさん2008/07/03(木) 04:34:06ID:N0WlacZt
日本人がイスラム過激派に狙われる可能性もあります

220 名前: 名無し三等兵 [sage] 投稿日: 2008/06/30(月) 00:35:59 ID:???
イスラムや胡錦濤の記事にもhentai入ってて
ニュー速の連中がアルジャジーラとかにメールしようとして
鬼女が止めに入ったり、なかなかわかってるなぁと。

262 名前: 名無し三等兵 [sage] 投稿日: 2008/06/30(月) 00:43:47 ID:???
つーか原理主義者は日本に入り込んでいるし組織もあるから
原理主義者によって白昼堂々人通りのある場所で首を掻き切られて
助教授が殺されて犯人が何も特定できていないわけで・・・

297 名前: 名無し三等兵 [sage] 投稿日: 2008/06/30(月) 00:51:28 ID:???
>>272
いや・・・それが・・・
タレコミより前に韓国でコーランが焼かれたと報道されてて
アルジャジーラTVより韓国でコーランを燃やす映像が放映され、アラブ諸国でさまざまの反応が出ている。
・その映像を見た老人がショック死(サウジアラビア)
・その映像を見た青年ら十数人が韓国大使館に投石(シリア)

★祭り★ 「日本の母は息子の性処理係」毎日新聞が捏造記事41
http://human7.2ch.net/test/read.cgi/ms/1215003832/
★祭り★ 【毎日・変態報道】 毎日新聞、「2ちゃんねる」を名指し…「女性社員中傷書きこみで法的措置」で★26
http://mamono.2ch.net/test/read.cgi/newsplus/1215016627/
【記者】毎日新聞の英語版記事で日本を侮辱【豪人】
http://academy6.2ch.net/test/read.cgi/english/1213971760/
【Daily】毎日新聞英語版がひどすぎる 3【WaiWai】
http://society6.2ch.net/test/read.cgi/mass/1214603376/
【毎日新聞】 iチャネル解約スレ 【変態報道】
http://hobby11.2ch.net/test/read.cgi/keitai/1214802475/
0804nobodyさん2008/07/08(火) 20:37:38ID:???
文字コードを強制的にEUCにする方法が判りません。

use CGI;
use Encode;
$cgi = CGI->new;
print "Content-type: text/html; charset=EUC-JP\n\n";
print encode('euc-jp', $cgi->param('test'));

とやって、それぞれUTF8,SJIS,EUCで'test'に入力しても、EUCコードでの文字列が出てこず、化けてしまいます。
どうやって強制的にEUCに変換するのか教えてください。
0805nobodyさん2008/07/08(火) 20:38:36ID:???
あ、忘れてました。
perlのバージョンは5.8.8です。
0806nobodyさん2008/07/08(火) 20:44:53ID:???
jcode.pm や Unicode.pm をインストール出来ない環境なので、
それも抜きだと jcode.pl で convert するくらいしか他に方法が無い?
0807nobodyさん2008/07/08(火) 21:32:37ID:???
>>804
コードがそれだけなら入ってくる文字列をdecodeしなきゃだめだよ
0808nobodyさん2008/07/08(火) 23:49:39ID:???
>>804
encode()の第2引数は、デコード済みの文字列でないとだめでしょ。
encode(ocode, decode(icode, str))
ocode…出力する文字コード
icode…strの文字コード
str…入力する文字列
0809nobodyさん2008/07/12(土) 09:51:37ID:???
Spreadsheet::WriteExcelって縦方向のセルの結合って出来ないのか?


$format = $workbook->add_format();
$format->set_merge();

$worksheet->write_unicode(0, 0, utf8( Jcode->new('ぬるぽ')->utf8 )->utf16, $format);
$worksheet->write_blank(0, $_, $format) for 0..13;
っていう横方向のセルの結合は出来るんだが

$worksheet->write_unicode(0, 0, utf8( Jcode->new('ぬるぽ')->utf8 )->utf16, $format);
$worksheet->write_blank($_, 0, $format) for 0..13;
これだと結合できない。
仕様なのか俺がアフォなのか誰か教えれ!
08108092008/07/12(土) 11:19:24ID:???
事故レス
何となくできたわ。
お騒がせしますた。
0811nobodyさん2008/07/12(土) 18:05:43ID:???
>>810
お騒がせしたと思うのなら、どうやったらできたのか書くように。
同じ悩みで検索でたどりついた人はまた同じ質問をするでしょ?
0812nobodyさん2008/07/12(土) 18:28:41ID:???
>>811
もうちょっと優しく書いて欲しいな。
0813nobodyさん2008/07/13(日) 09:44:35ID:SNV4Eg13
Perlでクローラーを作りたくて、いろいろ勉強しているのですが、
下記3行目のコードの意味がどうしてもわかりません。。
my @extract_links; #パーズ中に抽出されたURL
my $base = $response->base;
@extract_links = map { $_ = url( $_, $base )->abs; } @extract_links;

Perl初心者にもわかるようなコードに書き直すことはできますか?
何を勉強したら、このようなプロっぽいコードが書けるようになるのかも知りたいです。。
0814nobodyさん2008/07/13(日) 17:38:13ID:???
mapの説明を読みましょう。
$ perldoc -f map

@extract_links = map { $_ = url( $_, $base )->abs; } @extract_links;
これはフィルタです。
@extract_links = <--(フィルタ)-- @extract_links;
右側の @extract_linksにフィルタをかけて、自分自身に代入しています。

右側から入ってきた @extract_linksの各要素は、$_に入れられます。
その各要素に対して、
url($_, $base)->abs;
という処理をして(多分相対パスから絶対パスにしているのでしょう)、
その結果を $_ (自身) に入れています。
$_ = url($_, $base)->abs;

結果として@extract_linksの中身が全部絶対パスになって返ります。
0815nobodyさん2008/07/13(日) 23:01:57ID:???
>>813
プロっぽいどころか、「どこの素人が書いた?」って言われるコード
だと思うが、、、何で無意味な代入をするかねぇ

3行目の代りになるコード。初心者向け。
foreach my $cont ( @extract_links ){ $cont = url( $cont, $base )->abs ; }
# $_ = url( $_, $base )->abs for @extract_links ;
0816nobodyさん2008/07/13(日) 23:03:33ID:???
s/無意味な代入/無意味な$_への代入/
map自体を否定してるんじゃないです。
0817nobodyさん2008/07/13(日) 23:10:10ID:???
>>816
mapブロック内で$_を変更したら、配列にも影響する。
だから、戻り値で置き換えるのは2度手間ってこと。
mapかforeachかは宗教論争だから好きなの使っとけ。
>>815のが見やすいことが多いけどな。
0818nobodyさん2008/07/13(日) 23:18:22ID:???
>>817
フォロー thx.
815のままだとmapへの攻撃とも取られかねんかったから、816を書いたんだw
0819nobodyさん2008/07/14(月) 00:04:04ID:???
>mapかforeachかは宗教論争だから

馬鹿すぎる
0820nobodyさん2008/07/14(月) 01:16:23ID:???
あたまおかしいひとばかりですね
0821nobodyさん2008/07/14(月) 14:17:03ID:???
TMTOWTDI
0822nobodyさん2008/07/14(月) 14:43:20ID:???
>>819
ん?
0823nobodyさん2008/07/14(月) 15:02:41ID:???
「use constant HOGE => "abc";」のとき、それを使って、
「print "match!\n"if(/^main::HOGE/);」とかしたいんですが、
うまい方法はありませんか?
「my $a=main::HOGE;print "match!\n"if(/^$a/);」はできるんですけど。
正規表現内で、use constant で定義した定数を使いたいのです。
0824nobodyさん2008/07/14(月) 15:29:04ID:???
print "match!\n" if(/^@{[HOGE]}/);
print "match!\n" if(/^${\HOGE}/);
08258132008/07/14(月) 22:29:29ID:ojoqjs1p
皆さん、親切な回答ありがとうございました。

Perl初心者がいきなりクローラーを作ろうというのが、
ちょっと無謀だったかも。。

基礎から勉強します。(・з・)
0826nobodyさん2008/07/15(火) 00:18:02ID:???
>>825
Plagger で HTTP::Async とかつかって遊ぶといいよ
0827nobodyさん2008/07/16(水) 23:13:16ID:???
質問

splitで、&を区切り文字として指定した場合、
参考書だと、
&が消える、っていう説明と、
&が残る、って説明が混在しているんだが、
どっちが正しいの?
0828nobodyさん2008/07/16(水) 23:13:48ID:???
それと無料のIDEもおしえて
0829nobodyさん2008/07/16(水) 23:46:12ID:???
>>827
なぜ試さない

>>828
なぜ検索しない
0830nobodyさん2008/07/16(水) 23:54:09ID:???
>>829
オレらの業界って気軽に試せないのね。

ダムがあったとして
「ここにもし10cmくらいの穴を開けたらどうなるだろう?」

みたいなところなんで、

「いきなり実行する」

っていうのはキチガイ扱いされてクビになるのね。
0831nobodyさん2008/07/17(木) 00:14:28ID:???
>>829が言ってるのはむしろ試作の方だがな。
0832nobodyさん2008/07/17(木) 00:39:50ID:???
自分で試したらわかった

&は消える。

参考書のほうが間違ってたわ。
0833nobodyさん2008/07/17(木) 00:55:40ID:???
敢えて残るってわざわざ記述されてるってことはミスプリントなのか?
出版元に問い合わせてみたら?
0834nobodyさん2008/07/17(木) 02:41:15ID:???
例題が2つあって、
1は消えてるんだけど、
2は残ってるの。
余計混乱するわ。
0835nobodyさん2008/07/17(木) 03:23:04ID:???
そらむしろ必要な情報だろw
0836nobodyさん2008/07/17(木) 05:31:29ID:???
>>832
「普通は」消えるが正解。正規表現内で()でトラップすりゃ残る。
$str = 'a&b&c&d&' ;
split /&/, $str ; # <= 消える。
split /(&)/, $str ; # <= 残る。
split /(?:&)/, $str ; # <= 消える。
なんで態々解説したかと言うと、区切り文字「列」を二つ使う場合に(|)使ってトラップさせて
「消えないんすけど」って質問された事があったから。
split /(&|:)/, 'a&b&c&d:e:f:g' ; # 本来は区切り文字列ね。
0837nobodyさん2008/07/17(木) 05:57:35ID:???
なんかむずかしいことはよくわかんないけど、
こういうつまんないことってフレームワークに全部お任せすればよくね。
0838nobodyさん2008/07/17(木) 06:17:36ID:???
フレームワーク使ったこと無い。
0839nobodyさん2008/07/17(木) 06:48:41ID:???
鼠駆除すんのにナパーム弾を使うのか
0840nobodyさん2008/07/17(木) 09:33:43ID:???
>>839
ナパーム弾どころか地球破壊爆弾を使おうとした例もありますが
08418092008/07/17(木) 09:39:10ID:???
>>811
すまんこすまんこ。さらに遅レスすまんこ

Spreadsheet::WriteExcelでセルの結合に悩んでるヤシは
ttp://www.koders.com/perl/fid09386E1C3E183B96174D224B87445AE647A32B23.aspx
ここを見れ!
例文が載ってたわ。
0842nobodyさん2008/07/17(木) 19:35:57ID:???
>>836
消える場合と消えない場合が
あるってことか。
0843nobodyさん2008/07/17(木) 22:27:51ID:???
gはグローバルの略だとか、
そういうのの、一覧表がのってる
ページをおしえて
0844nobodyさん2008/07/17(木) 22:29:43ID:???
あと無料のIDEも教えてね
0845nobodyさん2008/07/18(金) 01:28:58ID:???
知っているがおまえの態度が(ry
0846nobodyさん2008/07/18(金) 01:41:55ID:???
>>843
作ってダーリン

>>844
好きに調べれダーリン
0847nobodyさん2008/07/18(金) 09:49:50ID:???
もってけ!IDE
0848nobodyさん2008/07/19(土) 10:24:55ID:???
トリップを生成する仕組みの以下の部分の意味が分かりません。
教えてください。

$salt =~ s/[^\.-z]/\./go;
0849nobodyさん2008/07/19(土) 10:33:23ID:???
5本の指が入る Perl hacker に聞けばいいだろ。
0850nobodyさん2008/07/19(土) 18:10:50ID:???
>>848
s///
[A-Z]
と分けて考えないとダメ。
0851nobodyさん2008/07/19(土) 18:39:57ID:???
>>848
$salt =~ # Apply following pattern to $salt
s/ # Start substitution expression
[ # Start difine charactor class
^ # This is negated class
\.-z # Range: "." .. "z" by charactor-code
] # End define charactor class
/ # End pattern and start substitution string
\. # Means "." (NOTE: "\" is meaningless here)
/gox; # Modifiers
# g: global matching
# o: compile the pattern only once
## (x: extended)

>>849
> 5本の指が入る # So loose, and so non-useful for hacking.
0852nobodyさん2008/07/19(土) 20:43:57ID:???
>>850-851

すみません、噛み砕いて教えてください。
0853nobodyさん2008/07/19(土) 20:44:03ID:???
>>851
なにそれ
なんかのソフトでそうやって
自動で解説が出るの?
0854nobodyさん2008/07/19(土) 20:59:09ID:???
>>853
> なんかのソフトでそうやって
> 自動で解説が出るの?

自動で解説できるモジュールあったら便利そうだね!
0855nobodyさん2008/07/19(土) 21:46:02ID:???
>>852
>>851はかみ砕いて解説してあるよ。部品ごとにいちいち説明してあるじゃん。
(教えてくんにまともに教えるの癪だからわざわざ英語にしたんだと思うけど)
辞書引くくらいすれば?
perl 置換 パターンマッチ 正規表現 s演算子 でぐぐればいくらでも解説があるよ。
0856nobodyさん2008/07/19(土) 21:50:14ID:???
じゃ、このスレいらないやん
0857nobodyさん2008/07/19(土) 22:20:45ID:QBlnT4Mv

重い処理をする時に、ブラウザを待たせる必要がないので、
セッションを閉じようと思い、どうすればよいのかwebであさっていたら、
標準出力を閉じるとよいみたいな感じで書いていたので試してみましたが、
処理が待たされます。なぜでしょう?


print "a";
close(STDOUT);
sleep 20;

20秒またされたのち、ブラウザが開放されます。
0858nobodyさん2008/07/19(土) 22:30:40ID:???
どこに書いてあったの?
0859nobodyさん2008/07/19(土) 22:33:59ID:QBlnT4Mv
http://www.tohoho-web.com/lng/199910/99100140.htm
こことか
0860nobodyさん2008/07/19(土) 22:39:51ID:???
そこ見た感じだと$|=1やってforkしたときに子プロセス側で先にcloseして
処理を始めるようだけど、そうしてもダメだったの?
0861nobodyさん2008/07/19(土) 22:46:03ID:QBlnT4Mv
バッファはやった。
子プロはまだ作ってない。

そこのリンクの
http://www.tohoho-web.com/lng/199909/99090185.htm
環境によるようだね。

こうゆう時の処理はこうだよみたいに書いてあったんで(昔どっかのページで見た)、
普通に出来る処理と思ってた・・・。
0862nobodyさん2008/07/19(土) 23:04:25ID:???
自己レス

普通のperlではちゃんと、動作しました。
mod_perlでの環境では動作しないようです。

なぜ、mod_perlでは動作しないのかは、よくわかりません。
誰か教えて下され・・・。
0863nobodyさん2008/07/19(土) 23:48:52ID:???
>>862
coderepos かどこかにソース晒せば、5本の指が入る Perl hacker に教えてもらえるよ。
0864nobodyさん2008/07/20(日) 02:16:15ID:???
>>862
くだすれのほうにもちょっと前に書いたけど、
$|=1にしても、たしか256byteまでは自動でキャッシュが効くとか昔調べた時にどこかに書いてあった。
(昔自分がやったのは、数秒sleep毎に文字列を書き出して、一定時間でexitする。って処理だったけど・・。)

なので自分は、Content-Typeヘッダ出力の直後に、print " " x 256; を書くようにしたらそれで出来た。
あんまりスマートなやり方ではないけど、これ以外に知らない。
(向こうでは、Apacheがキャッシュするって書いたけど、実は自分の思い違いだったかも知れん。
ブラウザとか鯖環境によってはバッファされるbyte数が違うとか言うのも聞いたことがあるのを思い出した。
詳しく調べてないんでよく分からんし、どこに書いてあったかも覚えてない。)

mod_perlについては、printもcloseもexitも全て内部用の関数にoverrideされてるはず。
それに実行されるのは、対象のスクリプトのみではなく、またmodperl::RegistryにしてもPerl Handlreにしても、
実行してるのはApacheプロセスそのものなので、IO周りやsignal周りはApacheの内部実装によると思われる。
それでも上の方法で、ウチの環境では、上のcgiで実行したのと同じ処理ができた。
(すまんが、自分もApacheとかmod_perlの内装知ってるわけではないので、詳しくはわかりません。)
0865nobodyさん2008/07/20(日) 03:26:59ID:???
孫プロセスでやればいいだけの話だと思うが
0866nobodyさん2008/07/20(日) 03:56:52ID:???
gearman とか使えばいいんじゃね。
0867nobodyさん2008/07/20(日) 06:30:33ID:???
>>855
ググってもよく分からんのですよ。

.からzまで以外の文字があったら.(そのままって意味かな?)に変換する。
gオプションだから1回マッチしてもそのあとも処理を行う。
oオプションだからパターンを1回しかコンパイルしない。

だと思うのですが、目的が分からないのです。
あと、oオプションの意味もよく分からないし。
0868nobodyさん2008/07/20(日) 09:51:06ID:???
oオプションを>>848のケースで使うのは無意味だからそりゃ意味わからなくて当然

.からz以外の文字は、
./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
以外の文字

gオプションが無いと最初の1回マッチするだけで、有るとあるだけマッチを繰り返す
0869nobodyさん2008/07/20(日) 14:38:39ID:???
>>867
crypt(3)の標準的な実装では、第二引数(salt)は[a-zA-Z0-9./]からなる二文字です。ここではそれを得るための変換処理の一部過程として置換式を用いています。man crypt も参照。
ここから先は Perl の話題ではなくなりますが、知っていて損もないのでぼちぼちがんばってください。
08708692008/07/20(日) 14:58:22ID:???
>>867
> あと、oオプションの意味もよく分からないし。

>>868 が一行目で書いているけれど補足。
/o 修飾子は実行時に変化する部分が含まれている正規表現の再コンパイルを抑制します。
例えばパターンに変数が含まれているケースで /o 付きの式が複数回実行されてもパターンは再評価されません。
初回評価時の値のままマッチングが行われます。パターンが変化しない旨を明示することで実行時性能の向上を図る機能です。

今回のケースではパターンは [^\.-z] ですから変化する部分はありません。>>868 の言う「無意味」というのはそういうことです。
perldoc perlretut 及び perldoc perlop の Regexp Quote-Like Operators の項も見てみてください。
0871nobodyさん2008/07/20(日) 16:50:44ID:???
>>869-870

回答ありがとうございます。
しかしよく分かりません。。。

[a-zA-Z0-9./]以外にマッチ=ひらがなとか漢字とか?にマッチしたら、
その文字を、そのまま使う???
そうなると、saltが許されるのは[a-zA-Z0-9./]だけなので?????

ん??????????????
俺、アホなのかな?
0872nobodyさん2008/07/20(日) 19:57:43ID:???
質問

パーミッションで、
グループを6とかにすると、
もしそのサーバーが、シェルを使える
サーバーだった場合、
その同じサーバーを使ってる人が
シェルで勝手に入ってきてデータ-を
書き換えられたり、消されたりするので、
グループは0にしなければいけない、と
さっき読んだ参考書に書いてあるのですが、
それであってますか?
08738692008/07/20(日) 20:39:57ID:???
>>871
s/正規表現のぱたーん/左のパターンにマッチした部分を置き換える文字列/

[^\.-z] は一文字幅で /g 修飾子付きだから、マッチする一文字を見つけるたびに、置換文字列で置き換えられます。
置き換える文字列はこの場合 "." だから……。
要は s/// の右半分では "." はメタキャラクタじゃない、つまり何ら特別な意味がないということです。
がんばって気付け。
869 は自覚的なアホを応援しています。
0874nobodyさん2008/07/20(日) 20:49:41ID:???
>872
ちょっとは参考書を信用してもいいんでね?w
0875nobodyさん2008/07/20(日) 23:09:24ID:???
質問

EUCだと、タイトルに日本語使えない、
って参考書に書いてあるんだけど、そうなの?
0876nobodyさん2008/07/20(日) 23:20:40ID:???
タイトルとは何のタイトルですか?
HTMLのTITLEタグのことですか?
でしたらヘッダで適切な文字コードを指定すれば使えますよ
0877nobodyさん2008/07/21(月) 00:13:22ID:???
巨大配列を属性にセットしたオブジェクトを繰り返し生成すると、
なんだかブラウザの動きがもっさりしてくるんですが、
これはPerlが無駄にメモリを浪費してるからですか?
0878nobodyさん2008/07/21(月) 02:01:53ID:???
そうです。はい次。
0879nobodyさん2008/07/21(月) 05:10:19ID:???
>>873
あ、意味分かった。
[a-zA-Z0-9./]以外にマッチしたらピリオドに置き換えろ
って意味ですね?
0880nobodyさん2008/07/21(月) 10:10:27ID:???
definitely
0881nobodyさん2008/07/21(月) 17:58:17ID:???
頭悪い奴と初心者は解答してくれなくていいよ。
0882nobodyさん2008/07/21(月) 18:15:23ID:???
上級者のレスは只じゃないよ
0883nobodyさん2008/07/21(月) 18:38:24ID:???
ネットでの質疑応答にボランティア参加するかしないかの違いは、単に暇か忙しいかの違いであって、上級者か初心者かの違いではない。
0884nobodyさん2008/07/21(月) 20:58:45ID:???
>>879
大筋で合ってるけど微妙に違います。
元のパターンは [^.-z] なので、[a-zA-Z0-9./] 以外にもマッチ。
下記のワンライナーで Let's 実験。

perl -ple "s/[^.-z]/./g"
08858792008/07/22(火) 07:08:38ID:???
>>884
自分で書いた
[a-zA-Z0-9./]以外にマッチしたらピリオドに置き換えろ
と
[a-zA-Z0-9./] 以外にもマッチ
の違いが分かりません。???
0886nobodyさん2008/07/22(火) 11:13:09ID:???
perlで外部wwwサーバの生死が知りたいです。
LWP::UserAgentを使って出来そうなのですが、
どうコーディングしていいか分かりません。
よろしくお願いします。

やりたいことは、タイムアウト値を指定して
あるURLにアクセスした場合、
httpステータスコードが404を返しても
それは生きていると判定したいのです。
08878862008/07/22(火) 11:24:14ID:???
自己解決しました。
こんな感じで出来ました。

use LWP::UserAgent;

$url = "http://www.yahoo.co.jp/";

$ua = LWP::UserAgent->new;
$ua->timeout(10);
$req = HTTP::Request->new(GET => $url);
$res = $ua->request($req);
print $res->status_line;
0888nobodyさん2008/07/22(火) 13:31:20ID:???
telnet 相手先 80でいいじゃないか。
わざわざそんなことせんでも。。。
0889nobodyさん2008/07/22(火) 14:50:40ID:???
HEAD 使ってあげればいいのに・・・
0890nobodyさん2008/07/22(火) 15:02:22ID:???
仕様が不十分な以上はどれが良いとも決められないな
0891nobodyさん2008/07/22(火) 18:38:20ID:???
CGIのための実践入門Perl
技術評論社
アーク・シンク・タンク 三島 俊司

↑ちょっとわかりやすいね。
意味不明な記述も半分くらいあるけど。
0892nobodyさん2008/07/22(火) 18:40:05ID:???
質問

ifの代わりとしての?は使わない方がいいね。

だって?は正規表現とかでも使うから、
?があると、

「正規表現としての?かな?
それとも、ifの代わりの?かな?」

って考えないといけない。それが時間の無駄なので
?は使わずにifを使うようにしましょう。
■ このスレッドは過去ログ倉庫に格納されています