[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 08/02 03:26 / Filesize : 136 KB / Number-of Response : 348
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPerl(超初心者用)2



1 名前:nobodyさん mailto:sage [2008/03/03(月) 05:07:32 ID:???]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。

2 名前:nobodyさん mailto:sage [2008/03/03(月) 12:33:59 ID:???]
テンプレとかないの?

3 名前:nobodyさん mailto:sage [2008/03/03(月) 19:13:48 ID:???]
>>0
あ?ほんとに分かってんのか?
「はい」ってのはな「はい、わかりました」を略して「はい」なんだよ
頭だけでわかったって言わねんだぞ?学校の勉強じゃねえんだから
社会では?お?実際に出来て初めて「わかった」言うんだ
出来もしねえ奴が軽々しくはいなんて言うんじゃねえよ
お?聴こえてんのかよコラ?あ?
やる気がねえんだったら来なくていいぞ?
お前ナメてんだろコラ?
仕事中だと思って優しく口で言ってりゃ調子に乗んじゃねえぞコラ?お?
外で遭ってたら今頃カタワだぞお前?とっくに

4 名前:nobodyさん [2008/03/03(月) 22:02:10 ID:F1EuYZlD]
なんだ、この馬鹿?
ケツの三行が間抜けすぎるんだけどw

5 名前:nobodyさん mailto:sage [2008/03/07(金) 19:19:52 ID:???]
とにかく、画像とか抜きにしてテキストベースでじゃんけんゲームとか数当てゲームを作ってみれば良い。
とりあえず機能的には、繰り返し挑戦出来るとか残り回数があるとか。
○○より小さいです。 って表示させたりだ。

そうすることで 判定・繰り返し・変数を大まかに理解出来るだろう。


6 名前:nobodyさん mailto:sage [2008/03/13(木) 15:16:54 ID:???]
どのバージョンをDLしたらいいのかわかりません(WIN)


7 名前:nobodyさん [2008/03/13(木) 21:47:41 ID:vk+XUs64]
掲示板でデータを逆順に表示するリンクをつけたいのですが
reverse リスト 
をリンクとしてできるようにするにはどのようにしたらいいのでしょうか?
具体的には<a href=???>古い順</a>
といったリンクをつけたいです

8 名前:nobodyさん [2008/03/14(金) 00:10:56 ID:jE/64EXv]
$aaa=1;
if($aaa==1||$aaa==3)
これをもっと簡潔に書く方法がわかりません。

もうひとつ、
$aaaが8nなら、というのはどうやればよいのでしょうか。
調べてもわかりませんでした、おねがいしますm(_ _)m

9 名前:nobodyさん [2008/03/14(金) 01:46:19 ID:sSfBLQ5N]
>>7
リストをreverseさせるルーチンはあるのか?
だったらそこにジャンプさせる為の判別用の文字列をqueryで送ってやれば良し

>>8
これ直前で$aaaに1を代入してれば3になる可能性は皆無なんじゃないか?
$aaa==3 は必要無いだろ

if($aaa eq '8n')
これを調べても分からないんじゃヤバいぞ

10 名前:nobodyさん [2008/03/14(金) 01:49:59 ID:sSfBLQ5N]
8n って文字列かと思ったじゃねぇか
あとマルチポストは控えめに



11 名前:nobodyさん [2008/03/14(金) 11:05:45 ID:tA8hqU0W]
正規表現で>>1というようにアンカーが付くとリンクされるというのは出来たのですが、>>1のように単体でログを表示するやり方が分かりませんm(_ _)m

12 名前:nobodyさん mailto:sage [2008/03/14(金) 13:36:44 ID:???]
先生∩

sub uniq    #重複行削除
{
  my %seen;
  return (grep { ! $seen{$_}++ } @_);
}
sub uniqu    #1回のみの行
{
  my %seen;
  $seen{$_}++ for @_;
  return (grep { $seen{$_} == 1 } @_);
}

な感じの物を見つけたのですが、何が起きてるかさっぱり解りません。
そこで質問です。
以下は2行以上あるものだけの出力になるっぽいのですが、合ってるでしょうか?
sub uniqd
{
  my %seen;
  return (grep { $seen{$_}++ == 1 } @_);
}

13 名前:nobodyさん mailto:sage [2008/03/14(金) 18:49:24 ID:???]
>>11
アンカー先のURLで記事を表示できるようにする必要ががある。
例えば<a href="./bbs.cgi?No=100">100</a>とするなら、
No100の記事をファイルから取得して表示する。

>>12
foreach(@_)としてるのと同じ感じで、配列の各値が$_に一時的に格納される。
んで{}内で$seen{$_}に1を代入してるわけ。
ハッシュのキーは重複しないので++でカウントできる。おk?

この際ついでにgrepとmapについて勉強したほうがいい。
Perlの中でも強力な部類の関数だから


14 名前:nobodyさん mailto:sage [2008/03/14(金) 19:17:40 ID:???]
>>12
暇だから、、、
最後の質問は正解。

一番上の grep BLOCK の中だけ解説。
1. $seen{$_} で %seen に $_ が登録されてるかどうか調べる。
 当然最初の一回目は無いから偽。二回目以降は真。
2. ! によって1.の条件が偽の時のみ真。
3. ++ によって $_ を %seen に登録。(++によって数値と見なされ偽を0と
 解釈。で普通に1足される)。
4. 1. に戻るが、同じ物が二回目に出てくると真、なので 2. の条件に
 当てはまらない。
結果、 uniq なもののみがトラップされる。

uniqu はまあ論外。uniqd は ++ の挙動さえ理解してれば問題ない。
( $seen{$_} == 1 が解釈された後に $seen{$_} に1が足される。
ちなみに ++ $seen{$_} == 1 は uniq と同じ挙動になる。)


 

15 名前:nobodyさん mailto:sage [2008/03/14(金) 20:49:41 ID:???]
>>13
有難う御座います
BLOCK部の$seen{$_}の動きが解りました
grepとmapですね、精進しますorz
どうもperlの配列マジックが苦手で…

>>14
詳細な解説有難う御座います!
BLOCK部の動作が解って来ました
今迄一行スクリプト見ても"凄い"で終っていましたが、
何が起きているか理解できる様にしたいと思います

16 名前:nobodyさん [2008/03/15(土) 01:02:29 ID:bB5F1BkL]
>>13
# アンカー表示
    if($FORM{'comment'} =~/>>(\d{1,4})/){
$no = $1
$DATA[$no]  = $ENV{'SCRIPT_NAME'}?no=$no
print "<a href=\"htttp://url&no=$no\">>>$no</a>";
といった感じでやってみたのですがうまくできません・・・
間違いだらけだと思いますが、何かとご指摘よろしくお願いします。

17 名前:nobodyさん mailto:sage [2008/03/15(土) 01:23:16 ID:???]
>>16
スクリプト自体に「no=123 を受け取ったら No.123 の記事だけを吐く」みたいな
機能が存在しないまま、アンカーのことばかり気にしてたりしないか。

18 名前:nobodyさん mailto:sage [2008/03/15(土) 03:38:52 ID:???]
LWPやXMLといったモジュールをフリー鯖で使用するにはどうすれば

19 名前:nobodyさん [2008/03/15(土) 12:35:24 ID:q6rOizZS]
>>18
pure perlなモジュールなら、自前の鯖にインスコされてる.pmファイルをうpすれば桶じゃね?


20 名前:nobodyさん mailto:sage [2008/03/17(月) 06:27:56 ID:???]
LWPって標準モジュールでなかったっけ?
XMLはモノによるけど有名どころはXPAT?必要だからインストール無しだと厳しい



21 名前:nobodyさん [2008/03/20(木) 15:51:16 ID:+FD61Aq0]
>>17
具体的にどのようにしたら良いのでしょうか?

22 名前:nobodyさん [2008/03/24(月) 12:00:22 ID:/JLxXrtH]
どこで質問してよいのかわからなかったのですが、
使うプログラムがPerlなので、こちらでさせて頂きます。

ウィンサーバーで、お問い合わせフォームを使おうと思っています。
www.winserver.ne.jp/

使うお問い合わせフォームは、「フォームメール」です。
www.rescue.ne.jp/cgi/webform/

以下のFAQをみると、「次のコードを記述下さい」とコードが
書いてありますが、どこに入れればよいのかわかりません。
www.winserver.ne.jp/faq/index.html#70

webform.cgiに入れればよいのかと確認しても、
「サポート外だから教えられない」と言われてしまいます。
webform.cgiに入れて試してみても、
「CGI Error
 The specified CGI application misbehaved
 by not returning a complete set of HTTP headers.」
と出てしまいます。

どうしたらよいのか、ご助力頂ければ幸いです。

23 名前:nobodyさん mailto:sage [2008/03/24(月) 14:22:47 ID:???]
エラーメッセージ見てまず何が原因かと思った?
そっから考えろ

24 名前:nobodyさん mailto:sage [2008/03/24(月) 15:00:22 ID:???]
そのコードは記述する必要がないんじゃないか?

25 名前:22 mailto:sage [2008/03/24(月) 15:26:00 ID:???]
>>23,24
CGI/Perlについては、設置程度はできるのですが、
それ以上はわからないのです・・・。
ウィンサーバーはパーミッションの設定はできないし、
>print "Content-type: text/html\n\n";
とあるので、とりあえずwebform.cgiの中で、
「Content-type」ああるところを上記の物に変更しても、
同じメッセージがでるしで・・・。
行き詰まっています。

26 名前:nobodyさん mailto:sage [2008/03/24(月) 15:35:26 ID:???]
webform.cgi の中の受信先メールアドレスを自分のアドレスに書き換えて設置するだけでは?

27 名前:nobodyさん mailto:sage [2008/03/24(月) 15:58:36 ID:???]
basp21 使えってサーバみたいだから sendmail(互換) 前提のスクリプトが
動くようにするのは「設置程度なら」の人にはきついと思う。

28 名前:nobodyさん mailto:sage [2008/03/24(月) 16:35:00 ID:???]
>>22
もう諦めて、無料のレンタルフォーム使ったら?fc2とかの

29 名前:nobodyさん mailto:sage [2008/03/26(水) 21:12:26 ID:???]
Talk2chを参考にしてSOCKETを使い、スレのDATを取得したんですが、
取得したものを変数に格納する方法が分かりません

print SOCKET "GET /PC11.2ch.net/dat/10000000.dat HTTP/1.0\r\n";

↑こんな感じです

30 名前:24 [2008/03/26(水) 21:14:23 ID:YxQEkSzy]
ID忘れてました
スイマセン



31 名前:29 [2008/03/26(水) 21:15:27 ID:YxQEkSzy]
29でしたorz

32 名前:nobodyさん mailto:sage [2008/03/26(水) 21:27:35 ID:???]
既視感が。

>>29
pc11.2ch.net/test/read.cgi/tech/1199977642/737 (738が俺)
向こうで続けてもいいと思うんだけど。

33 名前:nobodyさん [2008/03/27(木) 06:27:10 ID:17ssUCBE]
>>32
低レベルすぎると思って

34 名前:nobodyさん [2008/04/03(木) 16:38:03 ID:n0FZOeJi]
会社で、サブルーチンの中でグローバル変数?($_とか)を
使わんほうがいいということで、
print &gokei('山田<>1','菊池<>2','田中<>3');

sub gokei{
  local @lines = @_; local $gokei =0;
  foreach(@lines){
    my ($name,$pt) = split(/<>/,$_);#もしくはsplit(/<>/);
    $gokei += $pt;
  }
  return $gokei;
}
ってやってたのを軒並み
foreach my $line(@lines){
〜 = split(/<>/,$line);
〜;
}
に変更されちゃったんですが、そういうものなんですか?
なんかいろんなところで不便なんですが…。

35 名前:nobodyさん mailto:sage [2008/04/03(木) 16:51:17 ID:???]
プログラムの流れとか関係ない処理とかなら$_使ってもいいと思うけどなぁ
省略したほうが読みやすいときも個人的にいっぱいあるし

他のPerlをあまり使わない人のためじゃない?

あと、my変数と違ってlocal変数は本当はグローバル変数だよ

36 名前:34 mailto:sage [2008/04/03(木) 17:34:30 ID:???]
返事ありがとうございます。
$_が出てくるときは長々と複数行引きずる事はないですから、
害はないとは思うんですが・・・。

あと、上記ならまだいいんですが、
$yamadacount = grep((split(/<>/,$_))[0] eq '山田',@lines);
みたいな使い方してる場合はもうどうした物やら…

37 名前:nobodyさん mailto:sage [2008/04/03(木) 17:34:52 ID:???]
>>34
それよりも local @lines =@_ , (略) のが変。
$pt もグローバルだし。
perl4 時代のプログラム書くなよ。

まあ、$_ に関しては 35氏と同意見だけど、コーディング規約なら仕方ない部分はある。
(が、上記の理由により、貴社のコーディング規約が時代に則ったものとは判断しがたい。)

真相は、スパゲティをみかねた上司が手を入れちゃったって所じゃねえの?

38 名前:nobodyさん mailto:sage [2008/04/03(木) 19:35:33 ID:???]
失礼、$pt はグローバルじゃなかった、orz...
あと、()の行は「(が、仮に規約があったとしても、…」って書いたつもりだった。
>>36
$yamadacount
  = grep{
   my $line = $_ ;
   ( my $name, undef ) = split /<>/, $line ;
   $name eq '山田' } @lines ;

後、それを $_ を用いて書くなら(エンコーディングの話しは抜きにして)
$yamadacount = grep /^山田<>/, @lines ;
なりなんなりもっとすっきりしたコードが書けるんじゃね?

39 名前:nobodyさん mailto:sage [2008/04/03(木) 20:07:16 ID:???]
名前も付けなくていいし。

40 名前:nobodyさん mailto:sage [2008/04/03(木) 20:17:54 ID:???]
foreachループの制御変数( デフォルトで$_ )は使った後もとの状態に戻されるよ



41 名前:34 mailto:sage [2008/04/04(金) 10:01:42 ID:???]
いろいろ返事ありがとうございます。
さきほど以下のような形でまわしてみたところ、
@aaa = ('a','b','c');@bbb = ('A','B','C');
$_ = "HELLO";
foreach(@aaa){
  foreach(@bbb){
    print;
  }
  print;
}
print;
結果は'ABCDaABCDbABCDcABCDdHELLO'となりました。
ということはやっぱり>>40さんの言うとおり少なくとも
foreachで用いる$_は別段問題ないって事ですよねえ。
$_に直接何か入れる事なんてあんまりないですし。
もうちょっといろいろ試して勉強してみます。。

42 名前:nobodyさん mailto:sage [2008/04/04(金) 12:31:56 ID:???]
2種類のファイル(それぞれ複数あります)から必要部分を抽出して
リンク付きリスト作成したいのですがよろしくお願いします
perlで使う命令の意味もわからないレベルです(できれば丸投げ希望です)

1種目:htmlから抽出したい箇所
・<title>文字列</title> #1行構成
・<title xml:lang="ja" lang="ja">
文字列</title> #2行構成
・【住所】文字列 #1行の時と備考があって2行で構成されているファイルがある
・【TEL】半角数字で電話番号-ハイフン付き(03-3333-XXXX)10桁構成もしくは携帯(090-1234-XXXX)11桁構成

2種目:TXTから抽出したい箇所
<アピール>文字列<アピール>
約200文字〜300文字が改行無しに記載されている場合と
改行ありで2行から構成されている場合があります

★抽出したファイル名の一覧は<a href c:\test\list\ファイル名 </a>でリンク付き一覧
一覧表の構成(ソートは<title>の昇順)一覧表は.htmlで保存したいです

・<title>(htmlから抽出)
・【住所】(htmlから抽出)
・【TEL】(htmlから抽出)
・リンク付きでファイルネーム(htmlから抽出)
・<アピール>(TXTから抽出)
・リンク付きでファイルネーム(TXTから抽出)

それぞれの種類で複数あるファイルから上記部分を抽出して1枚の一覧表作成が目標です
どなたかよろしくお願い致します

43 名前:nobodyさん mailto:sage [2008/04/04(金) 12:58:40 ID:???]
丸投げスレ池

44 名前:nobodyさん mailto:sage [2008/04/04(金) 20:30:27 ID:???]
>>42です
>>43さん丸投げスレってあるのですか
私にピッタシのスレだ^^;
探してみるねお邪魔しましたノシ

45 名前:nobodyさん mailto:sage [2008/04/05(土) 13:15:12 ID:???]
こんにちは>>42です
丸投げスレを探したのですが既にあるスクリプトを改造するスレでした
私は改造とはちょっと違うのでこちらで勉強させてくださいお願いします
2枚のファイルから1枚にするより1枚の2箇所からのほうがいいかと思い結合させました
質問内容が>>42から変更します申し訳ないです

1枚のhtmlから異なる箇所にある複数行を読み込んで別ファイルを作る方法を教えて下さい
-------------------------------------
<h1>今日も晴れハレ^^</h1>
<h2>お友達を募集する</h2>
<h3>はじめまして<br>
元気だけがとりえの私です<br>
よろしくね</h3>
<h4>今日のラッキーカラーは黄色</h4>
-------------------------------------
<h1>〜</h1>と<h3>〜</h3>(複数行にまたがってる)の2箇所を読み込んで
読み込んだ部分だけ別のファイルに書き込んで保存したい(ファイルは新規作成)

部分的にでもアドバイスお願いできないでしょうか?
特に<h1>〜</h1>を読み込んだ後、離れた箇所にある<h3>〜</h3>の複数行を読み込ませる部分お願いしたいです
どなたかよろしくお願いします




46 名前:nobodyさん mailto:sage [2008/04/05(土) 13:22:57 ID:???]
>>45
while (<>){
 next if !( /<h1>/i .. /<\/h3>/i ) ;
 print ;
}
h3 が二箇所あるとかだったら知らん


47 名前:nobodyさん mailto:sage [2008/04/05(土) 13:31:19 ID:???]
ああ、思いっきし間違えた。
h1 と h3 だけ抽出したいのね。
while(<>){
 next if !( /<h[13]>/i .. /<\/h[13]>/i ) ;
 print ;
}
こっちだわ

48 名前:nobodyさん mailto:sage [2008/04/05(土) 14:40:16 ID:???]
>>45
ついでに

use strict;
my $joined = join "", <>;
my @matches = $joined =~ m{(<h[13]>.*?</h[13]>)}isg;
print map "$_\n", @matches;

でなったけど

リャマ本から省略して書くと
htmlみたいなマークアップ言語には多くの落とし穴があるから単純なパターンは使わずそれ用のモジュールを入手したほうがいいらしい。


49 名前:nobodyさん mailto:sage [2008/04/05(土) 15:04:15 ID:???]
>>46->>48
お忙しい中、レスありがとうです
>>45です
もしタグ名が違う場合はどう書けばよいでしょうか?
例にあげた文ではサーチする文字列のkeyは2箇所とも<h>ですが
<h>と<span>の2種類の場合はどうすればいいですか
丸投げですねすいません恐縮です

>>48のそれ用のモジュールってあるんですか
もしよろしければこちらも教えて下さい
何度もお手数をお掛けして申し訳ないです

50 名前:nobodyさん mailto:sage [2008/04/05(土) 16:02:34 ID:???]
>>49
use strict;
my $joined = join "", <>;
my @matches = $joined =~ m{(<h\d>.*?</h\d>|<span>.*?</span>)}isg;
print map "$_\n", @matches;

モジュールは探したけどわからんかった。すまん
それと、書いといて難なんだが勉強不足で>>47さんのコードがよく分からないけど
こっちのコードだと、でかいファイルを処理するときにjoinで全部繋げてからやってるから
たぶん、>>47さんのコードより表示するのが遅くなる
キーボード打つ回数も多くなるし



51 名前:nobodyさん mailto:sage [2008/04/05(土) 16:21:20 ID:???]
お世話になります>>45です
早速教えていただいたことを取り入れようとしてみたのですが
上手くいきませんでした

2種類あるタグは変数も2つに分けたほうがいいのでしょうか?
格納の仕方を教えて下さい

my $fileに<h1>〜</h1>を格納
my $file2に<span>〜</span>(複数行にわたる)を格納

2つの変数が格納された後
$file と $file2 の2つの変数をmy @files取り入れるのはどうすればいいですか
ハッシュは%linksとしたいです

書き込む時の事も2つになればどうすればいいのか?よくわかっていません
foreach my $file (sort keys %links) { print FH qq|\t<li><a href="$file">$links{$file}</a></li>\n| }
foreach my $file2 (sort keys %links) { print FH qq|\t<li>$file2</li>\n| }
でいいのか変数格納できていないので確かめていないです
どなたかよろしくお願い致します



52 名前:nobodyさん mailto:sage [2008/04/05(土) 16:24:30 ID:???]
>>50さん
>>45です
私が書き込む寸前にレスしてくれたんですね
入れ違いになってしまい申し訳ないです
(ソースを見ながら書くと遅くなってしまいました)
>>50さんに教えていただいたようにパイプを使ってやる方法を模索してみます
ありがとうございます

53 名前:nobodyさん mailto:sage [2008/04/05(土) 16:33:54 ID:???]
>>52
パイプは使ってないよ
m{(<h\d>.*?</h\d>|<span>.*?</span>)}isg
の縦棒(|)は右側か左側どっちかにマッチするようにしてるだけ
それと、このコードは
<span><span></span></span>とか入れ子になってると<span><span></span>にマッチしちゃう
正規表現の部分のコードのはてな(?)を取り除くと<span>aaa</span>……<span>bbb</span>のようになってるとき<span>aaa</span>……<span>bbb</span>にマッチしちゃう

だから、やっぱり書いておいて難なんだけどこのコードはおすすめできない

54 名前:nobodyさん mailto:sage [2008/04/05(土) 16:37:59 ID:???]
>>50さん
>>45です
my @files = glob("$dir*.html");
globでファイル名を配列として
そのあと
foreach my $file (@files) {
としてファイルを1つづつ読んでいます
ファイルの中が1箇所の時は大丈夫だったんですが
2箇所になると難しくなって困っています(例で言うと<h1>の部分と<span>の部分です)
アドバイス頂ければ嬉しいです
よろしくお願い致します
何度もすいません

55 名前:nobodyさん mailto:sage [2008/04/05(土) 16:42:14 ID:???]
>>50
モジュールは (HT|X)ML::Parser とか。
正規表現だけではネストに出くわしたときに「落とし穴」にはまる、と。

そのコード書ける人が>>47さんのが把握できないってのが腑に落ちんのだけど
どこが謎なの?

>>45
pc11.2ch.net/test/read.cgi/php/1203935151/277 かつ
pc11.2ch.net/test/read.cgi/hp/1205922529/50 な者ですが。
↑こんなやっつけ仕事を使い回そうとせずに「きちんと丸投げ」してくださいな。
自分より腕のいい人はたくさんいるから、暇つぶしで相手してくれるかもしれないし。

でも正直、あなたは丸投げ && 仕変連発を平気でなさるので業者に依頼して欲しい。

56 名前:nobodyさん mailto:sage [2008/04/05(土) 16:46:38 ID:???]
>>53さん
詳しくありがとうございます
>>45です
右か左かを選ぶって意味ですね
そうすると最長一致って事で<h1>の下にある<span>ばかりを選ぶことになりますね
どうすればいいのか・・・
ちょっと頭冷やして再考してみます
ありがとうございました
お返事頂けてよかったです

57 名前:nobodyさん mailto:sage [2008/04/05(土) 17:10:33 ID:???]
>>55さん
お世話になります
コーディング初心者スレで場所が違うと指摘を受けて自分が質問させてもらえるところを捜していたので
あなたとお会いできるとは思わなかったです
書いてくれた人にもう一度聞きたかったんだけど
みんなに迷惑だと言っていたのであなたに聞けなかったんですよ
また教えていただけないでしょうか?
お願いします
先のレスで書いたように別々のところ2箇所から取り出さなければいけない事がわかりました
以前お話したようにファイルリストを作りたいのですが
タイトルの下にもう1行ありました
タイトルにファイル名のリンクその下に1行書かなければいけなかったんです
もしよろしければお時間のある時にでもまた教えて下さい
お願い致します

58 名前:nobodyさん mailto:sage [2008/04/05(土) 17:13:24 ID:???]
>>55
なるほど。ありがとうございます

「/<h[13]>/i .. /<\/h[13]>/i」の部分が分かりません
$_に対してマッチしようとして真か偽を返すというのは分かるんですが範囲指定演算子がどういう役割をしてるか分からないです

>>56
何もできずにすまん
やっぱり>>55さんが紹介してくれたようなモジュールを使ったほうがいいよ

59 名前:nobodyさん mailto:sage [2008/04/05(土) 17:46:59 ID:???]
>>57
うーん、仕変が激しすぎるので…仕事だったら請けてるんでしょうけど。
とりあえず
pc11.2ch.net/test/read.cgi/php/1203935151/278
という声もあったので、ちと考えてみます。

>>58
そこの .. でしたか。

説明しようとするとウソを書きそうなので
perldoc perlop や
ttp://perldoc.jp/docs/perl/5.8.8/perlop.pod
の説明やサンプルを眺めてみてください。

60 名前:nobodyさん mailto:sage [2008/04/05(土) 18:14:08 ID:???]
>>59
すみません、perldocに目を通すのを忘れていました
コンテキストで役割が違うんですね
勉強になりました
本当にありがとうございました



61 名前:nobodyさん mailto:sage [2008/04/06(日) 14:25:12 ID:???]
こんにちは>>57です
>>59さんレスありがとうございます
わかりました
この先どんな問題が出てくるのか予想も出来ないので取り合えず自分でできるように頑張ってみます
2chで聞く時に「質問者は環境とやりたいことを出来るだけ詳しく」ということなので
やりたいことを詳しく書く、そしたら解答してくれる前に新しい問題点を発見して「質問内容を変更します」って繰り返してしまいました
解答してくれる方にはご迷惑をお掛けして反省しています
perlを始めて1週間、変数について勉強しているとこです
スカラ変数を2個にして配列変数0、1とすればいいのかなって思いました
それで正解なのかはわかりませんが取り合えずタイトル以外にもう1個スカラ変数を増やして読み書きできる事を目指してみます
ありがとうございました

62 名前:nobodyさん [2008/04/06(日) 22:29:28 ID:nA18XPcw]
perlの正規表現マッチングで、
htmlを読み込んだ$contentsから
<li>〜<li>の〜部分を抜き出したいと考えがえています。

for( my $i=1; $i <= 20; $i++){
if( $contents =~ m,^<li>(.*)</li>(.*),g ){
$block = $1;
$contents = $2;
}
}

この場合、i=1の時、
最後<li>のマッチングにかかる部分しか摘出できず、
うまい正規表現がないかと色々調べては回ったのですが、
ハマってしまいました。

$contensの初めからマッチングするようなコードを
ご教授お願いします。

63 名前:47 mailto:sage [2008/04/07(月) 07:06:59 ID:???]
誰向けでもなく一応のフォロー。 
my $cnt = 0 ;
while(<>){
 print $cnt . q{ } . $_ if $cnt != 0 or m{<span>}i ;
 $cnt += m{<span>}ig ;
 $cnt -= m{</span>}ig ;
}

>>62
my @res = $contents =~ m{<li>(.*?)</li>}gs ;



64 名前:nobodyさん mailto:sage [2008/04/07(月) 14:14:44 ID:???]
>>47さん
せっかく教えてくれたんだけど
今の私には理解できていないんだ(;´д⊂ヽ
後に参考になるかもしれないのでメモして大切に保存しておくよ
活用できなくて申し訳ない
ほんとにありがと

65 名前:nobodyさん mailto:sage [2008/04/07(月) 19:50:52 ID:???]
動画ファイル(youtube.flv)のハッシュ(SHA-1)を求める方法を教えてください。


66 名前:65 mailto:sage [2008/04/07(月) 20:57:10 ID:???]
あれからずっとググってやっと見つけました。
ありがとうございました。

67 名前:nobodyさん mailto:sage [2008/04/08(火) 00:48:13 ID:???]
perl/cgi逆引き大全600って本を1ページ目から読んでるんだけど
スカラと配列とハッシュがよくわかんない
スカラは値$
配列@は複数のスカラ値$
@があればスカラ変数$はいらないのでは?
@が複数のスカラ値と記載してあるんだけど
@へ複数の変数を入力する方法は記載されていないここが知りたいのに見当たらないね
最終的にソートする予定があればキーと値%のハュシュにしておいた方がいいのかな?
ソーと機能の所読んだらキーでソートするって書いてある
ハッシュをいくつも作って複数のハッシュを並べ替えてから書き込み
ってのが最終目標にすればいいのかな

39ページ目にして出てきたqwとはなんだろか??
目次にもTips検索にもない
ネットで調べたら
qw
シングルクォートで囲んだ文字列をスペースで split するのと同様です
命令を命令で説明しているところばかりだsplitってわかんない
splitを調べたsplitを使ってデータを分割と記載されている
・・・
qwはデータを分割するための命令なのか??
なんで日本語で解説しないんだ
先日もわかんない単語があった
ネットで調べたストリングと一緒と説明されていた
ストリング??ギターの弦か??ワケワカメ

68 名前:nobodyさん mailto:sage [2008/04/08(火) 05:45:29 ID:???]
Perlの前に日本語から勉強しなおせ

69 名前:nobodyさん mailto:sage [2008/04/08(火) 06:18:13 ID:???]
お前もな

70 名前:nobodyさん mailto:sage [2008/04/08(火) 06:31:50 ID:???]
ここが一番わかりやすかった
perlのアレコレ
ttp://furyo.on-air.ne.jp/linux/perl.html

私は10日ほど前からperlに興味を持ちお勉強してたんだよね
perl解説本3冊
ググルこと100サイト
初心者用ばかり選んでいるのにわかりにくいね

「簡単」「入門」「初級」で探してみるんだけど
中身は自分の思い出すためのメモ帳だね
全然わかんない
命令の説明に命令使って「入門」はないだろw
一般社会なら後進指導の立場には向いていないね
命令を説明するのに「○○はこんな感じです」と
その下にサンプル書いているだけではわかんね

私が選んだサイトは文脈からして10年くらいは経っているのではないかと思うがわかりやすいね
ヘンテコな広告も一切なくて集中して見れたな

「perlのアレコレ」管理人さんここを見ることはないかもしれないけど
ありがとう。



71 名前:nobodyさん mailto:sage [2008/04/08(火) 07:04:21 ID:???]
>>70
…そこもたいして他と変らんよ。多分、覚えたての頃に書いたんだろ。
ヘタに丁寧に書いてある分不味い。
# 範囲演算子の第二の用法(このスレの46)なんかは、まあ省くのは
# しかたないとして。
初心者向けと言うのを加味しても、for の項の例文の無意味な代入とか、
\w の説明とか、
if($target =~ /my main editor is (\w+)/)
{
 print "bad!\n" if $1 =~ /emacs/i;
 print "good!\n" if $1 =~ /vi/i;
}
こんな例文とか。ちょっと眺めただけでも突っ込み所がある。



72 名前:nobodyさん mailto:sage [2008/04/08(火) 23:43:12 ID:???]
$+ の意味はなんですか?
$# は探してたんでやっとわかった。最後の変数ね

大全600ダメだ
ゴミ買って来た様なもんだな使えねえ
他の解説書に気になるサンプルがあった
よく読んでもサンプルに出てくる$+の意味は解説されていない
仕方ないので意味を調べて廻る
くだらない時間が過ぎていく・・・
意味わかんないので他の解説書で調べたり
ググって調べたり無駄な時間ばっかりだ
それで答えは出てこない
どうなってんだ?
hello、perl以外作ったことないよ

グーグルで$+ と$# と半角でぐぐったら1件もヒットしない
なぜなんだろか??
怪しい命令なのかね

73 名前:nobodyさん mailto:sage [2008/04/08(火) 23:57:18 ID:???]
>>72
www.google.com/search?hl=en&q=perlvar

74 名前:nobodyさん mailto:sage [2008/04/09(水) 00:44:21 ID:???]
>>73
ありがと
ラストプレーンマッチ
最後にマッチする括弧がどれかわからない場合に使うと便利
まさにこれですよ^^
ありがとう

while (<FH>) { $links{$title} = $1 and last if (m!<title>(.+?)</title>!) }
これの m! の部分はマルチオプションっていうのかな
後ろに!が付いているので複数行はダメという意味でよい?

これを複数行対応にしたいのでシングルモードに!にしてみると
while (<FH>) { $links{$title2} = $1 and last if (s!<title>(.+?)\n(.+?)</title>!) }
デバッグでエラーになるんだよね

複数行対応にするにはどうしたらいいですか?
ここが$+の使いどころかな?
わかんない・・・


75 名前: ◆EtAiUEg7/Q mailto:sage [2008/04/09(水) 01:15:30 ID:???]
あぼーん用に捨てトリ。>>55です。

>>74
だからそのコードは使い回さずに書き直してくださいと(ry

m! … スラッシュのエスケープが面倒だった。 / 以外の記号でパターンを囲むとき用。
後ろの ! … m! で始めたんだから終わりも同じ記号。
複数行 … pc11.2ch.net/test/read.cgi/tech/1186030400/638+642 で教えました。

ついでに言うと
pc11.2ch.net/test/read.cgi/tech/1186030400/673
も私です。「gawkで片づいたら、くだすれPerlのアレは全部無駄ですか」という気持ちがあのレス。
ご自分でお書きのとおり「残念」です。

あと、ここもム板の正規表現スレも自分の日記を書くとこじゃありません。

76 名前: ◆EtAiUEg7/Q mailto:sage [2008/04/09(水) 01:55:27 ID:???]
忘れてた。

while (<FH>) { # 1行ずつ読み込んでループする。$_ に入ってるのは1行だけ }

77 名前:nobodyさん mailto:sage [2008/04/09(水) 02:43:19 ID:???]
>>75さん
こんばんわお世話になります^^
正規表現の「残念でした」は先の言葉が「次はなんだろう」だったので
クイズのノリなのかと思って
perl→gawkは正解じゃないので「残念でした♪またどーぞ♪」のノリでお答えしたのですが
言葉は難しいですね
ご心配無用ですよ
私がやりたい事を理解できればスグ消えます
ただ思ったよりかなり時間はかかっていますが
パソコンには関係のない商売なのでこればっかり調べたり勉強してとかは実際無理なので。
例の教えて頂いたコードを参考にさせて頂いているのですが
コードって元コードを理解しないと書けないですね^^;

あのコードで特にわからないの所は2箇所あります
1箇所目は複数行
2箇所目は下から3行目のループ
1行で$fileを3回使っていますよね
2回目$fileはファイル名だとわかるのですがlist_fileの宣言をすれば自動的に省略して$fileでOK??
1回目はmyが初めについているのでこの行で宣言してるってことなのだろうか?
3回目はlinksになっている何故$file(同じ文字なのに)動作は違うのかがよくわかりません
タイトルの下にデータ行と備考項目と増やしたいのですが何故か最初の5バイトが無くなるんです
まあ気長にやってみますよ
オヤシミ^^


78 名前: ◆EtAiUEg7/Q mailto:sage [2008/04/09(水) 03:07:32 ID:???]
>>77
# 「こんぴーたに無関係な商売なので、用事が済めばあんたらにもプログラミングにも用はない」と
# 言ってることに気づいてるのかなあ。

・複数行のこと。
ループ書き直すのが面倒な心境なので略。

・foreach my $file (sort keys %links) { print FH qq|\t<li><a href="$file">$links{$file}</a></li>\n| } のこと。
foreach (sort keys %links) { print FH qq|\t<li><a href="$_">$links{$_}</a></li>\n| }
# 動作は同じ。

79 名前:nobodyさん mailto:sage [2008/04/09(水) 03:29:44 ID:???]
>>78
よくわかんないけど
可哀相な人だ
ヘンテコなとらえ方してるね
あなたには感謝しているけど
仕事を放ったらかしでは生きていけませんという意味なのだが・・・
とにかくありがとう
>>78に記載してくれたコードも猫に小判
私には理解できていない
自力でなんとか頑張ってみるよ
あなたはとてもお人好しでいい人だ
知識もある
短気なところ直せば世界が変わると思うよ
オヤシミ^^

80 名前:nobodyさん mailto:sage [2008/04/09(水) 10:21:11 ID:???]
>>74
m//
perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators

複数行対応
perldoc.perl.org/perlre.html#Modifiers



81 名前:nobodyさん mailto:sage [2008/04/09(水) 11:43:17 ID:???]
>>◆EtAiUEg7/Q
アンタ良い人だよ、おつかれさんw

82 名前:nobodyさん mailto:sage [2008/04/09(水) 16:26:01 ID:???]
>>80
ありがと
$str =~ s/<aaa.*?>(.+?)<aaa>/$1/s;
これまだ活用できていないんよ^^;
検索するところに("$str")や("$1")とかしてみるんだけど結果が出ない
んで書き込みのところも同じようにしてみた・・・結果は出ない
命令の前にmyを付けてmy $str =~ s/<aaa.*?>(.+?)<aaa>/$1/s;とかやってみたけど同じだ
この複数行対応はまだまだ先の課題のようだorz

%linksこれって特別な命令ですか?
どうもこれがわかっていないと検索文字がおかしくなるみたい

(m!<title>(.+?)</title>!)これの場合対応したファイルは狙い通りに処理が終わる
(m!<title(.+?)/title>!)こうすると >タイトル< という感じで両端に><がひとつづつくっついている
他の<で始まる文字列を検索してみた
自分で適当に作った<aaa>とかは思い通りに処理してるけど
<objct>をターゲットにしてみた<object(.+?)object>
なぜか先頭部分と後部は消えている

%linksを%teslinkstesという変数名に変えてみた
構文チェックはエラーなし。しかし起動しなかった^^;

%linksを調べてみた
相変わらず全集600には当然のように記載されていない
ネットだけが頼りか・・・
リンク集ばかりヒットする
ググル文字を変えて「perl 命令」「perl 索引」「perl 逆引」
期待できそうなサイトはあったけど%linksは見当たらない

みんなどこで覚えてるんだろうか学校行ってたのかな?
サンプルを参考にさせて貰う以前の問題だな
%linksは明らかに特別な変数のような希ガス

83 名前:nobodyさん mailto:sage [2008/04/09(水) 16:33:39 ID:???]
「perl 特殊変数」でぐぐるといい
もしくは
perldoc Perlvar

特殊変数以外は自分で定義してるはず。

84 名前:nobodyさん mailto:sage [2008/04/09(水) 17:22:09 ID:???]
>>82
せめて>>70のリンク先(決して推薦はせんが、ま、しかたない)の全部を
「実践」- 読むだけじゃなく実際に実行してみること - してから
質問してくれんか?

答える気にもならんよ。レスしても「理解出来ない」で終りだし。
◆EtAiUEg7/Q はよくもまあこんなのに色んなスレで付き合ったもんだ。

85 名前:nobodyさん mailto:sage [2008/04/09(水) 17:51:57 ID:???]
>>83さん
>特殊変数以外は自分で定義してるはず。
これのようだ
ありがと

>>84
スレタイ嫁としかいいようないな
質問もアドバイスもしないあなたは何者?
どっか逝けばいいよ

86 名前:nobodyさん mailto:sage [2008/04/10(木) 13:21:24 ID:???]
超初心者用ってもPerlのって事だろ
日本語の初心者やそれ以下のヒトとしての初心者はどうかと思うがな


87 名前:nobodyさん mailto:sage [2008/04/10(木) 16:30:12 ID:???]
なんか思い込み激しいね
こんなの呼ばわりやそれ以下呼ばわりするほうが
よっぽど人として恥ずかしいので覚えておくといいよ
perl書けたから何?エライの?勘違いもイイトコだ実社会ではね
私はperlに関係あることを書き込みに来ているわけで
単語もわからないので超初心者だと自覚してるよ
まぁそういうのここでは関係ないでしょ
子供の言い合いみたいなのに付き合ってられないので
以降その手の話題は私にはしないで結構ですレスもしないです
今のところ解答者は2名のようだが居なくなるかもしれないし
気まぐれな方が通るかもわかんない
気長に待ってみてもレスもなく、このスレ消滅ってって事でも
それはそれで仕方ない私がどうこう出来ることでもない
煽るだけのレスよりかはいいと思う

今日のわからないこと。
取得タイトル部分は <a href でファイル名にリンクが張られている
後にprintした結果のタイトルには<title>のタグは付いていない
その部分を真似て他の部分を取得しようと試してみた
文字列だけがprintされているタグは前後ともに切れている
わからなかい例の1行で3回fileを使っている部分が味噌だな
その部分のスグ下で print FH qq|"$file"\n|; を記載してみた
何も取得しない・・・$fileを他の形式にしても同じようだ
謎の1行はその1行で3個の$fileを育成しているのか??
文字列の取得だけの場合は応用が利くって事がわかった
タグ付きの部分の取得はまた別にしたほうが良さげ
perlでタグ付き文字列取得の謎ってことで今日はおいておこ^^



88 名前:nobodyさん mailto:sage [2008/04/10(木) 16:57:06 ID:???]
質問にはわかる範囲で答えてあげたいけど、マナーや礼儀も必要。

質問は簡潔に。
煽りはスルーで。
回答には感謝を。
おっぱいうp。

89 名前:nobodyさん mailto:sage [2008/04/10(木) 17:04:46 ID:???]
せっかく和みレスが入った所悪いが、、、
>>87
俺は47=71=84≠86。
全く進歩しない奴にレスしてもつまらん。
お前が(無いと思うが)俺を回答者としてカウントしてるなら外してくれ。
「超初心者」と自覚してるならば、誘導URLを見て、変数、配列、ハッシュ
辺りの基本用語を頭に入れるくらいの礼儀は心得ろ。
# 正規表現スレにお前が表われて7日。全く進歩してないんだもん。
# 教えて君にも程がある。
煽ってくれても構わんが、その煽りの文章を考える暇があったら(中級以上の
リファレンスを買うんではなく)初心者本でも素直に買って読めよ。

空気悪くしてすまん、他の人。しばらくレスは自粛します。


90 名前:nobodyさん mailto:sage [2008/04/10(木) 17:07:35 ID:???]
マナーや礼儀ってあなたが決めてるの?
「マナーたるものこういうものである」
「礼儀とは云々・・・」思い込み激しいと疎外しちゃうよ
なんか勘違いしてるね
ペコペコしろという上から目線
キンモ〜〜としか言いようないなw



91 名前:nobodyさん mailto:sage [2008/04/10(木) 17:23:04 ID:???]
>>90
俺、>>81=>>83=>>88
質問者=初心者ではないし、回答者=エライわけでもない。
わからないことは質問する、わかることは答える。
ただ、教えを請う立場なら礼儀は必要だと思う。
でも勘違いしてるならしょうがない、以後回答は控えます。

92 名前:nobodyさん mailto:sage [2008/04/10(木) 17:30:12 ID:???]
>>91
あ、そうなんだ
お世話になったねありがと
お疲れちゃん

93 名前:nobodyさん mailto:sage [2008/04/10(木) 17:54:14 ID:???]
情報が只でもらえると勘違いしてる質問者か。
俺も抜ける。まぁ、頑張れ。

94 名前:nobodyさん mailto:sage [2008/04/10(木) 17:57:34 ID:???]
>>93
こんなとこで客を探してる暇な業者さんなのだろか?
さよなら
公然の場所で恥ずかしげもない
その発言が面白すぎて
釣られたー

95 名前:nobodyさん mailto:sage [2008/04/10(木) 18:09:05 ID:???]
久々に香ばしいのが沸いたなあ
ま、一所懸命煽ってがんばってくれ
俺も抜けるよー

96 名前:nobodyさん mailto:sage [2008/04/10(木) 18:15:14 ID:???]
>>95
ていうかさっきからここで発言してるの
あなたと私だけじゃないでしょうか?
まぁ解答しないよってのはよくわかったのだが
それで何?くらいにしか思わないのだがw
ま、さよなら
お元気で^^

97 名前: ◆EtAiUEg7/Q mailto:sage [2008/04/10(木) 18:30:14 ID:???]
>>85
スレタイの「超初心者」ってのは…
--
use strict;
my %doubutsu; # どうぶつハッシュ
# $doubutsu{'いぬ'} = 'ポチ';
# $doubutsu{'ねこ'} = 'タマ';
# はじめはこうしてたのですが、種類を増やしやすいように工夫してみました。

my @kumiawase = ('いぬ','ポチ','ねこ','タマ','へび','ガララ');
for (my $i = 0; $i < $#kumiawase; $i++) {
  $doubutsu{$kumiawase[$i]} = $kumiawase[$i+1];
}
foreach (keys %doubutsu) {
  # 「うちの タマ の名前は へび です。」という大惨事が!ヒントください!
  print "うちの $_ の名前は $doubutsu{$_} です。\n";
}
--
…こういう「プログラミングを身につけるのが目的」の超初心者さんのこと。

「そりゃそうなる。$i++ を $i+=2 に変えてみ。つーか、ガララかよw」とか
「("いぬ\tポチ",...) 形式にして foreach と split(/\t/) 使ったらどう?」とか
気のいい回答者さんたちが相手してくれる。

結果だけが目当てなのに業者依頼もせず、気長に取り組むつもりも全くなく、
先を急ぎまくって質問を次々に投げる人は、初心者でも何でもありません。

> 仕事を放ったらかしでは生きていけません

そうですよ。
あなたのような方から「要求定義262,500円 + 制作3,150円 = 計265,650円」をいただく立場の人たちが
仕事をほったらかしてタダでできるのは、冒頭のような初心者さんのお手伝いぐらいです。

98 名前: ◆EtAiUEg7/Q mailto:sage [2008/04/10(木) 18:30:49 ID:???]
>>89
今更ですが range operator の誰向けでもないフォロー、ありがとうございます。
説明しようとして「左項が真になるとスイッチが入り…えーと…perldoc」でしたので。

「よくもまあ」ではあるんですが、仕事もヒマな時期でしたし
・いつも見てるスレに何かが来る
・自分が回答
・「理解できない。でもありがとう」と言って(一旦)去る
…これで他の方の被害が少しは減るのなら、と。
ソフ板辺りも壮大なことになってそうですが、あちらは見てないので関わってません。

教えてちゃんですらないんですよね。
結果が欲しい、手法には興味がない(と書くと「違う」と返されるだろうけど)、と。
そんなわけだから処理系自体がコロコロ変わったりもするわさ、と。
腰を据えて初心者本でお勉強という方向へは行かない人なのでしょう。

本当は自分もこんな話は書きたくないんですが、誰かが書かないと日記が延々と続くんだなあ
と思ったので、NG用に捨てトリつけた次第です。

>>96
短気を起こしていろんな人を煽っても、いいことないですよ。
そういえば、私の短気なとこを直せば世界が変わると教えてくれた人がいました。



(レス|回答)自粛の方が続出、と。まあ、仕方ないというか自然な流れでしょうな。
捨てトリももう要らなくなって、ここは素敵な日記スレに移行かな。

99 名前:nobodyさん mailto:sage [2008/04/10(木) 18:31:42 ID:???]
>>96はKY

100 名前:nobodyさん mailto:sage [2008/04/10(木) 18:35:01 ID:???]
まーくだすれだしアリっちゃアリ。








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<136KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef