くだすれPerl(超初心者用)2
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2008/03/03(月) 05:07:32ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。
0002nobodyさん
2008/03/03(月) 12:33:59ID:???0003nobodyさん
2008/03/03(月) 19:13:48ID:???あ?ほんとに分かってんのか?
「はい」ってのはな「はい、わかりました」を略して「はい」なんだよ
頭だけでわかったって言わねんだぞ?学校の勉強じゃねえんだから
社会では?お?実際に出来て初めて「わかった」言うんだ
出来もしねえ奴が軽々しくはいなんて言うんじゃねえよ
お?聴こえてんのかよコラ?あ?
やる気がねえんだったら来なくていいぞ?
お前ナメてんだろコラ?
仕事中だと思って優しく口で言ってりゃ調子に乗んじゃねえぞコラ?お?
外で遭ってたら今頃カタワだぞお前?とっくに
0004nobodyさん
2008/03/03(月) 22:02:10ID:F1EuYZlDケツの三行が間抜けすぎるんだけどw
0005nobodyさん
2008/03/07(金) 19:19:52ID:???とりあえず機能的には、繰り返し挑戦出来るとか残り回数があるとか。
○○より小さいです。 って表示させたりだ。
そうすることで 判定・繰り返し・変数を大まかに理解出来るだろう。
0006nobodyさん
2008/03/13(木) 15:16:54ID:???0007nobodyさん
2008/03/13(木) 21:47:41ID:vk+XUs64reverse リスト
をリンクとしてできるようにするにはどのようにしたらいいのでしょうか?
具体的には<a href=???>古い順</a>
といったリンクをつけたいです
0008nobodyさん
2008/03/14(金) 00:10:56ID:jE/64EXvif($aaa==1||$aaa==3)
これをもっと簡潔に書く方法がわかりません。
もうひとつ、
$aaaが8nなら、というのはどうやればよいのでしょうか。
調べてもわかりませんでした、おねがいしますm(_ _)m
0009nobodyさん
2008/03/14(金) 01:46:19ID:sSfBLQ5Nリストをreverseさせるルーチンはあるのか?
だったらそこにジャンプさせる為の判別用の文字列をqueryで送ってやれば良し
>>8
これ直前で$aaaに1を代入してれば3になる可能性は皆無なんじゃないか?
$aaa==3 は必要無いだろ
if($aaa eq '8n')
これを調べても分からないんじゃヤバいぞ
0010nobodyさん
2008/03/14(金) 01:49:59ID:sSfBLQ5Nあとマルチポストは控えめに
0011nobodyさん
2008/03/14(金) 11:05:45ID:tA8hqU0W0012nobodyさん
2008/03/14(金) 13:36:44ID:???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 } @_);
}
0013nobodyさん
2008/03/14(金) 18:49:24ID:???アンカー先のURLで記事を表示できるようにする必要ががある。
例えば<a href="./bbs.cgi?No=100">100</a>とするなら、
No100の記事をファイルから取得して表示する。
>>12
foreach(@_)としてるのと同じ感じで、配列の各値が$_に一時的に格納される。
んで{}内で$seen{$_}に1を代入してるわけ。
ハッシュのキーは重複しないので++でカウントできる。おk?
この際ついでにgrepとmapについて勉強したほうがいい。
Perlの中でも強力な部類の関数だから
0014nobodyさん
2008/03/14(金) 19:17:40ID:???暇だから、、、
最後の質問は正解。
一番上の grep BLOCK の中だけ解説。
1. $seen{$_} で %seen に $_ が登録されてるかどうか調べる。
当然最初の一回目は無いから偽。二回目以降は真。
2. ! によって1.の条件が偽の時のみ真。
3. ++ によって $_ を %seen に登録。(++によって数値と見なされ偽を0と
解釈。で普通に1足される)。
4. 1. に戻るが、同じ物が二回目に出てくると真、なので 2. の条件に
当てはまらない。
結果、 uniq なもののみがトラップされる。
uniqu はまあ論外。uniqd は ++ の挙動さえ理解してれば問題ない。
( $seen{$_} == 1 が解釈された後に $seen{$_} に1が足される。
ちなみに ++ $seen{$_} == 1 は uniq と同じ挙動になる。)
0015nobodyさん
2008/03/14(金) 20:49:41ID:???有難う御座います
BLOCK部の$seen{$_}の動きが解りました
grepとmapですね、精進しますorz
どうもperlの配列マジックが苦手で…
>>14
詳細な解説有難う御座います!
BLOCK部の動作が解って来ました
今迄一行スクリプト見ても"凄い"で終っていましたが、
何が起きているか理解できる様にしたいと思います
0016nobodyさん
2008/03/15(土) 01:02:29ID:bB5F1BkL# アンカー表示
if($FORM{'comment'} =~/>>(\d{1,4})/){
$no = $1
$DATA[$no] = $ENV{'SCRIPT_NAME'}?no=$no
print "<a href=\"htttp://url&no=$no\">>>$no</a>";
といった感じでやってみたのですがうまくできません・・・
間違いだらけだと思いますが、何かとご指摘よろしくお願いします。
0017nobodyさん
2008/03/15(土) 01:23:16ID:???スクリプト自体に「no=123 を受け取ったら No.123 の記事だけを吐く」みたいな
機能が存在しないまま、アンカーのことばかり気にしてたりしないか。
0018nobodyさん
2008/03/15(土) 03:38:52ID:???0019nobodyさん
2008/03/15(土) 12:35:24ID:q6rOizZSpure perlなモジュールなら、自前の鯖にインスコされてる.pmファイルをうpすれば桶じゃね?
0020nobodyさん
2008/03/17(月) 06:27:56ID:???XMLはモノによるけど有名どころはXPAT?必要だからインストール無しだと厳しい
0021nobodyさん
2008/03/20(木) 15:51:16ID:+FD61Aq0具体的にどのようにしたら良いのでしょうか?
0022nobodyさん
2008/03/24(月) 12:00:22ID:/JLxXrtH使うプログラムがPerlなので、こちらでさせて頂きます。
ウィンサーバーで、お問い合わせフォームを使おうと思っています。
http://www.winserver.ne.jp/
使うお問い合わせフォームは、「フォームメール」です。
http://www.rescue.ne.jp/cgi/webform/
以下のFAQをみると、「次のコードを記述下さい」とコードが
書いてありますが、どこに入れればよいのかわかりません。
http://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.」
と出てしまいます。
どうしたらよいのか、ご助力頂ければ幸いです。
0023nobodyさん
2008/03/24(月) 14:22:47ID:???そっから考えろ
0024nobodyさん
2008/03/24(月) 15:00:22ID:???002522
2008/03/24(月) 15:26:00ID:???CGI/Perlについては、設置程度はできるのですが、
それ以上はわからないのです・・・。
ウィンサーバーはパーミッションの設定はできないし、
>print "Content-type: text/html\n\n";
とあるので、とりあえずwebform.cgiの中で、
「Content-type」ああるところを上記の物に変更しても、
同じメッセージがでるしで・・・。
行き詰まっています。
0026nobodyさん
2008/03/24(月) 15:35:26ID:???0027nobodyさん
2008/03/24(月) 15:58:36ID:???動くようにするのは「設置程度なら」の人にはきついと思う。
0029nobodyさん
2008/03/26(水) 21:12:26ID:???取得したものを変数に格納する方法が分かりません
print SOCKET "GET /PC11.2ch.net/dat/10000000.dat HTTP/1.0\r\n";
↑こんな感じです
003024
2008/03/26(水) 21:14:23ID:YxQEkSzyスイマセン
003129
2008/03/26(水) 21:15:27ID:YxQEkSzy0032nobodyさん
2008/03/26(水) 21:27:35ID:???>>29
http://pc11.2ch.net/test/read.cgi/tech/1199977642/737 (738が俺)
向こうで続けてもいいと思うんだけど。
0033nobodyさん
2008/03/27(木) 06:27:10ID:17ssUCBE低レベルすぎると思って
0034nobodyさん
2008/04/03(木) 16:38:03ID: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);
〜;
}
に変更されちゃったんですが、そういうものなんですか?
なんかいろんなところで不便なんですが…。
0035nobodyさん
2008/04/03(木) 16:51:17ID:???省略したほうが読みやすいときも個人的にいっぱいあるし
他のPerlをあまり使わない人のためじゃない?
あと、my変数と違ってlocal変数は本当はグローバル変数だよ
003634
2008/04/03(木) 17:34:30ID:???$_が出てくるときは長々と複数行引きずる事はないですから、
害はないとは思うんですが・・・。
あと、上記ならまだいいんですが、
$yamadacount = grep((split(/<>/,$_))[0] eq '山田',@lines);
みたいな使い方してる場合はもうどうした物やら…
0037nobodyさん
2008/04/03(木) 17:34:52ID:???それよりも local @lines =@_ , (略) のが変。
$pt もグローバルだし。
perl4 時代のプログラム書くなよ。
まあ、$_ に関しては 35氏と同意見だけど、コーディング規約なら仕方ない部分はある。
(が、上記の理由により、貴社のコーディング規約が時代に則ったものとは判断しがたい。)
真相は、スパゲティをみかねた上司が手を入れちゃったって所じゃねえの?
0038nobodyさん
2008/04/03(木) 19:35:33ID:???あと、()の行は「(が、仮に規約があったとしても、…」って書いたつもりだった。
>>36
$yamadacount
= grep{
my $line = $_ ;
( my $name, undef ) = split /<>/, $line ;
$name eq '山田' } @lines ;
後、それを $_ を用いて書くなら(エンコーディングの話しは抜きにして)
$yamadacount = grep /^山田<>/, @lines ;
なりなんなりもっとすっきりしたコードが書けるんじゃね?
0039nobodyさん
2008/04/03(木) 20:07:16ID:???0040nobodyさん
2008/04/03(木) 20:17:54ID:???004134
2008/04/04(金) 10:01:42ID:???さきほど以下のような形でまわしてみたところ、
@aaa = ('a','b','c');@bbb = ('A','B','C');
$_ = "HELLO";
foreach(@aaa){
foreach(@bbb){
print;
}
print;
}
print;
結果は'ABCDaABCDbABCDcABCDdHELLO'となりました。
ということはやっぱり>>40さんの言うとおり少なくとも
foreachで用いる$_は別段問題ないって事ですよねえ。
$_に直接何か入れる事なんてあんまりないですし。
もうちょっといろいろ試して勉強してみます。。
0042nobodyさん
2008/04/04(金) 12:31:56ID:???リンク付きリスト作成したいのですがよろしくお願いします
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枚の一覧表作成が目標です
どなたかよろしくお願い致します
0043nobodyさん
2008/04/04(金) 12:58:40ID:???0045nobodyさん
2008/04/05(土) 13:15:12ID:???丸投げスレを探したのですが既にあるスクリプトを改造するスレでした
私は改造とはちょっと違うのでこちらで勉強させてくださいお願いします
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>の複数行を読み込ませる部分お願いしたいです
どなたかよろしくお願いします
0046nobodyさん
2008/04/05(土) 13:22:57ID:???while (<>){
next if !( /<h1>/i .. /<\/h3>/i ) ;
print ;
}
h3 が二箇所あるとかだったら知らん
0047nobodyさん
2008/04/05(土) 13:31:19ID:???h1 と h3 だけ抽出したいのね。
while(<>){
next if !( /<h[13]>/i .. /<\/h[13]>/i ) ;
print ;
}
こっちだわ
0048nobodyさん
2008/04/05(土) 14:40:16ID:???ついでに
use strict;
my $joined = join "", <>;
my @matches = $joined =~ m{(<h[13]>.*?</h[13]>)}isg;
print map "$_\n", @matches;
でなったけど
リャマ本から省略して書くと
htmlみたいなマークアップ言語には多くの落とし穴があるから単純なパターンは使わずそれ用のモジュールを入手したほうがいいらしい。
0049nobodyさん
2008/04/05(土) 15:04:15ID:???お忙しい中、レスありがとうです
>>45です
もしタグ名が違う場合はどう書けばよいでしょうか?
例にあげた文ではサーチする文字列のkeyは2箇所とも<h>ですが
<h>と<span>の2種類の場合はどうすればいいですか
丸投げですねすいません恐縮です
>>48のそれ用のモジュールってあるんですか
もしよろしければこちらも教えて下さい
何度もお手数をお掛けして申し訳ないです
0050nobodyさん
2008/04/05(土) 16:02:34ID:???use strict;
my $joined = join "", <>;
my @matches = $joined =~ m{(<h\d>.*?</h\d>|<span>.*?</span>)}isg;
print map "$_\n", @matches;
モジュールは探したけどわからんかった。すまん
それと、書いといて難なんだが勉強不足で>>47さんのコードがよく分からないけど
こっちのコードだと、でかいファイルを処理するときにjoinで全部繋げてからやってるから
たぶん、>>47さんのコードより表示するのが遅くなる
キーボード打つ回数も多くなるし
0051nobodyさん
2008/04/05(土) 16:21:20ID:???早速教えていただいたことを取り入れようとしてみたのですが
上手くいきませんでした
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| }
でいいのか変数格納できていないので確かめていないです
どなたかよろしくお願い致します
0052nobodyさん
2008/04/05(土) 16:24:30ID:???>>45です
私が書き込む寸前にレスしてくれたんですね
入れ違いになってしまい申し訳ないです
(ソースを見ながら書くと遅くなってしまいました)
>>50さんに教えていただいたようにパイプを使ってやる方法を模索してみます
ありがとうございます
0053nobodyさん
2008/04/05(土) 16:33:54ID:???パイプは使ってないよ
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>にマッチしちゃう
だから、やっぱり書いておいて難なんだけどこのコードはおすすめできない
0054nobodyさん
2008/04/05(土) 16:37:59ID:???>>45です
my @files = glob("$dir*.html");
globでファイル名を配列として
そのあと
foreach my $file (@files) {
としてファイルを1つづつ読んでいます
ファイルの中が1箇所の時は大丈夫だったんですが
2箇所になると難しくなって困っています(例で言うと<h1>の部分と<span>の部分です)
アドバイス頂ければ嬉しいです
よろしくお願い致します
何度もすいません
0055nobodyさん
2008/04/05(土) 16:42:14ID:???モジュールは (HT|X)ML::Parser とか。
正規表現だけではネストに出くわしたときに「落とし穴」にはまる、と。
そのコード書ける人が>>47さんのが把握できないってのが腑に落ちんのだけど
どこが謎なの?
>>45
http://pc11.2ch.net/test/read.cgi/php/1203935151/277 かつ
http://pc11.2ch.net/test/read.cgi/hp/1205922529/50 な者ですが。
↑こんなやっつけ仕事を使い回そうとせずに「きちんと丸投げ」してくださいな。
自分より腕のいい人はたくさんいるから、暇つぶしで相手してくれるかもしれないし。
でも正直、あなたは丸投げ && 仕変連発を平気でなさるので業者に依頼して欲しい。
0056nobodyさん
2008/04/05(土) 16:46:38ID:???詳しくありがとうございます
>>45です
右か左かを選ぶって意味ですね
そうすると最長一致って事で<h1>の下にある<span>ばかりを選ぶことになりますね
どうすればいいのか・・・
ちょっと頭冷やして再考してみます
ありがとうございました
お返事頂けてよかったです
0057nobodyさん
2008/04/05(土) 17:10:33ID:???お世話になります
コーディング初心者スレで場所が違うと指摘を受けて自分が質問させてもらえるところを捜していたので
あなたとお会いできるとは思わなかったです
書いてくれた人にもう一度聞きたかったんだけど
みんなに迷惑だと言っていたのであなたに聞けなかったんですよ
また教えていただけないでしょうか?
お願いします
先のレスで書いたように別々のところ2箇所から取り出さなければいけない事がわかりました
以前お話したようにファイルリストを作りたいのですが
タイトルの下にもう1行ありました
タイトルにファイル名のリンクその下に1行書かなければいけなかったんです
もしよろしければお時間のある時にでもまた教えて下さい
お願い致します
0058nobodyさん
2008/04/05(土) 17:13:24ID:???なるほど。ありがとうございます
「/<h[13]>/i .. /<\/h[13]>/i」の部分が分かりません
$_に対してマッチしようとして真か偽を返すというのは分かるんですが範囲指定演算子がどういう役割をしてるか分からないです
>>56
何もできずにすまん
やっぱり>>55さんが紹介してくれたようなモジュールを使ったほうがいいよ
0059nobodyさん
2008/04/05(土) 17:46:59ID:???うーん、仕変が激しすぎるので…仕事だったら請けてるんでしょうけど。
とりあえず
http://pc11.2ch.net/test/read.cgi/php/1203935151/278
という声もあったので、ちと考えてみます。
>>58
そこの .. でしたか。
説明しようとするとウソを書きそうなので
perldoc perlop や
ttp://perldoc.jp/docs/perl/5.8.8/perlop.pod
の説明やサンプルを眺めてみてください。
0060nobodyさん
2008/04/05(土) 18:14:08ID:???すみません、perldocに目を通すのを忘れていました
コンテキストで役割が違うんですね
勉強になりました
本当にありがとうございました
0061nobodyさん
2008/04/06(日) 14:25:12ID:???>>59さんレスありがとうございます
わかりました
この先どんな問題が出てくるのか予想も出来ないので取り合えず自分でできるように頑張ってみます
2chで聞く時に「質問者は環境とやりたいことを出来るだけ詳しく」ということなので
やりたいことを詳しく書く、そしたら解答してくれる前に新しい問題点を発見して「質問内容を変更します」って繰り返してしまいました
解答してくれる方にはご迷惑をお掛けして反省しています
perlを始めて1週間、変数について勉強しているとこです
スカラ変数を2個にして配列変数0、1とすればいいのかなって思いました
それで正解なのかはわかりませんが取り合えずタイトル以外にもう1個スカラ変数を増やして読み書きできる事を目指してみます
ありがとうございました
0062nobodyさん
2008/04/06(日) 22:29:28ID:nA18XPcwhtmlを読み込んだ$contentsから
<li>〜<li>の〜部分を抜き出したいと考えがえています。
for( my $i=1; $i <= 20; $i++){
if( $contents =~ m,^<li>(.*)</li>(.*),g ){
$block = $1;
$contents = $2;
}
}
この場合、i=1の時、
最後<li>のマッチングにかかる部分しか摘出できず、
うまい正規表現がないかと色々調べては回ったのですが、
ハマってしまいました。
$contensの初めからマッチングするようなコードを
ご教授お願いします。
006347
2008/04/07(月) 07:06:59ID:???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 ;
0064nobodyさん
2008/04/07(月) 14:14:44ID:???せっかく教えてくれたんだけど
今の私には理解できていないんだ(;´д⊂ヽ
後に参考になるかもしれないのでメモして大切に保存しておくよ
活用できなくて申し訳ない
ほんとにありがと
0065nobodyさん
2008/04/07(月) 19:50:52ID:???006665
2008/04/07(月) 20:57:10ID:???ありがとうございました。
0067nobodyさん
2008/04/08(火) 00:48:13ID:???スカラと配列とハッシュがよくわかんない
スカラは値$
配列@は複数のスカラ値$
@があればスカラ変数$はいらないのでは?
@が複数のスカラ値と記載してあるんだけど
@へ複数の変数を入力する方法は記載されていないここが知りたいのに見当たらないね
最終的にソートする予定があればキーと値%のハュシュにしておいた方がいいのかな?
ソーと機能の所読んだらキーでソートするって書いてある
ハッシュをいくつも作って複数のハッシュを並べ替えてから書き込み
ってのが最終目標にすればいいのかな
39ページ目にして出てきたqwとはなんだろか??
目次にもTips検索にもない
ネットで調べたら
qw
シングルクォートで囲んだ文字列をスペースで split するのと同様です
命令を命令で説明しているところばかりだsplitってわかんない
splitを調べたsplitを使ってデータを分割と記載されている
・・・
qwはデータを分割するための命令なのか??
なんで日本語で解説しないんだ
先日もわかんない単語があった
ネットで調べたストリングと一緒と説明されていた
ストリング??ギターの弦か??ワケワカメ
0068nobodyさん
2008/04/08(火) 05:45:29ID:???0069nobodyさん
2008/04/08(火) 06:18:13ID:???0070nobodyさん
2008/04/08(火) 06:31:50ID:???perlのアレコレ
ttp://furyo.on-air.ne.jp/linux/perl.html
私は10日ほど前からperlに興味を持ちお勉強してたんだよね
perl解説本3冊
ググルこと100サイト
初心者用ばかり選んでいるのにわかりにくいね
「簡単」「入門」「初級」で探してみるんだけど
中身は自分の思い出すためのメモ帳だね
全然わかんない
命令の説明に命令使って「入門」はないだろw
一般社会なら後進指導の立場には向いていないね
命令を説明するのに「○○はこんな感じです」と
その下にサンプル書いているだけではわかんね
私が選んだサイトは文脈からして10年くらいは経っているのではないかと思うがわかりやすいね
ヘンテコな広告も一切なくて集中して見れたな
「perlのアレコレ」管理人さんここを見ることはないかもしれないけど
ありがとう。
0071nobodyさん
2008/04/08(火) 07:04:21ID:???…そこもたいして他と変らんよ。多分、覚えたての頃に書いたんだろ。
ヘタに丁寧に書いてある分不味い。
# 範囲演算子の第二の用法(このスレの46)なんかは、まあ省くのは
# しかたないとして。
初心者向けと言うのを加味しても、for の項の例文の無意味な代入とか、
\w の説明とか、
if($target =~ /my main editor is (\w+)/)
{
print "bad!\n" if $1 =~ /emacs/i;
print "good!\n" if $1 =~ /vi/i;
}
こんな例文とか。ちょっと眺めただけでも突っ込み所がある。
0072nobodyさん
2008/04/08(火) 23:43:12ID:???$# は探してたんでやっとわかった。最後の変数ね
大全600ダメだ
ゴミ買って来た様なもんだな使えねえ
他の解説書に気になるサンプルがあった
よく読んでもサンプルに出てくる$+の意味は解説されていない
仕方ないので意味を調べて廻る
くだらない時間が過ぎていく・・・
意味わかんないので他の解説書で調べたり
ググって調べたり無駄な時間ばっかりだ
それで答えは出てこない
どうなってんだ?
hello、perl以外作ったことないよ
グーグルで$+ と$# と半角でぐぐったら1件もヒットしない
なぜなんだろか??
怪しい命令なのかね
0073nobodyさん
2008/04/08(火) 23:57:18ID:???http://www.google.com/search?hl=en&q=perlvar
0074nobodyさん
2008/04/09(水) 00:44:21ID:???ありがと
ラストプレーンマッチ
最後にマッチする括弧がどれかわからない場合に使うと便利
まさにこれですよ^^
ありがとう
while (<FH>) { $links{$title} = $1 and last if (m!<title>(.+?)</title>!) }
これの m! の部分はマルチオプションっていうのかな
後ろに!が付いているので複数行はダメという意味でよい?
これを複数行対応にしたいのでシングルモードに!にしてみると
while (<FH>) { $links{$title2} = $1 and last if (s!<title>(.+?)\n(.+?)</title>!) }
デバッグでエラーになるんだよね
複数行対応にするにはどうしたらいいですか?
ここが$+の使いどころかな?
わかんない・・・
>>74
だからそのコードは使い回さずに書き直してくださいと(ry
m! … スラッシュのエスケープが面倒だった。 / 以外の記号でパターンを囲むとき用。
後ろの ! … m! で始めたんだから終わりも同じ記号。
複数行 … http://pc11.2ch.net/test/read.cgi/tech/1186030400/638+642 で教えました。
ついでに言うと
http://pc11.2ch.net/test/read.cgi/tech/1186030400/673
も私です。「gawkで片づいたら、くだすれPerlのアレは全部無駄ですか」という気持ちがあのレス。
ご自分でお書きのとおり「残念」です。
あと、ここもム板の正規表現スレも自分の日記を書くとこじゃありません。
while (<FH>) { # 1行ずつ読み込んでループする。$_ に入ってるのは1行だけ }
0077nobodyさん
2008/04/09(水) 02:43:19ID:???こんばんわお世話になります^^
正規表現の「残念でした」は先の言葉が「次はなんだろう」だったので
クイズのノリなのかと思って
perl→gawkは正解じゃないので「残念でした♪またどーぞ♪」のノリでお答えしたのですが
言葉は難しいですね
ご心配無用ですよ
私がやりたい事を理解できればスグ消えます
ただ思ったよりかなり時間はかかっていますが
パソコンには関係のない商売なのでこればっかり調べたり勉強してとかは実際無理なので。
例の教えて頂いたコードを参考にさせて頂いているのですが
コードって元コードを理解しないと書けないですね^^;
あのコードで特にわからないの所は2箇所あります
1箇所目は複数行
2箇所目は下から3行目のループ
1行で$fileを3回使っていますよね
2回目$fileはファイル名だとわかるのですがlist_fileの宣言をすれば自動的に省略して$fileでOK??
1回目はmyが初めについているのでこの行で宣言してるってことなのだろうか?
3回目はlinksになっている何故$file(同じ文字なのに)動作は違うのかがよくわかりません
タイトルの下にデータ行と備考項目と増やしたいのですが何故か最初の5バイトが無くなるんです
まあ気長にやってみますよ
オヤシミ^^
# 「こんぴーたに無関係な商売なので、用事が済めばあんたらにもプログラミングにも用はない」と
# 言ってることに気づいてるのかなあ。
・複数行のこと。
ループ書き直すのが面倒な心境なので略。
・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| }
# 動作は同じ。
0079nobodyさん
2008/04/09(水) 03:29:44ID:???よくわかんないけど
可哀相な人だ
ヘンテコなとらえ方してるね
あなたには感謝しているけど
仕事を放ったらかしでは生きていけませんという意味なのだが・・・
とにかくありがとう
>>78に記載してくれたコードも猫に小判
私には理解できていない
自力でなんとか頑張ってみるよ
あなたはとてもお人好しでいい人だ
知識もある
短気なところ直せば世界が変わると思うよ
オヤシミ^^
0080nobodyさん
2008/04/09(水) 10:21:11ID:???m//
http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators
複数行対応
http://perldoc.perl.org/perlre.html#Modifiers
0081nobodyさん
2008/04/09(水) 11:43:17ID:???アンタ良い人だよ、おつかれさんw
0082nobodyさん
2008/04/09(水) 16:26:01ID:???ありがと
$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は明らかに特別な変数のような希ガス
0083nobodyさん
2008/04/09(水) 16:33:39ID:???もしくは
perldoc Perlvar
特殊変数以外は自分で定義してるはず。
0084nobodyさん
2008/04/09(水) 17:22:09ID:???せめて>>70のリンク先(決して推薦はせんが、ま、しかたない)の全部を
「実践」- 読むだけじゃなく実際に実行してみること - してから
質問してくれんか?
答える気にもならんよ。レスしても「理解出来ない」で終りだし。
◆EtAiUEg7/Q はよくもまあこんなのに色んなスレで付き合ったもんだ。
0085nobodyさん
2008/04/09(水) 17:51:57ID:???>特殊変数以外は自分で定義してるはず。
これのようだ
ありがと
>>84
スレタイ嫁としかいいようないな
質問もアドバイスもしないあなたは何者?
どっか逝けばいいよ
0086nobodyさん
2008/04/10(木) 13:21:24ID:???日本語の初心者やそれ以下のヒトとしての初心者はどうかと思うがな
0087nobodyさん
2008/04/10(木) 16:30:12ID:???こんなの呼ばわりやそれ以下呼ばわりするほうが
よっぽど人として恥ずかしいので覚えておくといいよ
perl書けたから何?エライの?勘違いもイイトコだ実社会ではね
私はperlに関係あることを書き込みに来ているわけで
単語もわからないので超初心者だと自覚してるよ
まぁそういうのここでは関係ないでしょ
子供の言い合いみたいなのに付き合ってられないので
以降その手の話題は私にはしないで結構ですレスもしないです
今のところ解答者は2名のようだが居なくなるかもしれないし
気まぐれな方が通るかもわかんない
気長に待ってみてもレスもなく、このスレ消滅ってって事でも
それはそれで仕方ない私がどうこう出来ることでもない
煽るだけのレスよりかはいいと思う
今日のわからないこと。
取得タイトル部分は <a href でファイル名にリンクが張られている
後にprintした結果のタイトルには<title>のタグは付いていない
その部分を真似て他の部分を取得しようと試してみた
文字列だけがprintされているタグは前後ともに切れている
わからなかい例の1行で3回fileを使っている部分が味噌だな
その部分のスグ下で print FH qq|"$file"\n|; を記載してみた
何も取得しない・・・$fileを他の形式にしても同じようだ
謎の1行はその1行で3個の$fileを育成しているのか??
文字列の取得だけの場合は応用が利くって事がわかった
タグ付きの部分の取得はまた別にしたほうが良さげ
perlでタグ付き文字列取得の謎ってことで今日はおいておこ^^
0088nobodyさん
2008/04/10(木) 16:57:06ID:???質問は簡潔に。
煽りはスルーで。
回答には感謝を。
おっぱいうp。
0089nobodyさん
2008/04/10(木) 17:04:46ID:???>>87
俺は47=71=84≠86。
全く進歩しない奴にレスしてもつまらん。
お前が(無いと思うが)俺を回答者としてカウントしてるなら外してくれ。
「超初心者」と自覚してるならば、誘導URLを見て、変数、配列、ハッシュ
辺りの基本用語を頭に入れるくらいの礼儀は心得ろ。
# 正規表現スレにお前が表われて7日。全く進歩してないんだもん。
# 教えて君にも程がある。
煽ってくれても構わんが、その煽りの文章を考える暇があったら(中級以上の
リファレンスを買うんではなく)初心者本でも素直に買って読めよ。
空気悪くしてすまん、他の人。しばらくレスは自粛します。
0090nobodyさん
2008/04/10(木) 17:07:35ID:???「マナーたるものこういうものである」
「礼儀とは云々・・・」思い込み激しいと疎外しちゃうよ
なんか勘違いしてるね
ペコペコしろという上から目線
キンモ〜〜としか言いようないなw
0091nobodyさん
2008/04/10(木) 17:23:04ID:???俺、>>81=>>83=>>88
質問者=初心者ではないし、回答者=エライわけでもない。
わからないことは質問する、わかることは答える。
ただ、教えを請う立場なら礼儀は必要だと思う。
でも勘違いしてるならしょうがない、以後回答は控えます。
0093nobodyさん
2008/04/10(木) 17:54:14ID:???俺も抜ける。まぁ、頑張れ。
0094nobodyさん
2008/04/10(木) 17:57:34ID:???こんなとこで客を探してる暇な業者さんなのだろか?
さよなら
公然の場所で恥ずかしげもない
その発言が面白すぎて
釣られたー
0095nobodyさん
2008/04/10(木) 18:09:05ID:???ま、一所懸命煽ってがんばってくれ
俺も抜けるよー
0096nobodyさん
2008/04/10(木) 18:15:14ID:???ていうかさっきからここで発言してるの
あなたと私だけじゃないでしょうか?
まぁ解答しないよってのはよくわかったのだが
それで何?くらいにしか思わないのだがw
ま、さよなら
お元気で^^
スレタイの「超初心者」ってのは…
--
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円」をいただく立場の人たちが
仕事をほったらかしてタダでできるのは、冒頭のような初心者さんのお手伝いぐらいです。
今更ですが range operator の誰向けでもないフォロー、ありがとうございます。
説明しようとして「左項が真になるとスイッチが入り…えーと…perldoc」でしたので。
「よくもまあ」ではあるんですが、仕事もヒマな時期でしたし
・いつも見てるスレに何かが来る
・自分が回答
・「理解できない。でもありがとう」と言って(一旦)去る
…これで他の方の被害が少しは減るのなら、と。
ソフ板辺りも壮大なことになってそうですが、あちらは見てないので関わってません。
教えてちゃんですらないんですよね。
結果が欲しい、手法には興味がない(と書くと「違う」と返されるだろうけど)、と。
そんなわけだから処理系自体がコロコロ変わったりもするわさ、と。
腰を据えて初心者本でお勉強という方向へは行かない人なのでしょう。
本当は自分もこんな話は書きたくないんですが、誰かが書かないと日記が延々と続くんだなあ
と思ったので、NG用に捨てトリつけた次第です。
>>96
短気を起こしていろんな人を煽っても、いいことないですよ。
そういえば、私の短気なとこを直せば世界が変わると教えてくれた人がいました。
(レス|回答)自粛の方が続出、と。まあ、仕方ないというか自然な流れでしょうな。
捨てトリももう要らなくなって、ここは素敵な日記スレに移行かな。
0100nobodyさん
2008/04/10(木) 18:35:01ID:???0102nobodyさん
2008/04/10(木) 18:44:02ID:???おぉやっぱりあなたか
あなたが顔を真っ赤かにしながらレスしている姿は笑えないよ
(まぁ吹いちゃってしまったのだがwww)
なんか難しい説明されてもよくわからない
くだすれ = くだらないスレ と教えてくれたのですが
しかも超初心者とまで付け足してあるw
まさに私のためのスレだと思ったよ
スレタイは業者の釣りえさだったのか
気づけよ>>自分www
そんなに必死になるほどのことでもないので
むしろどーでもいいことなんだけど
気になったからやってるだけで
質問者は回答に飢えている
この心理を突いた網だったのだ
ネットでネット(網)張ってましたねw
洒落にもならないけど実際そういう人がいてたのか・・・
必死やのー
ま、気長にやっていくのであなたは私を気遣う必要ないですよ
んじゃね
0103nobodyさん
2008/04/10(木) 18:52:33ID:???>以降その手の話題は私にはしないで結構ですレスもしないです
リャマ本からの引用
「Perlは、少なくとも毎日20分間はプログラムを書く--そしてほとんどのプログラムをPerlで書く--人向けの言語です。」
もし、毎日書くか事情があるなら>>89の引用
>その煽りの文章を考える暇があったら(中級以上のリファレンスを買うんではなく)初心者本でも素直に買って読めよ。
腰を長くすえるなら応用のきくやつを学べ。
アドバイスいっぱい転がってるじゃん。
あと、おまえなじられたら死ぬのか?
0104nobodyさん
2008/04/10(木) 18:54:15ID:???|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (=)
| ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
/
ぷちっ /
∩___∩ . 从 /
| ノ ヽ /
/ ● ● | (=)ヽし
| ( _●_) ミ/ ` ノ
彡、 |∪| ノ /
/ ヽノ / ノノ
/ /
/ /
ムシャ |
ムシャ |
∩___∩ | ぷらぷら
| ノ ヽ (( |
/ ● ● | J ))
. (( | ( _●_) ミ ・
彡、 |∪}=) ,ノ ∴
/ ヽ/^ヽ ヽ 。
| ヽ \ |
| ヽ__ノ
何か、私にはわからない謎の陰謀にお気づきになった様子ですが
自分が>>78の次に書いたのは>>97ですよ。
「私=ここで客を待ち構えてる業者」ということにしたいのでしたら、どうぞご自由に。
# こんなとこで客を拾うのってめんどくさそうだなーとしか思えないけど。
0106nobodyさん
2008/04/10(木) 19:00:59ID:???0107nobodyさん
2008/04/10(木) 19:01:12ID:???超初心者でもここまでの香具師はそうそういまい
0108nobodyさん
2008/04/10(木) 19:02:32ID:???0109nobodyさん
2008/04/10(木) 19:09:35ID:???ひとりでスレ回すのってマジ大変。
0110nobodyさん
2008/04/10(木) 20:06:37ID:???詳しい人が見たらくだらない質問だと思ってたけどな。
>>1を読んでもそう取れる。
0112nobodyさん
2008/04/12(土) 00:00:56ID:???>>なんか思い込み激しいね
が>>87を見ても>>102を見ても自分の発言に対して書いてるようにしか思えない点について
0113nobodyさん
2008/04/13(日) 13:47:51ID:???ちょっとわからないことがあってまた落書きしに来たのだw
解答いただけたら嬉しいけど期待できないのはわかっているので
気長に解答者さん待ってみるよ^^;
@抽出部分の検索文字を <object (.+?)object> にすると
(.+?)の部分だけが取れて
始めに出てくるはずの <object と 最後の object> が現れないんだよね
変数宣言の名前を全部変えてみたけど動くので特別な変数名は使っていないようだ
perl自体がそういう仕様なのかね??
Aそれから複数行抽出なんだけど
1行もしくは2行もしくは3行ってのはダメなのかな?
(s<title(.+?)title>|<title(.+?)\n(.+?)title>|<title(.+?)\n(.+?)\n(.+?)title>s);
Bそれからまだあるんだよね
<title>
<object>
<span>
この3箇所を抽出したいんだけど何故か最後に書いたトコだけが取れるんだ
{ と } の間に3つとも書いているんだけど
ファイルクローズして改めてファイルオープンするって手順にするべきなのだろうか?
今はソースぐちゃぐちゃでワケワカメになってきたw
全集600ダメだ
オープン オブ ダイ で ダイの部分が予約語なのか調べて見てもわかんない
他の本でdieの意味がわかる
せめて予約語は全部掲載してもらいたいもんだ
それでは@〜Bよろしく願います
また会おう^^;
シーユーあげ印w
0114nobodyさん
2008/04/13(日) 15:31:39ID:???0115nobodyさん
2008/04/13(日) 18:34:17ID:???お前のせいで、他の人の質問でも答える気にならんのだよ自重してくれんかね。
0116nobodyさん
2008/04/13(日) 18:44:46ID:???あのコテも短レスで時々全然ボケた答え返すんだよなあ消えてくんねえかな
0117nobodyさん
2008/04/14(月) 01:20:54ID:???これの27行目 closedir(DIR); でエラーになるんだけどなんで?
#!/perl/bin/perl
use strict;
use warnings;
print "<html>\n";
&traverse_html(".");
print "</html>\n";
sub traverse_html {
my $dirname = shift;
my $delim = '/';
if ($dirname =~ /[\/\\]$/) {
$delim = '';
}
print "<ul>\n";
opendir(DIR, $dirname) or die "$dirname: $!";
foreach my $entry (readdir(DIR)) {
next if ($entry eq '.');
next if ($entry eq '..');
my $filename = "$dirname$delim$entry";
if (-d $filename) {
print "<li>$entry\n";
&traverse_html($filename);
} else {
&do_html($filename, $entry);
}
}
closedir(DIR);
print "</ul>\n";
}
0118nobodyさん
2008/04/14(月) 08:31:02ID:???再起してるからじゃね?先にファイル一覧を取得してclosedirしてから再起呼び出しするか、
ディレクトリハンドル(DIR)をローカル変数に浮かすかすればインジャネ?
traverse_html ※1 の中で traverse_html ※2 を呼び出す
→ ※1のDIRを※2で上書きする
→ ※1に戻ったとき ※2のDIRはclose済み
テストしてないから動くかは知らんけどこんな感じ。
sub traverse_html {
my $dirname = shift;
my $delim = '/';
my @entrys = undef;
my $i = 0, $j = 0;
if ($dirname =~ /[\/\\]$/) {
$delim = '';
}
print "<ul>\n";
opendir(DIR, $dirname) or die "$dirname: $!";
foreach my $entry (readdir(DIR)) {
next if ($entry eq '.');
next if ($entry eq '..');
$entrys($i++) = $entry;
}
closedir(DIR);
for ($j=0;$j<$i;j++){
my $filename = "$dirname$delim$entrys($j)";
if (-d $filename) { print "<li>$entrys($j)\n"; &traverse_html($filename); }
else { &do_html($filename, $entrys($j)); }
}
print "</ul>\n";
}
0119nobodyさん
2008/04/14(月) 13:27:25ID:???レスありがとう^^
試してみたら
my @entrys = undef;
my $i = 0, $j = 0;
部分でエラーになって以下関連箇所もエラーになるんだよね
>>117のコードでのエラー文こんな感じ
closedir() attempted on invalid dirhandle DIR at itiran-tes.pl line29
構文チェックではエラーにならない
デバッグの識別子チェックというのを実行してみたらエラー箇所がわかって
タイトルとファイル名は取得されていてリンクも貼られているようだ
>>117の closedir(DIR);がエラーにならないように出来たら
ワンステップだけど前進出来そうなんだよね
もうちょっと色々試してみるよ
朝のあわただしい中わざわざレスしてくれてありがとう
丁寧に教えてくれて感謝してまふ
んじゃ
0120117
2008/04/14(月) 13:33:05ID:???2chの文字数制限で記載できなかったんだ
#ここに>>117の部分がある
sub do_html {
my ($filename, $entry) = @_;
return unless ($filename =~ /\.html?$/);
open(FILE, $filename) or die "$filename: $!";
my $file = join('', <FILE>);
close(FILE);
my $title;
if ($file =~ m|<title>(.*?)</title>|si) {
$title = $1;
$title =~ s/[\r\n]//g;
} else {
$title = $entry;
}
print qq|<li><a href="$filename">$title</a>\n|;
}
0121118
2008/04/14(月) 15:57:05ID:???117と120をつなげて動かしたら動いたよ。
OSやPerlインタプリタのの問題かな?
0122nobodyさん
2008/04/14(月) 16:17:14ID:???「オープン オブ ダイ」の話を書いてから12時間で
readdir でぶん回して再帰もしちゃうんだぞ、ってところが問題なんだと思うよ。
0123117
2008/04/14(月) 16:47:14ID:???そうなんだ
わざわざテストしてくれたんだ(;´д⊂ヽありがとう
WindowsXP
アクティブパール5.88
シグウィンでもっかいテストしてみて作者にメールしてみるよ
ありがと
>>122
何が問題なのだ?
質問も解答もしないのに横から茶々入れてるあなたのほうがよっぽど問題なのだが・・・
購入した本にサンプルが付いていた
動かないので自分で解決できないか模索した
どこがおかしいのだ
あんたの頭かw
0124nobodyさん
2008/04/14(月) 17:20:05ID:???お前のせいで、他の人の質問でも答える気にならんのだよ自重してくれんかね。
>その煽りの文章を考える暇があったら(中級以上のリファレンスを買うんではなく)初心者本でも素直に買って読めよ。
0125117
2008/04/14(月) 17:21:37ID:???サビフォルダーに置いていたhtmlからの取得は全部おk
コマンドプロンプトで確認したんだけど
ファイルは作成されていない
コマンドプロンプトの操作画面に現れたものを
ファイルに保存するのはどうすればいいですか?
取りあえず>>122は答えなくていいよ
どうせ野次るだけなのは明白だ
自分でも探してみるけど
私に理解できるように答えれる方おられましたらよろしくお願いします
0126nobodyさん
2008/04/14(月) 17:22:29ID:???0127nobodyさん
2008/04/14(月) 17:23:21ID:???それ勘違い
再起わかんないので具体的な質問できないよ
その質問には答えてあげればイイヨ
どうせ私が見てもわかんないのでヨロシコ
0128nobodyさん
2008/04/14(月) 17:25:31ID:???0129nobodyさん
2008/04/14(月) 17:27:06ID:???「超初心者用」と「初心者用」購入したんだけど
ささっと変数を解説したらCGIの話ばかりで
ファイル操作は最後のほうでちょびっとだけ解説してるんだ
なぜかperlの解説本は「CGI」「CGI」の連呼でキモい
0131むこうの928
2008/04/14(月) 18:04:05ID:???激しくゴメン。別人です。
何日か前から、こっちがこんなことになってるから、むこうで聞いてみた。
(まあ実際WebProgではないんだけど)
しまった”再帰”か〜。
つっても再起でコケてるわけではなくて、(まただw)
どうも =~ s///e の”e”でこけてるようなんだ。
正規表現絡みで、しかもこっちこんな状況だったからあんま書き込みたくなかったんだけど
案の定つっこまれてしまった。
まあいいや、今は時期が悪かったってことで、暫く消えます。
0132nobodyさん
2008/04/14(月) 20:11:42ID:???貴方が本当に別人なら理解出来るでしょう。
======================
当方、確認の術を持たないので(win環境なし)。
s///e の問題にしろ再帰の問題にしろ、再帰を使うほどの
ネタでは無さそう。あくまでも適当に書いた例だけど。
# Wide character warning が出るのは御愛嬌。
use utf8 ;
my %hash
= map{
my $new = $_ ;
$new =~ s/(\d)(\d)/$1十$2/ if length $new == 2 ;
$new =~ s/1十(\d)/十$1/ ;
$new =~ tr/123456789/一二三四五六七八九/ ;
$new =~ s/0// ;
$_, $new ;
} 1 .. 99 ;
while(my $line=<DATA>){
$line =~ s/(\d+)条/$hash{$1}条/; print $line ;
}
__DATA__
3条
24条
10条
0133nobodyさん
2008/04/14(月) 20:48:09ID:???>>131
ActivePerl5.8.8(build816) で試そうとしたんですけど、標準入力からうまく食ってもらえず。
で、__DATA__ と <DATA> にしたり
open(IN, '<', 'list.utf8'); binmode(IN, ":utf8"); 以下略にしたりしてみたら
意図どおり(のはず)の出力になりました。perl.exe も落ちず。
# CP932 な環境で binmode(STDIN, ":utf8") って考えたこと自体がないのでよくわからない。
>>115>>124
諸事情により疲れすぎて疑心暗鬼になってるように見えますよ。
諸事情のほうは継続の気配なので、少し休まれては如何かと。
0134130
2008/04/15(火) 02:25:32ID:???>>132
イエッサー。わかりますとも。自分でも向こうに書き込んだ後に、ハッシュ使えばs///eも再帰も必要ないかなって思った。
処理速度もこっちのほうが速いし。でも自分で書いたのはこんなの。うーん、いまイチスマートにならないなあ。
my $kanj;
for (1..99){
my $kan = $_;
$kan = substr($_,0,1) . '十' . substr($_,1,1) if($_ >= 10);
$kan =~ tr/123456789/一二三四五六七八九/;
$kan =~ tr/0//d; $kan =~ s/一十/十/; $kanj->{"$_"} = $kan;
}
0135130
2008/04/15(火) 02:26:02ID:???あれ、ちゃんと動きましたか?
うちでは昼間とは別のPC(PerlのVerは同じ)でやってみたけど、やっぱり例のWindowsダイアログが出て落ちる。
で、いろいろあがいてみたところ、上では、再帰ではないっぽいこと言ったけど、やっぱり再帰に問題ありかと。
特にif($num>=20)のところで、$1と$2を同じ関数に再帰してるとこで、次の正規表現マッチで$1$2あたりが壊れるんではないかと。
(ちなみに、これまたCentOS4,Perl-5.8.8-5.rpmだと期待通りに動く)
上で再帰ではないと思ったのは、あのスクリプトを、use utf8;とbinmode関係コメントアウトして実行してみると、
(当然tr/123.../のところで文字列がぶっ壊れるけど)、最後まで落ちずに走ることと、
以前に正規表現($1$2や$'$`$&も)使いまくりで、さらに6-7段ぐらいネストした関数書いた時も、期待通りに動いてくれたんで、
ちゃんと覚えてくれてるものかと思ってた。これからは、どうやらこれを改めないといけないようだ。
> # CP932 な環境で binmode(STDIN, ":utf8") って考えたこと自体がないのでよくわからない。
自分は、Win上でもtextは基本的にUTF-8で保存してるもんで、(本番環境がLinuxなのもあるけど)ワンライナ=[っぽく書くとbォは、
コ=[ドの中でopenb竄轣Aencode(decode(...))やら書くのメンドいんで、perl script.pl < infile.txt > puts.txt みたな感じを多用してます。
ちなみに、向こうのコードをopen(IN...)とかでやっても、ウチの環境ではやっぱりperl.exeが落ちるのは変わらない。
0137nobodyさん
2008/04/15(火) 04:16:40ID:???大変失礼しました、重ねてお詫びします。
>>133
>諸事情により疲れすぎて疑心暗鬼になってるように見えますよ。
>諸事情のほうは継続の気配なので、少し休まれては如何かと。
ほんとにその様です。穴があったら入りたいw
0138nobodyさん
2008/04/15(火) 04:17:12ID:???0139nobodyさん
2008/04/15(火) 15:19:10ID:???りゃまbonがいいんだね
先日、立ち読みしたラクダの本かな?
アレファイル操作詳しく載ってるの?
取りあえず今日はperlの絵本というのを探してみようかと思う
ま行ってみるよ
んじゃ
0140133
2008/04/15(火) 17:04:26ID:???> 標準入力からうまく食ってもらえず。
test.pl < list.utf8 > converted.utf8 # 0バイトのファイル生成で頭抱える。
test.pl < list.utf8 # 何も吐いてくれない。
perl test.pl < list.utf8 > converted.utf8 # …ちゃんと食ってくれますね。
他人様の疲れを気にする前に、寝ぼけた自分をどうにかしろと。
>>135
要件通りに動くことより「なんで perl.exe が落ちるのはどうして?」が本題ですよね。
ちと時間があったので追試しました。
# 上記寝ぼけから醒めたので STDIN から食う元通りのコード
# 食わせたのは for (1..99) { print "ふんにゃか市$_条\n" } で作ったファイル
5.8.8-816 on Win2kSP4 → 正常動作。
5.8.8-819 on WinXPSP2 → 正常動作。
# ビルドを上げる
5.8.8-822 on WinXPSP2 → アッー!
# 本当に落ちたので下げた
5.8.8-820 on WinXPSP2 → 正常動作。
build822 だと見事に落ちますねえ。
0141nobodyさん
2008/04/15(火) 19:22:38ID:???質問者様が見てくれるといいが。
0142nobodyさん
2008/04/15(火) 23:20:39ID:???原因が同じか違うかもさっぱりわからないが、
5.8.8 build822だとStorableを使ったコードで
大量のstorableデータ(50MB強)を読み込ませると読み込みが終わらない、
という現象にあたったことがある。
同一コードで、build817、あるいは5.10.0 build1001, 1002 では問題なかった。
というわけで、個人的にbuild822は信用していない。
参考情報と言うことで。
0143nobodyさん
2008/04/16(水) 16:55:29ID:???まあ、元々向こうのネタですし。
# きちんと問題の切り分けして再現する最小コード出す辺りが「向こう」なのかも。
自分のは検証でなく、「おらの環境では動いたずら」だけではひどいと思ったので
補足した程度ですから。
>>142
build822 をインスコすると build821 用の release.(html|txt) が入ってて萎えるんですが
CHANGES.txt で build821, 822 だけに書かれてる
> plus additional selected changes from the Perl 5.9 development branch.
これが気になってます。
> Build 821 was only distributed for HP-UX.
ここは…笑うところなのかな。
build822 が5.8系の latest ではあるんですが、自分も同じ印象です。
配布CGI+改造のテスト程度は大丈夫なんでしょうけどね。
0144135
2008/04/16(水) 20:08:19ID:???向こうで見事な回答を頂きました。(Cコードを読み解く力がないので具体的なことはよくわかりませんが・・。)
>>140
わざわざ試して頂いてありがとうございます。
自分の記憶では、817->819と820->822でバイナリ互換が崩れる(DBIやEncode、Uni-Jpなんかを再ビルドしないといけない)ので、
古いバージョンに戻してまでやってみようと言う気が起きませんでした。
(ちなみに819->820は再ビルド無しでモジュールが動きました。)
>>142,>>143
そうですか、build822はあんまりよろしくないのかな?
向こうの返答では、5.10系でも同様に落ちるらしいので、むしろこのコードで動いているほうがよろしくないってことで
修正されたんではないかと思いますが、実際のところよくわかりません。(動くことによる不具合が思いつかない。)
今度ヒマな時にでも、Linux環境でperl-5.10をソースからコンパイルして同じコード試して見ます。
まあどちらにせよ、再帰の中で、tr///(s///も?)を使うようなコードは書かないようにしないといけないっぽいですね。
0145質問
2008/04/16(水) 23:05:19ID:oAcDKLtnperlで良い方法がありましたら教えてください。
0147nobodyさん
2008/04/18(金) 01:33:43ID:???0148145
2008/04/18(金) 07:47:12ID:ThTU7HInサーバサイドだからやっぱり無理なんですかね・・ いいモジュールとか有ると期待していたんですが。。。
>>147
JavaScriptのどういったものが教えてください
0149nobodyさん
2008/04/18(金) 10:00:46ID:???開いたら消すにすれば?
0150nobodyさん
2008/04/18(金) 14:57:49ID:???もしくは実行終了のタイミングが予測出来るなら
folkなりthreadなりで子プロで消すとかね
そもそも消さなきゃならないデータなんて置かなきゃ良いんだよw
どうせダウンロードされたくない画像やら動画やらなんだろうけど
そんなもんはブラウザのキャッシュからいくらでも回収出来るからなぁ
0151nobodyさん
2008/05/01(木) 01:13:00ID:???foreachの前で下記のようにやってみたらエラーになります
$str1 =~ /あいうえお/;
$str2 =~ /さしすせそ/;
0152nobodyさん
2008/05/01(木) 01:16:22ID:???0153nobodyさん
2008/05/02(金) 11:14:09ID:Sh68NuTDよろしくお願いします。
0154nobodyさん
2008/05/02(金) 23:30:24ID:???0155nobodyさん
2008/05/03(土) 00:23:50ID:???mod_rewriteとか。
実をゆうと http://localhost/file.cgi/aaa=bbb
とかで、/の後ろを引数として渡したり出来るんだけど、
色々と混乱しそうだから、俺は使わない。
0156nobodyさん
2008/05/04(日) 16:40:15ID:???0157nobodyさん
2008/05/04(日) 18:06:42ID:???0158nobodyさん
2008/05/04(日) 18:19:28ID:???で破綻するので>>157はデタラメ。
defined($hensu) or print "ナイヨ(><)\n";
が正解。
0159nobodyさん
2008/05/04(日) 19:26:18ID:???my $var = ''; # これが「長さ0の文字列が入ってる」のか「何も入ってない」のか
print "どっちが正解かわかんないんです(><)\n" if $var xor defined($var);
0160nobodyさん
2008/05/04(日) 22:15:41ID:???0161nobodyさん
2008/05/05(月) 18:10:43ID:???ドメインを入力してIPアドレスを出力するだけの、単純なスクリプトを作りたいので
0162nobodyさん
2008/05/07(水) 13:21:17ID:???a href=" URL "
もしくは
img src=" URL "
のURLが相対パスになっていた時に絶対パスに変換されるようにするには
どうしたらいいですか?
0163nobodyさん
2008/05/07(水) 19:46:59ID:???0164nobodyさん
2008/05/07(水) 21:26:07ID:fDlQQ0EM長居のでソースは遠慮するんですが、そのcgiを指定するとPLファイルをブラウザで表示したみたいに自分の打ったテキストがそのまま出てしまうのですが、このとき考えられるミスを教えて下さい。
0165nobodyさん
2008/05/07(水) 22:20:31ID:???use strict; use warnings;
#use Fcntl qw(:flock); use Socket;
open(LOG, '>', 'test.tmp') or die $!;
flock(LOG, 2);
#flock(LOG, LOCK_EX);
print LOG scalar gethostbyaddr(pack('C4', 127, 0, 0, 1), 2), "\n";
#print LOG scalar gethostbyaddr(pack('C4', 127, 0, 0, 1), AF_INET), "\n";
close(LOG);
use Fcntl qw(:flock) や use Socket しなくても flock() も gethostbyaddr() もつかえる。ふしぎ!
>>162
よくわかんないけど $ENV{'SERVER_NAME'} とか $ENV{'SCRIPT_NAME'} とか
ttp://search.cpan.org/~gaas/URI-1.36/URI.pm
ここの URI->new_abs() とかを眺めるといいんじゃないかと。
>>164
・自鯖板ネタなのにここに書いてる。
・よくわかんないまま共用レン鯖でテストしてる。
・ファイル名が なんたら.cgi だけど .htaccess で .cgi が text/plain になるよう仕込んである。
・ファイル名が なんたら.pl で実行属性がついてない。
・実は Perl と無関係な問題。
…1つぐらいは当たってると思います。
0166nobodyさん
2008/05/07(水) 22:27:20ID:???0167nobodyさん
2008/05/07(水) 22:44:41ID:fDlQQ0EMあ、すいません。自鯖板ネタなんだと思います。
そんな板があると知らなかったので・・・何回か色々とググったら、たぶんapacheの設定ミスみたいです。
見直してみます。
ご迷惑おかけしました。
>>166
そっちは試してみたので。スクリプト的にはたぶん問題ないです。
helloworldレベルの奴でも出なかったし、本丸写しでも無理でしたし。
ありがとうございました。
0168nobodyさん
2008/05/08(木) 00:03:38ID:???DEF123 を ABC123 に置き換えたい時は
$str =~ s/DEF123/$HOGE123/g;
では駄目ですよね? どうしたらいいですか?
0169nobodyさん
2008/05/08(木) 00:16:04ID:???0173nobodyさん
2008/05/08(木) 20:29:16ID:???こういうのが こういう感じで置き換わるように
$str =~ s/\/[^\/]*\/\.\.\//\//g;
こうやってみたのですが
ABC/DFG/HIJ/../../ → ABC/DFG/../
こういうのは こうなっちゃいます
ABC/DFG/HIJ/../../ → ABC/
こうなってくれるにはどうしたらいいですか?
0174nobodyさん
2008/05/08(木) 20:46:01ID:???$str =~ s{\.\./}{}g;
こんな風に。
0176nobodyさん
2008/05/08(木) 21:06:50ID:???完全に勘違いしてました。
こういうこと?
$str =~ s{[^/]*/(\.\./)+}{}g;
0177173
2008/05/08(木) 21:22:58ID:???すみませんお手数おかけして…
それだと
ABC/DFG/HIJ/../ の時も
ABC/DFG/HIJ/../../ の時も
ABC/DFG/ になってしまいます
ABC/DFG/HIJ/../../ の時には
ABC/ になるようにしたいのです
0178nobodyさん
2008/05/08(木) 21:29:39ID:???>>173
use File::Spec;
print File::Spec->canonpath('ABC/DFG/HIJ/../../'); # ABC
末尾のデリミタが消えたりしますが。
0179176
2008/05/08(木) 21:40:41ID:???こんなことしてどうするんだろうとか不思議に思ってた。
なんか寝ぼけてるな。
これを正規表現でどうにかしたのをみてみたい。
0180173
2008/05/08(木) 22:04:20ID:???RSS出力のCGIをいじってて、文章中にあるリンクやimgタグがRSSフィードでは
絶対パスでないと働かないので、相対パスになってた時に絶対パスに置き換わるように
したかったのです。
$RSS_BASE_URI = "http://$ENV{'HTTP_HOST'}$ENV{'SCRIPT_NAME'}";
$RSS_BASE_URI2 = &GetDir($RSS_BASE_URI);
元のCGIにこれがあるので、
$str =~ s/href=\"/href=\"$RSS_BASE_URI2/g;
$str =~ s/src=\"/src=\"$RSS_BASE_URI2/g;
$str =~ s/http\:\/\/.*?\/http\:\/\//http\:\/\//g;
$str =~ s/\/\.\//\//g;
$str =~ s/\/[^\/]*\/\.\.\//\//g;
こうやってみたんですが…(見にくくてすみません)
こういう書き方をするようなものではないのでしょうか?
>>178
すみません、記事の中からURLを抜き出して当てはめるにはどうすれば…
0181178
2008/05/08(木) 22:46:06ID:???while (index($str, './') + 1) {
$str =~ s!/\./!/!g;
$str =~ s!/[^/]*/\.\./!/!g;
}
print $str;
ループなしでどうやるんだろう。
>>180
最初から「>>162です」と言って欲しかった気がする165です。
$RSS_BASE_URI2 の正体等々よくわかんないので、下記を見ながらごにょごにょしてください。
use URI;
print URI->new_abs('../../images/spacer.gif', 'http://example.com/cgi-bin/test/');
# http://example.com/images/spacer.gif
0182nobodyさん
2008/05/08(木) 22:46:10ID:???横レス。
モジュールがあるか?と静観してたんだが、こっちに移動してきたのかw
my $RSS_BASE = '/ABC/DFG/HIJ/' ; # 絶対パス
my $path = '../../abc/efg/' ; # 相対パス
my $cnt = $path =~ s{\.\./}{}g ; # ../ の数把握と同時に消去。
$RSS_BASE =~ s/([^\/]*?\/){$cnt}$// ; # 絶対パスから../の回数分のディレクトリを削る。
print $RSS_BASE . $path . "\n" ; # プリント。
0183nobodyさん
2008/05/08(木) 22:47:32ID:???おまけにタワゴト書いてるし。
0184173
2008/05/08(木) 23:36:51ID:???ごめんなさい。>>162です。
記事の中から該当部分を抜き出してまた戻す方法も分からない絶望的分からなさだったので
教えていただいたものを使うことができず、恥ずかし悲しくなりながら単純な置換だけでなんとか
やれないかと別の方向にごにょごにょしちゃってました。
もう少し勉強してそれを使えるようにがんばってみます。ありがとうございました。
>>182
移動してきてました…。
自分が知らないだけでこれもきっと一行ですむのだろうと思ってたら、そうでもないようですね。
勉強してなんとか単純置換以外も使えるようになろうと思います。ありがとうございました。
0185nobodyさん
2008/05/09(金) 04:31:31ID:???0186nobodyさん
2008/05/09(金) 07:34:10ID:???$str="ABC/DFG/HIJ/../../././abc/efg" ;
1 while $str =~ s{([^/]*?/\.\./|\./)}{} ;
print $str . "\n" ;
程度だね。
0187nobodyさん
2008/05/10(土) 18:46:41ID:jhS0+1hlprint "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>あ</title></head>\n";
print "<body>$kao<br>$body<br>$asi</body>\n";
print "</html>";
タイトルすら出てくれないんです。
たぶん初歩的なミスだと思うのですが・・・
0188nobodyさん
2008/05/10(土) 19:17:45ID:???0189nobodyさん
2008/05/10(土) 20:49:00ID:jhS0+1hlこれですか?
0190173
2008/05/10(土) 21:11:01ID:???あ、一行でもできたんですね!
ありがとうございます、動きました!
URLを抽出してモジュールに渡すのに悪戦苦闘してましたが、
このままできないのもくやしいのでそっちもがんばってきます。
0191nobodyさん
2008/05/10(土) 23:31:35ID:???その行を print "<!DOCTYPE〜 の行の前に書いてる?
あとエラーじゃなくて真っ白? ソースも?
0192nobodyさん
2008/05/11(日) 12:00:02ID:/WAyhnOgはい。この行を書いて、一行改行してhtmlソースです。
ANHTTPDで真っ白でした。
前に$kaoとかを定義づけてるんですけども(ifで)それのミスなら500が出るかな、と思ったので。
0193181
2008/05/11(日) 17:10:05ID:???「くやしいのでモジュール使うやりかたでもがんばってみる」方のようなので
ごにょごにょするときの参考にしてみてください。
use URI; # URIモジュールさん召喚。
my $RSS_BASE_URI2 = 'http://example.com/my/rss/generator/'; # 例。
my $str = join('', <DATA>); # __DATA__ 以下の割箸をまとめて $str に袋詰めします。
# >>180に基づいてみました。
$str =~ s/href="([^"]+?)"/'href="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg;
$str =~ s/src="([^"]+?)"/'src="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg;
print $str, "\n";
# 出力:
# <img src="http://example.com/diary/img/test.jpg">
# <a href="http://example.com/diary/latest">latest</a>
# <a href="http://example.com/test/script.cgi">Test Script</a>
__DATA__
<img src="../../../diary/././img/././test.jpg">
<a href="../../../diary/latest">latest</a>
<a href="http://example.com/test/script.cgi">Test Script</a>
0194193
2008/05/11(日) 17:25:08ID:???> $str =~ s/href="([^"]+?)"/'href="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg;
> $str =~ s/src="([^"]+?)"/'src="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg;
$str =~ s/(href="|src=")([^"]+?)"/$1. URI->new_abs($2, $RSS_BASE_URI2) .'"'/eg;
0195nobodyさん
2008/05/11(日) 20:48:25ID:???ANHTTPDの設定だと思うけどなー。
「ANHTTPD 真っ白」でぐぐったらなんか色々出てきたから
やってみたら
0196nobodyさん
2008/05/12(月) 04:25:47ID:???Perlで可能でしょうか?
可能でしたら具体的に教えていただけないでしょうか
0197nobodyさん
2008/05/13(火) 03:27:45ID:???コマンドラインからの実行で検索は出来るはず(Amazon等)
注文までは知らね
0198nobodyさん
2008/05/13(火) 05:33:31ID:???別にAPIとか対応して無くても、Formで受け付けてくれるなら(JavascriptやFlashでなければ)
気合さえあれば、検索も注文も出来る。
0199190
2008/05/13(火) 07:31:33ID:???ありがとうございます、参考に……って回答だった!
自分のとこでも動きました。こんなに簡潔になるなんて感激です。
~ s/ 以下にも入れられたんですね…
一回やってエラーが出たので(多分何か抜けてた)
別の場所で動かしたそれを元に戻す過程がいるのかと
甚だしい勘違いをしてました。
何一つ自分で解決できなかったけどなぜか大きく成長したような気がしました
本当にありがとうございます。
CGIでやってみたいことはまだまだあるので次はgoogle的なもので
解決できるようになりたいものです。
0200nobodyさん
2008/05/14(水) 02:23:53ID:???まあ、やって出来ない事は無いとは思うけど
気合いってよりは無駄な作業が多くなるでしょ
検索して返ってくるのはHTMLな訳だからそこから必要な物を切り出して
さらにフォームを探して送信する内容を整えて・・・
0201nobodyさん
2008/05/14(水) 04:27:20ID:???そう、だから気合がいる。昔そんなのを書いてて、
「こんなん苦労して書く必要あんのかよ?しかも1サイトにしか通用しねえし・・」
とか思ったこともあるけど、気合(笑)でカバーした。あの頃は若かった。
0202196
2008/05/14(水) 04:44:38ID:???ブラウザ無しでできるって事ですね
ブラウザ無しでデータをやり取りすると速いんじゃないかと思うのですが
実際どうでしょうか?
込み合ってるサイトもスイスイですか?
0203nobodyさん
2008/05/14(水) 05:50:58ID:???それは、相手のサーバーの処理能力とか、回線状態による。
まあそのページが、Javascriptやら画像やらフレームやらで大変込み入った内容なら
ブラウザでレンダリングするよりかは早くなるかも知れん。
(向こうのレスポンスについては、こっちからじゃなんもでけん)
けど、HTMLを正規表現等でパースして、ifで場合分けして、Formに内容セットしてとかしてたら、
はっきり言ってブラウザでクリックしたりしてするのの楽さと比べて、そんな恩恵あるとは思えん。
なにより、そうゆうコード書くのにかなり気合を要する(w)。
まあやるのは自由だけど・・・。
DDosアタックでも仕掛けるのなら話は別だが・・。
0204nobodyさん
2008/05/14(水) 06:19:24ID:???「Perlで書けばスイスイ!」だけを期待してるんだったら、やめれと。
でも、HTMLをパースしてCookieも食べて、フォーム仕立てて送信、お返事をパース…の繰り返しを書いて
意地でもPerlで注文してやる、というマゾな考えならそれはそれでありなのかもね。
0205nobodyさん
2008/05/16(金) 00:52:53ID:???定価15000円らしいのだが2000円の値札が付いている
CD付属でそのCDは未開封
パラパラッと立ち読みしたらWindows環境にも通用しそうな気がするんですよ
自分はWindows環境なんだけどこの本は勉強なりそうですか?
付録のCDはWindows環境でも使えそうですか?
ご存知の方お願いします
0206nobodyさん
2008/05/16(金) 12:23:26ID:???それ、解説書じゃなくて、CPANにある
モジュールのドキュメントを和訳しただけのものだから。
しかも10年前のものだから。
http://www.oreilly.co.jp/out/presuni/
0207nobodyさん
2008/05/16(金) 16:32:25ID:???ありがとうです
UNIXと記載がありますが2000円捨てるつもりで買ってみようかと思います
他にも古い本でプログラミングperlUNIXとか600円で売っていたんですよ
Windowsで動くのか心配だけど一緒に買ってみます
0208nobodyさん
2008/05/16(金) 16:37:16ID:???最新のドキュメントを探したほうがいい
古いの見ても混乱するだけ
0210nobodyさん
2008/05/16(金) 17:18:48ID:???0211nobodyさん
2008/05/19(月) 01:43:18ID:???英数字以外は文字化けしてます
コマンドプロンプト内で読めるように教えてください
jcode.plもエラーになります
0213nobodyさん
2008/05/19(月) 02:16:27ID:???なんで答えるの?
教えたらわかりそうなのか?
0214nobodyさん
2008/05/19(月) 02:24:16ID:???いやあ、多分LWP-UserAgentのことかなとエスパー。
ほんで取ってきたページのソースがcp932じゃないから
コマンドプロンプトで文字化け。
実は俺も昔やったことがある。
だから聞いてみた。
0215nobodyさん
2008/05/19(月) 02:26:22ID:???ぅぉぉぉー ヽ( ゚д゚)ノヽ(゚д゚ )ノ ぅぉぉぉー
わかってんじゃん
それそれ
cp932をも少し詳しく
0216nobodyさん
2008/05/19(月) 02:27:15ID:???もう一段階進んで
「jcode.pl は UTF-8 を知らんぞ」でいいのかな。
0217216
2008/05/19(月) 02:29:01ID:???くだらない質問でもど偉そうに聞いていいスレ
http://pc11.2ch.net/test/read.cgi/php/1158647441/
0218nobodyさん
2008/05/19(月) 02:40:29ID:???次からは、もちっと質問を詳しく。
ほいで解決方だけど、
perl 実行したいスクリプト.pl > kekka.html
とでもして、そのファイルを各種文字コードで開けるエディタ(秀丸、TeraPad等)で開く
もし持ってなければ、とりあえずIEで開けばなんの文字コードかはわかる。
or
use Encode;(5.8以降標準で入ってる)
で文字コードをcp932に変換。
>>216
その可能性もあるかもだけど、多分、もともとのページの文字コードが分かってなかったら使えない。
(と思ったが、自動判別出来るんだっけ?もう長いこと使ってないから忘れちまった。)
あと、$response()->as_string() あたりでサーバーからのレスポンスヘッダが読めるから、
それでそのページの文字コードを判別しい。(か、もしくはhtmlの中の<metaを探すか)
0219nobodyさん
2008/05/19(月) 02:50:31ID:???自動判別は (jcode.pl|Jcode.pm|Encode::Guess) な感じでいちおうあるよ。
# jcode.pl は UTF-8 に対応してないので、その辺はどうにもならない。
どれも「当たるとは限らん」ところが大事ですけど。
0220nobodyさん
2008/05/19(月) 02:50:47ID:???気分悪いならスルーでいいよ
あなた個人を攻撃してるわけでもないのに
態度云々言われたらこっちが気分悪い
取り合えず2chには向いてないと思うよ
これからもし私を見かけてもスルーしてね
おちょくってるわけでもないのに変な奴だ
>>218
詳しくありがとう
0221nobodyさん
2008/05/19(月) 03:23:45ID:???0222nobodyさん
2008/05/19(月) 10:53:12ID:???0223nobodyさん
2008/05/19(月) 15:45:54ID:???しかもあちこちに増殖している
0224nobodyさん
2008/05/19(月) 16:40:56ID:???人を馬鹿扱いできるほどお前稼いでるの?
税金なんぼ払ってるかいってみ
0225nobodyさん
2008/05/19(月) 16:59:25ID:???0226nobodyさん
2008/05/19(月) 17:15:21ID:???0227nobodyさん
2008/05/19(月) 18:46:02ID:???上の理論が成り立つと思ってるマヌケさ
0228nobodyさん
2008/05/19(月) 18:49:18ID:???森伊蔵云々、ディナー云々
中学生のホラ自慢みたいw
0229nobodyさん
2008/05/19(月) 19:09:24ID:???0230nobodyさん
2008/05/19(月) 21:49:23ID:???わかる人お願いします
ソースコードutf-8で保存してから実行してみた
アクティブパール5.88
WindowsXp
ここからどうすれば日本語になるの?
use LWP::UserAgent;
use utf8;
use encoding 'cp932';
$ua = LWP::UserAgent->new();
$req = HTTP::Request->new("GET", "http://www.yahoo.co.jp/");
$res = $ua->request($req);
print $res->content();
0231nobodyさん
2008/05/20(火) 04:17:01ID:???use LWP;
use Encode;
print encode('cp932',decode('utf8',LWP::UserAgent->new()->get('http://www.yahoo.co.jp')->content()));
0233nobodyさん
2008/05/20(火) 04:36:24ID:???できました!
スペースの文字コードを半角スペースに変えたらエラーにならないで実行できました
見事に日本語になってます
ありがとうございました!
0234nobodyさん
2008/05/20(火) 15:30:39ID:???すいませんまた教えてください
open(FH, '>>', "yahoolog001.html") or die "Cannot open content()!";
flock(FH, 2);
print FH qq|content()\n|;
0235nobodyさん
2008/05/20(火) 16:51:57ID:???231をyahoo_get.plとでも名前付けて保存して、
perl yahoo_get.pl > yahoo001.html
0236nobodyさん
2008/05/20(火) 17:29:08ID:???どうすればいいのか?
下記のような状況です
open(FH, '>>', "yahoolog001.html") or die "Cannot open yahoo001.html!";
flock(FH, 2);
perl yahoo_get.pl > yahoo001.html;
-----------------
Can't locate object method "perl" via package "yahoo_get" (perhaps you forgot to
load "yahoo_get"?) at yahoo-tes001.pl line 6.
0237nobodyさん
2008/05/20(火) 18:28:08ID:???スクリプト内に入れてやれよww
print FH encode('cp932',decode('utf8',LWP::UserAgent->new()->get('http://www.yahoo.co.jp')->content()));
0238nobodyさん
2008/05/20(火) 18:38:22ID:???違う違う、235のは、コマンドラインから実行するんであって、perlスクリプトの中に書くんではない。
>>234とか見てると、ファイルのオープンとかはあってるけど、
オブジェクトとか、クラスメソッドとかのことを良く分かってないようなので、
とりあえず一行で書けるのにしてみた。
それから、君は>>211や>>230と同じ人(?、かどうかは定かではないが)
コマンドプロンプトから実行してるなら、リダイレクトや標準出力、標準入力等についてもある程度は理解がないと。
(Perlではないんで、入門書とかにはあんまり書いてないか。でも基本ってか常識レベルなんで、
わかってないとこれからしんどいよ。逆にわかってくると、いちいちスクリプトの中でやらなくていいことが増えるんで
書くのが楽になるし、理解も深まる。)
0239nobodyさん
2008/05/20(火) 18:42:43ID:???0240nobodyさん
2008/05/20(火) 21:15:41ID:???FH付けると何故かまた文字化けになってしまい苦戦していました
よくわかりませんがcp932を止めたら文字化けが亡くなりました
アドバイスのお陰で2つの方法で保存させることが出来ました
しかも昨日までは取得した最後の1024バイトしか表示されなかったのですが
ページ全部を取得できていますありがとうございました
↓スクリプトだけで保存でたソース
---------------
use LWP;
use Encode;
open(FH, '>>', "yahoolog001.html") or die "Cannot open yahoo_get.pl!";
flock(FH, 2);
print FH LWP::UserAgent->new()->get('http://www.yahoo.co.jp')->content();
↓コマンドラインから保存できたソース
--------------
use LWP;
use Encode;
print LWP::UserAgent->new()->get('http://www.yahoo.co.jp')->content();
ここからログインのテストしたいので
またお願いするかもしれませんが
その時はよろしくお願い致します
>>238さん
勉強方法詳しくありがとうございました
標準入出力の解説書なかなか見当たらないです
手持ちの解説書で標準入出力を解説しているのは
「perlデータマンジング」という本だけです
大変わかりやすく良書なのですが紙面の関係上さわり程度なのが残念です
何かお勧めの解説書があれば教えて頂ければ嬉しいです
ありがとうございました
0241nobodyさん
2008/05/22(木) 14:07:57ID:???httpsでログイン可能な簡易ブラウザサンプルどこかないでしょうか?
自分が調べたところ2001年にある雑誌が付録で付けていたようなのですが
絶版になり各方面探しても見当たりませんでした
やりたいことはhttps接続での送受信です
お心当たりのある方よろしくお願い致します
0242nobodyさん
2008/05/22(木) 14:12:19ID:???0243nobodyさん
2008/05/22(木) 14:12:53ID:???LWP
0244nobodyさん
2008/05/23(金) 20:25:12ID:VktSXUAFたとえるならあいうえおという文のあとおをかとこにおきかえたいんです。
0245nobodyさん
2008/05/24(土) 02:20:54ID:???0246nobodyさん
2008/05/26(月) 19:32:51ID:???あれから色々調べているんですけど
ログインや検索やセレクトメニューの選択やボタンクリックなど
具体的なサンプルってないですね
もしかしてperlで出来ないですか?
結局HACKER本買い捲ったんだけど
みんなHTMLの取得までなんですよ
そこからセレクトメニューを選んだりOKボタンをクリックするとか
できないんだろうか?
0247nobodyさん
2008/05/26(月) 19:36:22ID:???0248nobodyさん
2008/05/26(月) 20:03:33ID:???perlでなんでも出来るって言ってたじゃないですか?
0249nobodyさん
2008/05/26(月) 20:18:52ID:???0250nobodyさん
2008/05/26(月) 20:35:06ID:???もしかして>>196からの流れか?
ひょっとして画面が表示されて検索ワードが勝手に入力されてセレクトメニューが勝手に選択されてボタンが勝手に押されるとか
そういうのイメージしてる?
0251nobodyさん
2008/05/26(月) 20:47:35ID:???それそれ
それです!
perlで出来るんですよね?
今のところそのようなサンプル見当たらないんですよ
自動ソフトのスクリプトとかならOKボタンのクリックなどは
初歩の初歩インストール後5分後には覚えれるくらい簡単なんですけど
perlの場合参考になるような記述すら見当たらないんですよ
超凄いらしい解説本やオライリーのHACKシリーズやWEBシリーズを購入したんですけど
全然すごくない
OKボタンの1回すら出てこない
なんでもできないのですか?
0252nobodyさん
2008/05/26(月) 20:54:44ID:???0254nobodyさん
2008/05/26(月) 21:16:41ID:???WEB上での操作でやりたいことは大体教えてもらえましたよ
そのソフトを教えてくれる方たちはみんな普通にご存知でした
ただ遅いんですよorz
0.5秒で完結させたいんです
0255nobodyさん
2008/05/27(火) 02:30:31ID:???自分は>>198や>>201なんだけど、多分初めてじゃないと思うぞ(w)
>>253,254
君のやりたいことってのが、GUIのツールみたく目に見える感じで動いて行くってのなら多分ムリ。
(Tkとか使ったら無理やりにでもできるかも知れん。でも自分はGUI系はからっきしなんで、よくわからん)
そうでなくて、コマンドラインから、ブラウザで操作したことと同じ結果を得るってことなら可能。
どんな本や、どんなページ参考にしたかわからないけど、
ちょっと上の方に出てるLWPなんかの解説や、CPANのmanualなんかをじっくり読めば(リンクを少々辿らないダメだけど)、
検索フォームにワード仕込んだり、”OK”ボタンを押すってことにもたどりつきそうだけど・・・。
0256255
2008/05/27(火) 02:31:04ID:???use strict;
use LWP;
use Encode;
use HTML::Form;
my $pwd = `cd` . '\\';
my $cmd = 'C:\Program Files\Internet Explorer\iexplore.exe';
my $url = 'http://google.co.jp/';
my $lwp = LWP::UserAgent->new('agent'=>'mozilla3.9');
my $word; my $out1 = '1.html'; my $out2 = '2.html';
$word = shift() or $word = 'Perl'; $word =~ tr/\r\n//d;
my $html = $lwp->get($url)->content();
open(O1,">$out1"); print O1 $html; close(O1);
system qq("$cmd" "$pwd$out1");
my $form = HTML::Form->parse($html,$url);
$form->value('q' => encode('utf8',decode('cp932',$word)));
$form->value('ie'=> 'UTF-8');
my $response = $lwp->request($form->click);
my $out2 = '2.html';
open (O2,">$out2"); print O2 $response->content(); close(O2);
system qq("$cmd" "$pwd$out2");
これを、例えばtest_search.plとでも保存して、コマンドラインから、
perl test_search.pl "検索したいキーワード"
で実行すると、最初googleのTopが表示されて、それを閉じれば、そのワード(なければ”Perl”)での
検索結果がIEで表示される。(無理やり、画面遷移っぽくなるように作った。)
モジュールや関数の詳細は、自分で調べてくれ。
0257nobodyさん
2008/05/27(火) 03:14:05ID:???0258nobodyさん
2008/05/27(火) 03:29:45ID:???ありがとうございます
まさにそれなんです
GUIを使わないで送受信してみたいんです
お疲れのところわざわざサンプルまで作って頂き本当にありがとうございます!
頂いたサンプルを参考にログインとかもチャレンジしてみます
ありがとうございました
0259nobodyさん
2008/05/27(火) 14:08:14ID:???httpについて勉強するといいよ
0260nobodyさん
2008/05/28(水) 00:14:16ID:T0EpbUiqifで、たとえば$Aに\という文字列が含まれる場合、
\が含まれています。とするにはどうしたらいいんでしょうか?
if($A =~ \\)
{print "\\が含まれています"}
でいけますか?
0261nobodyさん
2008/05/28(水) 02:23:14ID:???0262nobodyさん
2008/05/31(土) 01:19:07ID:???この処理ってどういう意味なのでしょうか?
0263nobodyさん
2008/05/31(土) 02:02:14ID:???0264nobodyさん
2008/05/31(土) 15:52:59ID:???>$in{'ext'} = extfind($in{'orgname'});
サブルーチン(?) extfindの一番目の引数にハッシュ$in{'orgname'}の値をセットして
呼び出し、戻り値をハッシュ$in{'ext'}に代入。
>if(!$in{'ext'} && $in{'upfile'}){ &error(202); }
次にハッシュ$in{'ext'}の中の人が留守で、
尚且つハッシュ$in{'upfile'}の中の人が居る場合
恐らくエラーメッセージを表示するであろう
サブルーチンerrorの一番目の引数に"202"をセットして呼び出す。
ちなみに2行を一行にまとめると↓みたいになる
&error(202) if(!&extfind($in{'orgname'}) && $in{'upfile'});
0265264
2008/05/31(土) 15:54:58ID:???0266264
2008/05/31(土) 16:03:00ID:???オリジナルと大して変わらんけどこうやればいけるか
スレ汚しスマソ・・
0267nobodyさん
2008/05/31(土) 18:48:39ID:???という質問が出易くなりますな。
0268nobodyさん
2008/05/31(土) 20:14:45ID:???やっぱりperl難しいな・・・
http://sugachan.dip.jp/obsolete/snup/
拡張子合わずってログに記録したときは
ファイルをアップしないように改造しようかと
思ってるのだがなかなかできなくて。。。
$in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'} && $in{'upfile'}){ &error(202); }
を
$in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'}){ &error(202); }
に、しても普通にアップロードできてしまうし。。。どこがおかしい?
0269nobodyさん
2008/05/31(土) 20:40:29ID:???そこのアップローダの改造の質問 って前にもどこぞで見たなあ。
で「改造スレに行け」と言われてたハズだが?
ソースが好みじゃないのでやる気にならん。…改造スレ行けば?
0270nobodyさん
2008/06/04(水) 08:35:22ID:???テキストエリアに文字を入力して、投稿ボタンを押すとregist.cgiに渡されて書き込まれる仕組みです
このregist.cgiはmessageとcountという2つの引数をとるみたいなのですが、
ブラウザからURL:/aaa/bbb/regist.cgi?message=test&count=1
とやっても書き込まれませんでした
ちなみにFirefoxのTemperDataで確認したリクエストとレスポンス上ではベーシック認証は使われていませんでした
最終的にはperlで自動的に書き込んでくれるプログラムを書きたいのですが、まずはperlでこのregist.cgiに投稿するにはどうすればいいか教えてください
0271nobodyさん
2008/06/04(水) 10:11:46ID:???0272nobodyさん
2008/06/04(水) 14:06:46ID:???0273nobodyさん
2008/06/06(金) 23:21:44ID:???0276nobodyさん
2008/06/13(金) 17:42:23ID:GNaVOr+fpack('C*','0xe4','0xba','0xba')とやっても化けてしまいます。
どういう式を書けばいいのですか?
0277nobodyさん
2008/06/13(金) 18:06:20ID:???0278nobodyさん
2008/06/13(金) 18:32:03ID:???ありがとうございます。できました。
裸のままでよかったのですね。
pack('H*','e4baba');
というのもあったみたいです。
今は10進→16進→文字なんですが、
10進から直接変換できますか?
0279nobodyさん
2008/06/13(金) 18:37:43ID:???pack('C*',228,186,186) とか
10進の数字しかないならpack('C*','228','186','186') でも通るけどな。
0280nobodyさん
2008/06/13(金) 19:26:54ID:???文字列との違いが判りました。
UTF-8のコード範囲を調べると
[\x00-\x7f]
[\xC0-\xDF][\x80-\xBF]
[\xE0-\xEF][\x80-\xBF][\x80-\xBF]
[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]
とあります。
これには他の言語も含まれているとおもいます。
先ほど教えていただいた変換で一覧を作ろうと思うのですが、中国語なども混ざってしまいます。
日本語のみの範囲はどのようなものなのでしょうか。
0281nobodyさん
2008/06/13(金) 19:41:37ID:???0282nobodyさん
2008/06/13(金) 20:36:31ID:???罫線とか利用している文字もありますね。
なかなか難しい。
0283nobodyさん
2008/06/15(日) 14:13:18ID:???そんなことはできませんか?
0284nobodyさん
2008/06/15(日) 14:29:37ID:???このエラーの意味が分からないのですが、教えて頂けませんか?
0286nobodyさん
2008/06/15(日) 22:45:56ID:???>>285 =~ s/連結の方法がおかしい/未定義値を文字列として評価している/;
例えば $foo が undef の状態で "foo$foo" とか 'foo' . $foo とか。
0287nobodyさん
2008/06/16(月) 09:05:17ID:???あるサブルーチンでファイルを扱おうとしています。
evalの中でopenしたファイルハンドルをエラー処理(if $@)で閉じるにはどうすればよいのでしょうか。
環境はperl5.8 use strictです。
0288nobodyさん
2008/06/16(月) 10:45:47ID:???より
#!C:/perl/bin/perl
open(IN,"example.log");
while(<IN>){
$i++;
if($i == 3){ $line .= "\t\t$_"; }
else{ $line .= "$_"; }
}
close(IN);
open(OUT,">example.log");
print OUT $line;
close(OUT);
print"Content-type:text/html\n\n";
print "変更完了";
0289nobodyさん
2008/06/16(月) 10:49:36ID:???より
#!C:/perl/bin/perl
open(IN,"example.log");
while(<IN>){
unless($_ =~ /hoge/){ $line .= "$_"; }
else{ $line .= "\n"; }
}
close(IN);
open(OUT,">example.log");
print OUT $line;
close(OUT);
print"Content-type:text/html\n\n";
print "消去完了";
0290nobodyさん
2008/06/16(月) 13:00:09ID:???せっかくお答えいただいたのにすみません。
私が知りたいのはスコープを跨ぐ場合の話です。
例えば、evalの中で宣言した変数をevalの外で使おうとすると、perlに叱られます。
ファイルハンドルの場合は叱られないのですが、これが作法に則った方法なのかわかりません。
my $fh = IO::File 〜とかopen my $fh〜等を使って
いちいち閉じなくていいようにする。
案2)
use IO::File;して
my $fh = *FH{IO};
$fh->close() if defined($fh) && $fh->opened();
0292nobodyさん
2008/06/16(月) 16:00:58ID:???失礼。他のスレッドへの返答でした。
http://pc11.2ch.net/test/read.cgi/tech/1208674881/519 への回答
# 変数が半角スペースで始まっていれば、半角スペースを先頭一個だけ消去
if($example =~ /^ /){ $example =~ s/ //; }
# 変数が全角スペースで始まっていれば、全角スペースを先頭から一個だけ消去
elsif($example =~ /^ /){ $example =~ s/ //; }
拙いですがどうですか?
0293nobodyさん
2008/06/16(月) 16:05:48ID:???修正です。
# 先頭の全角スペース、半角スペースの連続を削除
$example =~ s/^([\ \ ]+)//;
0294nobodyさん
2008/06/16(月) 17:36:08ID:???もうひとつファイルを用意して、
書き出して言ったらダメなの?
>>293
スクリプトとファイルの文字コードが同じならいいけど。
0295nobodyさん
2008/06/16(月) 21:58:28ID:???ありがとうございます。
お答えいただいた案1がしっくりきたので、この方式で行きます。
またよろしくお願いします。
0297nobodyさん
2008/06/18(水) 00:25:23ID:Mmy0x8n6print "あ";
で一秒待ってから
print "い";
を実行する方法ってありますか?
localtimeで受け取って1秒過ぎるまでwhileで空白を書き続けるってのも考えたんですが・・・
負荷がかかりそうなんで。
0298nobodyさん
2008/06/18(水) 01:19:02ID:???0299nobodyさん
2008/06/19(木) 06:37:25ID:???0300nobodyさん
2008/06/19(木) 10:35:29ID:???0301うっとりハムちゃん
2008/06/20(金) 15:05:12ID:nHevfWAE掲示板に書き込まれた内容に URLが含まれていた場合、
自動的にリンクになるようにしたいのですが、
簡単に追加する方法等がありますか?
よろしくお願いします。
0302nobodyさん
2008/06/20(金) 15:20:25ID:???正規表現 perl URL とかでググれば例が出てくると思う
0303nobodyさん
2008/06/20(金) 22:01:17ID:???$_ =~ s/([^=^\"]|^)(http\:\/\/[\w\.\,\~\-\/\?\&\+\=\:\@\%\;\#\%\*]+)/$1<a href=\"$2\">$2<\/a>/g;
0304nobodyさん
2008/06/20(金) 22:29:00ID:???文字クラス中のエスケープは更に酷い。
0305うっとりハムちゃん
2008/06/21(土) 03:14:25ID:k6DOaEg8>303 さんの記述を一行足すだけではダメですよね?
例えば $comment 内に書き込まれた中から抜粋する際は
それを指定する必要などはありますか?
0306nobodyさん
2008/06/21(土) 07:47:06ID:???0307nobodyさん
2008/06/21(土) 17:19:06ID:???print &autolink($comment);
sub autolink {
my $text = $_[0];
$text =~ s{(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)}{<a href="$1">$1</a>}g;
return $text;
}
参考: Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
0308うっとりハムちゃん
2008/06/21(土) 19:10:28ID:???とても親切で、どうもありがとうございました!!
助かりました! m(_ _)m
0309297
2008/06/21(土) 21:40:03ID:etCJxH2Bありがとうございました。
0310nobodyさん
2008/06/23(月) 09:49:20ID:???0311nobodyさん
2008/06/23(月) 20:42:58ID:???---post_data.cgi---
use CGI::Lite
#read(STDIN,$buff,$ENV{'CONTENT_LENGTH'});
$param = CGI::Lite->new()->parse_form_data('POST');
print "Content-Type: text/plain\n\n";
print "$buff\n";
for (sort(keys(%$param))){
print "$_ = " . $param->{"$_"} . "\n";
}
つう、なんの変哲もないファイルを書いて、これに、
---test.js---
function reQuested_files( data,method,fName,async,callback){
var r_obj = crHttpReq();
r_obj.onreadystatechange = function(){
if(r_obj.readyState == 4){ callback(r_obj); }
}
r_obj.open( 'POST','post_data.cgi',async );
r_obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
r_obj.send( 'a=abcdeFG&b=123.4567&z=zzz' );
}
から、javascriptのXMLHttpRequest(所謂ajaxってやつ)でのPOST送信のテストをしたんだけども・・・、
0312311
2008/06/23(月) 20:43:29ID:???function callback_function(rs_obj){
var res = rs_obj.responseText;
alert( decodeURI(res) );
}
で、alert表示させた場合の結果がおかしい。
具体的にゆうと、これでIEからの送信だと、alertに
a = abcdeFG
b = 123.4567
z = zzz
と、正確に(期待したとおりの)結果が返って来るんだが、最近出たばかりのFirefox3でやると、
結果alertになにも表示されない。
これjavascriptのせいかなと思って色々調べてみたんだが、まだはっきりとわからない。
けど試しに、上のレスのスクリプトで、コメントアウトしてる read() 部分を有効化させてやると、
どちらも同じ結果になる。(a=abcdeFG&b=123.4567&z=zzz)
つまりこれは、STDIN(POSTデータの実体)は入ってるのに、CGI::Lite->parse_form_data('POST')
で、なぜか狐3の時だけ、正常にパースされてない様なんだけど、どうなのかな? っと思って聞いてみた次第です。
(Web鯖のエラーログにも、値をParse出来ないみたいなerrorが出てました。)
これから、Javascript関係のスレにも行ってみようかと思うんですが、
とりあえず上記のPerlコードに、問題がないか確かめたかったんです。(問題ないですよね?)
ちなみに、htmlのフォーム上から、action="post_data.cgi" method="POST" で送った時は、IE,FFとも問題ありません。
0313nobodyさん
2008/06/23(月) 22:23:59ID:???つ prototype.js
0314311
2008/06/24(火) 05:32:07ID:???ありがとうございます。そうなんですよ。
実はFF3リリース日に、別件でsync,ansyncについての挙動の違い(F1.5,2.0と3.0で)に遭遇しまして、
いろいろ調べてなんとかそちらの方は解消しました。今回のもやはり同様の理由かなぁ〜と思っていましたが、
原因判明しました。結論から言うと、javascript側だけの要因ではなく、Perl側にも原因があることがわかりました。
(割合は、とりあえず半々とゆうことにしときます。)
>>311の、post_data.cgiを、CGI::Liteだけでなく、CGI.pmにしてみたり、直でSTDINから読み込んだり、
同様のスクリプトをphpで実行したりして、原因突き止めました。
まず、IE6,7、Firefox1.5,2.0,3.0で、POSTしたデータそのものについては、1byteの違いもなかったんですが、
受け側により、処理の仕方に差異があるようでして、これの違いは、送り側の"Content-Type"にありました。
具体的には以下
0315311
2008/06/24(火) 05:38:53ID:???IE 6 なし (なにも無し)
IE 6 あり application/x-www-form-urlencoded
IE 7 なし (なにも無し)
IE 7 あり application/x-www-form-urlencoded
FF 1.5 なし application/xml
FF 1.5 あり application/x-www-form-urlencoded
FF 2.0 なし application/xml
FF 2.0 あり application/x-www-form-urlencoded
FF 3.0 なし application/xml; charset=UTF-8 ※1
FF 3.0 あり application/x-www-form-urlencoded; charset=UTF-8 ※1
(※. setRequestHeader('...')の有無)
(※1.表示しているカレントページのcharsetに関わらず、UTF-8で固定のようです。)
0316311
2008/06/24(火) 05:48:29ID:???CGI::Lite なし 出来る
CGI::Lite #2 出来る
CGI::Lite #2 #8 出来ない
CGI::Lite #3 出来ない
CGI.pm なし 出来る(※)
CGI.pm #2 出来る
CGI.pm #2 #8 出来る
CGI.pm #3 出来る(※)
Apache2::Reuest なし 出来ない
Apache2::Reuest #2 出来る
Apache2::Reuest #2 #8 出来る
Apache2::Reuest #3 出来ない
php(おまけ) なし 出来ない
php #2 出来る
php #2 #8 出来る
php #3 出来ない
0317311
2008/06/24(火) 05:56:14ID:???>>315
については、一応RFCでは、フォームからの入力をPOSTする時には、必ず"application/x-www-form-urlencoded"
をヘッダに含めなくてはならないとなっております。
また、上記と似たような検証をしていたサイトがあって(といっても、そちらは1年ほど前の時点での調査でしたが)、
このようにブラウザごとに差異があるので、XHRでPOSTメソッドをリクエストをする時は、
setRequestHeader('application/x-www-form-urlencoded')が ”必須” になるとも書いてありました。
一応ここまでが、Javascript側の要因です。
>>316
Perlに関しては
#1 $ENV{'CONTENT_TYPE'}の値(ブラウザからのContent-Type リクエストヘッダ)
#2 application/x-www-form-urlencoded
#3 その他(text/plainなど)自前のLWPとHTTP::Request::Commonで、適当なリクエストヘッダをでっちあげて確認した。
#8 charset=UTF-8
※.一般的なデータ取得関数を使って、変数に値をセットできるかどうか。例:CGI::Lite->parse_form_data()、CGI.pm->Vars()、
phpだと$value=$_POST{'name'}など。CGI.pmだけは特殊で、x-www・・・以外のどんな場面であっても、
"POSTED=name=value&name=value&name・・・・"とゆう形で取得できる。
0318311
2008/06/24(火) 05:57:06ID:???データ取得関数でデータを取得出来ないことと、他の一般的なモジュールで本来取得できないハズの
Content-リクエストヘッダ無しの場合でも、普通にデータを取得出来てしまえるところに、混乱した原因があるようだ。
ちなみに、上の調査の追記としては、read(STDIN.$var,$ENV{'CONTENT_LENGTH}) を使えば、
全てのパターンでデータの取得が可能。(パースとデコードは全て自分でやらないといけないですが)
しかしながら、これを各moduleのデータ取得用関数の前に持ってくると、その後の取得関数が全てコケる。(値なしになる。)
また、取得関数の後に持ってきても、その前の関数の成功失敗に関わらず、データを取得できない。(phpでは未確認)
(多分STDINに対するファイルポインタが、終端まで行ってしまっためだと思う)
今までお恥ずかしいながら、ajaxに限らず、ほとんどCGI::Liteメインで書いてきた。(GET,POSTの違いも大して意識してなかった)
それにモジュールのロードが軽い(自機での測定で、CGI.pm比約四倍早い)し、自分には、CGI.pmは機能が豊富すぎて、
使いこなせてないって思ってた。
だけど、今後のこと(新しいブラウザ対応とか)を考えるに、どうもCGI::Liteだけではやっていけなくなってしまいそう。
まあ、最終リリースからもう五年もメンテされてないんで、早く乗り換えろよってのはもっともな話だとは思うけど・・。
なんかくやしいなぁ。
313さんへ、
自分はJavascriptについては、prototype.jsやjQueryなどの外部ライブラリを使ったことがなくて、余り詳しくもないんだけど、
これからはどうしようかと検討中です。でも今回の件に限れば、自分が受け側をCGI::Liteで利用したのが原因で
多分外部ライブラリ使ってても同じ現象に遭遇してたと思います。そんな時は余計に、原因の究明に困ったかも知れません。
とゆうことで、長々と失礼しました。同じような問題で悩んでる人がいたら、参考にして下さい。
0319316貼り直し
2008/06/24(火) 06:17:21ID:???CL なし 出来る
CL #2 出来る
CL #2 #8 出来ない
CL #3 出来ない
Cp なし 出来る(※)
Cp #2 出来る
Cp #2 #8 出来る
Cp #3 出来る(※)
AR2 なし 出来ない
AR2 #2 出来る
AR2 #2 #8 出来る
AR2 #3 出来ない
php なし 出来ない
php #2 出来る
php #2 #8 出来る
php #3 出来ない
説明は>>317の通り。
CL=CGI::Lite、Cp=CGI.pm、AR2=Apache2::Request、php=php(おまけ)。
#2 #8 は application/x-www-form-urlencoded; charset=UTF-8 のこと。
Apache2::Requestのつづり間違えてた。
0320nobodyさん
2008/06/24(火) 10:11:34ID:???prototype.jsを遣わない理由がどこにある。
0321nobodyさん
2008/06/24(火) 14:59:55ID:???ttp://www.fraction.jp/log/archives/2005/03/216
prototype.jsは関係ないんじゃない?と思ったが
XMLHttpRequestでgrepしてみると
/* Force "Connection: close" for older Mozilla browsers to work
* around a bug where XMLHttpRequest sends an incorrect
* Content-length header. See Mozilla Bugzilla #246651.
*/
こんなのが。補正してるってことかな?
RequestHeaderによっては受け取れない部分はCGI::Liteの問題。
知らないとハマるから、良い検証だったと思います。乙
0322nobodyさん
2008/06/25(水) 05:30:05ID:???318です。仰るとおり、送って来るReuestHeaderが異なるのは、各ブラウザ側の挙動の違いの問題です。
その後、教えて頂いたprototype.jsのXHR周りの動作について、手持ちのブラウザで基本的な動作確認をしましたが、
やはり送ってくるRequestHeaderはブラウザごとに違います。設定によりいくらかのヘッダの操作も出来ますが、
FireFox3で、当該の"chaesrt=..."の部分を消すことは出来ないようです。
( これもブラウザにより異なります。IEでもデフォで、"charset="が付いてきたりします。
ここら辺の違いを吸収してくれるハズのライブラリで、ブラウザごとに分かち書きとかしないといけないのは、
本末転倒のような気がします。まあJavascriptのことはスレ違いになるんで、言及はここら辺でやめときます。)
0323322
2008/06/25(水) 05:30:57ID:???現在、日中平均で30req/s前後、ピーク時で90-100req/s程度のリクエストがあります。このスクリプトを導入した際に、
CGI.pmとCGI::Liteでそれぞれベンチを取ったのですが、本番環境と同一ハード,ソフトの環境で、
CGI.pmだと40rq/s位で限界、CGI::Liteだと150-160rq/s位までは持ちこたえられるとの結果を得ましたので、
CGI::Lite版を採用することに決めました。(その時は、最大50rq/s程度が想定でしたが・・・)
で、今回これと同じ処理をするcgiに、Jsからajaxリクエストを投げるような構成を考えていたのですが、
そのテストの段で、上記の>>311のような問題に行き当たったわけです。
現実問題として、速度や負荷の観点から、今回もCGI::Liteで行こうと思ったのですが、上記のような問題のため
(prototype.jsを使う使わないに関係なく)CGI::Liteが使えないので困ったなぁ とゆう感じです。
( 実は、mod_perl+Apache2::Requestでは、同様の処理で 1800rq/s! とかベンチ出たんですが、
実験的な環境のため、そのまま本番環境には投入できません。)
0324nobodyさん
2008/06/25(水) 10:26:42ID:???当然考えているとは思うけど、CGI::Lite に手を入れてしまうのがリーズナブルなんじゃないかな。
parse_form_data() 内で、
$content_type eq 'application/x-www-form-urlencoded'
と判断しているので、これを =~ にでもすればいいだけなわけだし。
0325nobodyさん
2008/06/25(水) 13:14:34ID:???0326nobodyさん
2008/06/28(土) 19:23:20ID:???<a href=>のタグをくっつけたいんですが、cgiのURLとかで?が入ってると上手く置き換えできません。
これを回避する方法を教えていただければ幸いです。
$mojiretu =~ s/$url/<a href="$url">$url<\/a>/; #$ulに?が入ってると置き換えできない。
0327nobodyさん
2008/06/28(土) 19:59:00ID:???上手く行くかどうかしらんし、根本的な解決にはならんかも知れんが、
$mojiretu =~ s/\Q$url\E/<a href="$url">$url<\/a>/;
0329nobodyさん
2008/06/28(土) 22:15:55ID:???ってどういう意味かな?
0330nobodyさん
2008/06/28(土) 22:29:45ID:???のとき、
/$str/
が
/a?b/
じゃなくて、
/a\?b/
に展開されるようにしてくれる。
0331nobodyさん
2008/06/28(土) 22:33:22ID:???それで、?があると、そのあとに続く文字が
特別な意味をもつんだな。
だからそれをエスケープ?しなくてはならなくて、
そのための呪文という意味か。よくわかりました。
0333nobodyさん
2008/07/01(火) 21:46:30ID:???make: *** [test_dynamic] エラー 255ってでるんだよ
どうしたら、解決出きるのか教えてください
0334nobodyさん
2008/07/01(火) 23:37:34ID:???config で make program を変更してみるとか、、、フォースインストール
するとか、、、
俺の場合はMath::BaseCalcじゃないけど、makeでコケた奴はソースで手動で
コンパイルして入れたりもする。
0336うっとりハムちゃん
2008/07/05(土) 00:33:32ID:NR2upuABcgiにアクセスした際に、同時に○○.phpを読み込む際のPerl記述を教えていただけると助かります。
よろしくおねがいします。
0337nobodyさん
2008/07/05(土) 09:04:26ID:???つ ``
0338うっとりハムちゃん
2008/07/05(土) 13:03:49ID:NR2upuAB例えば○○.php を読み込みたい(実行したい)場合、以下では無反応なのですが、間違っていますか?
system ("○○.php");
0339うっとりハムちゃん
2008/07/05(土) 13:38:38ID:NR2upuABphpカウンターをcgi(掲示板)実行時にも
カウントさせたいのです。
IMGタグでphpを読み込んでもいいのですが、
これだと携帯で見た時に壊れた画像マークになっちゃうので。。。
それで、cgiを実行時にphpファイルも同時実行できないかと思い、困っています。
よろしくお願いします。
0340nobodyさん
2008/07/05(土) 14:13:13ID:???systemで実行するなら/usr/local/bin/php xxx.phpとかだろうけど
それでキミの欲しいものが得られるのか?
http経由で呼ぶならそうすればいい
0341うっとりハムちゃん
2008/07/05(土) 15:00:49ID:???とても助かりました!!
どうもありがとうございました。 m(_ _)m
0343nobodyさん
2008/07/05(土) 21:27:12ID:???0344うっとりハムちゃん
2008/07/05(土) 23:02:34ID:NR2upuABsystem ("/usr/local/bin/php ○○.php");
↑これで うまくできたのですが、他のレンタルサーバーでも使おうと思ってみたら、
そっちではphpを読み込んでくれず、ソースコードが丸ごと表示されちゃいました。
サーバーによって動作は異なるのでしょうか?
0345うっとりハムちゃん
2008/07/06(日) 01:29:25ID:+aL1pH4z単純にphpカウンターを実行するだけでいいのですが。。。
0346nobodyさん
2008/07/06(日) 02:26:42ID:???そりゃあんた、その違うレンサバとやらがphp対応なのかどうかと、
phpの実行パスが/usr/local/bin/phpとは限らんだろう。
サーバによっては、httpからはphp実行出来ても、ユーザー権限で直接実行出来ないように
設定されてる場合もあるし。
0347うっとりハムちゃん
2008/07/06(日) 02:40:09ID:+aL1pH4zサーバー会社に問い合わせたところ、
system ("/usr/local/bin/php ○○.php");
で動作しますと言われました。
パスに関してはあっているようです。
0348nobodyさん
2008/07/06(日) 10:59:36ID:???KENTWEBさんのところのBASIC認証式パスワード管理pwmgrというCGIを使いたいと思っています。
サーバーはろりぽっぷなのですが
CGIプログラムの説明を読んでいると、ログの取得について、
# 【利用条件】
# 1. SSIの利用できるサーバ
# 2. 環境変数 $ENV{'REMOTE_USER'} にてユーザーIDが取得できること
# ※ 2. については、同梱の pwlog_test.cgi にてテストすること
とあるのですが、
環境変数 $ENV{'REMOTE_USER'} とは何なんでしょうか?
使えない場合、使えるようにする方法はあるんでしょうか?
教えて下さい。
よろしくお願いします。
また、他の方法でIDとホスト名をリスト化することはできないでしょうか?
0349nobodyさん
2008/07/06(日) 13:52:43ID:???0350nobodyさん
2008/07/06(日) 15:54:22ID:???固有の ID であれば良い、ということであれば、何かユニークな文字列を生成して $ENV{'REMOTE_USER'} に代入しておく手もあります。
あんまり筋の良くない手法なので元のスクリプトの動作を理解した上でどうぞ。
詳細は perlvar の %ENV ハッシュの項を見てください。
0351うっとりハムちゃん
2008/07/06(日) 16:27:06ID:+aL1pH4zsystem ("/usr/local/bin/php ○○.php");
で正常に動作するのはCLI版のPHPで、
CGI版のPHPだとヘッダが出力されるため
表示がおかしくなり、動作しないみたいです。
解決するためにはCGI版のPHPでヘッダが出力されないように
systemを行いたいのですが、その場合の記述は
どのようになるのでしょうか?
0352nobodyさん
2008/07/06(日) 17:26:48ID:???# 勘でレス
my $php_output = qx{"/usr/loca/bin/php ○○.php"};
print +(split(/\n\n/, $php_output, 2))[1];
0353うっとりハムちゃん
2008/07/06(日) 17:41:18ID:+aL1pH4zmy $php_output = qx{"/usr/local/bin/php ○○.php"};
print +(split(/\n\n/, $php_output, 2))[1];
を使わせていただきましたが、phpが実行されませんでした。。
0355うっとりハムちゃん
2008/07/06(日) 18:17:32ID:+aL1pH4zphpを実行しようとしているようですが、そのために
ヘッダが出力されるため表示がおかしくなり、動作しないみたいです。
0356352
2008/07/06(日) 18:29:36ID:???# Perl スクリプトをその場で即座に終了してよければ
exec( qw{/usr/local/bin/php -q ○○.php} );
ちなみになぜ勘なのかというと、情報がタリンからです。
ぱっと思いついた不足情報を以下に列挙しておきます。
・最終的に端末に返されるデータはどういうものか
・それは perl から返すのか php から返すのか
・Perl スクリプトで system() を呼び出す前後にどのような処理を行い、
・また、どのような出力をどこに返しているか
「phpが実行されませんでした」
・PHP処理系が起動しないのか、
・期待した表示が行われないだけなのか
「表示がおかしくなり」
「動作しないみたいです」
・おかしいとは具体的にどういうことか
・おかしいながらも表示はされているのに動作しないとはどういうことか
0357うっとりハムちゃん
2008/07/06(日) 19:15:01ID:+aL1pH4z掲示板CGIにアクセスがあった際に
phpカウンターを同時に実行(カウント)させたいのです。
とくに戻ってくる必要はなく、基本的には教えていただいた
system ("/usr/local/bin/php ○○.php");
で良さそうなのですが、問題は
CGI版のPHPでヘッダが出力されないように
systemを行うことなので、悩んでいます。
system ("/usr/local/bin/php ○○.php");
の場合、phpのヘッダが戻ってくることにより
CGIがおかしくなり、ソースコードがまるまる表示されてしまいます。
単純に、返ってくるヘッダを無効(?)にする記述があると助かります。
説明が下手ですいません。。
0358352
2008/07/06(日) 21:03:06ID:???> 単純に、返ってくるヘッダを無効(?)にする記述があると助かります。
実際に HTTP Response Header 出力が原因だとすれば、やはり、
system( qw{/usr/local/bin/php -q ○○.php} ); # -q に注目
でうまいこといきませんか。
> CGIがおかしくなり、ソースコードがまるまる表示されてしまいます。
「CGIがおかしくなり」には具体的情報がありません。
「ソースコード」は何のソースコードでしょう?
どうしてもうまくいかないときは、あっさり発想を切り換えて別の設計を試すのも一興。
がんばってください。
0359nobodyさん
2008/07/07(月) 01:56:34ID:???phpから帰って来た値(文字列)を出力する必要あるのか?
それまでの説明から、
> 掲示板CGIにアクセスがあった際に
> phpカウンターを同時に実行(カウント)させたいのです。
ってことだから、多分外部ファイルなりにカウントを保存してるんだと思うけど、
その数値がインクリメントされさえすればいいってのなら、
my $php_res = `/usr/local/bin/php *.php`; とでもして、
その受け取った戻り値の$php_resは出力させなければいい。
system()にしろ、print $php_res; にしろ受け取った戻り値をそのまま出力させようとするから、ヘッダとかでおかしくなる。
どうしても戻り値をperl側から出力したいのであれば、>>352で出来そうな気もするけど、
ひょっとしたら改行が"\r\n"かも知れないので、
for (split/\n/,$php_res){
print "$_\n" unless(m/^Content\-type:/i);
}
でどうか?(生の戻り値に"Content-type"から始まる文字列行がないことが前提だけど・・)
> ソースコードがまるまる表示されてしまいます。
これだけど、自分のごく勝手な勘だけど、上記の件とは無関係に、<? ?>が原因でね?
ちゃんと<?php ?>にしてるか〜?
0360うっとりハムちゃん
2008/07/07(月) 02:22:31ID:w0zyvflA>358
-q でヘッダを出力しないようにできると思ったのですが、ダメでした。
同様にCGIのプログラムが まるまる表示されてしまいます。
phpを実行しているのは間違いなさそうですが、
戻ってきたヘッダが、その後のcgiを無効にしちゃっているみたいです。
>359
おっしゃるとおり、外部ファイルにカウントしているので、
php自体は。あくまでも実行させるだけで、
返ってくるヘッダは無用なのです。
さっそく
my $php_res = `/usr/local/bin/php ○○.php`;
for (split/\n/,$php_res){
print "$_\n" unless(m/^Content\-type:/i);
}
と記述してみましたが、戻ってきたヘッダが邪魔をして
cgiのプログラムが まるまる表示されてしまいます。
php自体は実行させているようです。
戻り値に Content-type ですよね!?
たぶん、入っていないかと。。。
phpのほうは、
<?php
?>
ではさんでいます。
0361nobodyさん
2008/07/07(月) 05:51:43ID:???なあそれ、phpの呼び出し云々ではなくて、cgi(perl)のほうは正常に動いてる?
(例えば、print "hellow world"だけとか、php呼び出し部分をコメントアウトするとかして)
> cgiのプログラムが まるまる表示されてしまいます。
コレ見るに、その"別のレンサバ"とやらに移したときに、*.cgiに実行権限がないとか、
実行が許可されてないディレクトリに配置したとか、そこらへんは大丈夫か?
phpの戻り値に"Content-type"ヘッダがあろうがなかろうが、cgiがちゃんと実行されてたなら、
そのcgiのソースが表示されるってことはないと思う。
(仮にヘッダ出力がおかしくても、500 Internal Server Errorとかになるハズ)
0362nobodyさん
2008/07/07(月) 10:16:19ID:???0363nobodyさん
2008/07/07(月) 12:28:07ID:???0364nobodyさん
2008/07/07(月) 12:43:24ID:???0365うっとりハムちゃん
2008/07/07(月) 15:24:36ID:Q4oOUlGoCLI版PHPのサーバーでは問題なく動いています。
CGI版PHPのサーバーだとcgiも動いていますが、PHPのヘッダが
戻ってきたのが影響してプログラムがテキストで表示されちゃいます。
ちなみにcgiの実行権限等は大丈夫です。
たしかに今回はカウントに関してのみなので、
別の策を考えたいとも思っていますが、
今後も同様の悩みを抱えると困るので、
できれば解決したいと思い、皆さんのお力に頼ってしまっているところです。
0366うっとりハムちゃん
2008/07/07(月) 16:51:12ID:???数日に渡り、皆さんに親身に相談にのっていただき、大変嬉しかったです!
お騒がせしました。 m(_ _)m
0367nobodyさん
2008/07/07(月) 20:11:38ID:???を、->を使って
my $calc = Math->BaseCalc->new(digits => [0,1]);
と書いても大丈夫ですか?
0368nobodyさん
2008/07/08(火) 00:16:28ID:???質問はそれからだ
0369のの
2008/07/08(火) 00:36:18ID:???INランキングはリフレッシュジャンプを使っているので、携帯によってはリフレッシュジャンプが出来なくて
真っ白なページが表示されてしまいます。そこで、
sub r_link{
#(2.1)アクセスジャンプ処理(&r_link)
if($EST{rev_fl}){
$FORM{id}=~s/\D//g;
if($FORM{id}){
local($fl=0,@ref_list);
$FORM{id}=~s/\n//g;
&lock_rev();
open(OUT,">>$EST{log_path}rev_temp.cgi");
print OUT "$FORM{id}<>" . time() . "<>$ENV{'REMOTE_ADDR'}\n";
close(OUT);
&unlock_rev();
}
}
$EST{location}=0; #refreshジャンプにする
&location($EST{rev_url});
}
の&location($EST{rev_url});をprint<<"EOM"〜EOMに変えて、htmlタグを記入したら、PCとソフトバンクではきちんとページが表示されるのに、auではタグがむき出しになります。
何かよい方法はありませんでしょうか。
0370nobodyさん
2008/07/08(火) 12:58:18ID:???0371nobodyさん
2008/07/08(火) 14:12:44ID:???どうしたらいいでしょうか。
たとえば
@suuji = (5,4,5,4)の時
@suuji = (3,3,3,3)の時
@suuji = (1,2,9,9)の時
などです。
if($suuji[0] ==$suuji[1])||($suuji[0] ==$suuji[2])||(略) )
{print "重複してるよ\n";}
のようにひとつひとつチェックしていっても可能ですが
もっとすっきり書く方法があったらお願いします。
0372nobodyさん
2008/07/08(火) 14:27:25ID:???{print "重複してるよ\n";}
ねーよwwwww
0373nobodyさん
2008/07/08(火) 14:53:48ID:???普通はどう書くんでしょうか。
0374nobodyさん
2008/07/08(火) 14:56:36ID:???0375nobodyさん
2008/07/08(火) 15:22:07ID:???配列から重複した要素をgrepで取り出して
その数をカウント…でいいんでしょうか
0376nobodyさん
2008/07/08(火) 17:03:27ID:???ハッシュテーブルさえ理解してればどの様にでも出来る。
このスレの>>12->>15あたり読め。後は自分で応用しろ。
0377nobodyさん
2008/07/08(火) 17:10:18ID:???@res = keys %{ { map{ $_, 1 } qw( 1 2 9 9 ) } } ;
0378nobodyさん
2008/07/08(火) 17:29:42ID:???まだ完全には理解しきれてませんが、
なんか見えてきた気がします。
0379質問
2008/07/08(火) 23:51:46ID:ELkvWtkp送信ボタンを2回押さないとframe2へ出力されなくて困っています。
送信ボタンを1回押すだけで出力できるような方法を教えてください。
現在の構成ですが、
A.cgi
<form action="B.cgi" target="frame2">
と作成しています。
A.cgiではチェックリストを作って、選択したデータ(装置名)を取得するようにしています。
送信ボタンを押すとB.cgiが実行されてその結果をframe2へhtmlで出力するようにしています。
vi B.cgi
@取得したデータをCファイルへ書き込み
A取得したデータをhtmlで出力
B ` D.pl` を実施
vi D.pl
D.plがすでに起動していれば、改めてD.plを実行しない(多重起動防止)
Cファイルに何も記録がなければD.pl自体を終了させる
while(-s Cファイル){
Cファイルに何か書き込みが有る場合、
Cファイルを読み込んでその装置へデータをsnmpで取得しに行く
sleep 30;
}
状況としては、チェックリストで項目を選択し送信ボタンを押すと、1回目のB.cgiが実行されるわけですが、
B.cgi内でD.plを走らせている為(30秒ループ)、D.plが終了しない限りB.cgiが終了しないので
結果としてframe2への出力がされないようです。
次に送信ボタンを押すと、1回目のD.plがすでに起動しているので2回目のD.plは終了し、2回目のB.cgiは終了し、
frame2へも出力されます。
0380nobodyさん
2008/07/09(水) 02:49:40ID:???> B.cgi内でD.plを走らせている為(30秒ループ)、D.plが終了しない限りB.cgiが終了しないので
結果としてframe2への出力がされないようです。
D.plを呼ぶ前に「close STDOUT」 してもだめかな?
0381nobodyさん
2008/07/09(水) 03:25:24ID:???> frame2への出力
ってのが、B.cgiの2.の段階のこと?(多分違うと思うけど。3.の後の`D.pl`の後かな)
D.plを多重起動禁止とか、Cファイルに書き出しとかせずに、
B.cgiからrequireなりで呼び出して、直接その装置(何のだ?)に値するものを引数なりで渡せばええんでね?
で、戻り値をB.cgiから出力と。
これなら、ファイルのロックだとか破損だとか考えずに、B.cgiをいくらでも(cpuとメモリの限り)実行できると思うが・・。
snmpのことはよう知らんから、これではダメなのかも知れないけど。
0382nobodyさん
2008/07/09(水) 07:17:22ID:bhbbhnXI>> frame2への出力
>ってのが、B.cgiの2.の段階のこと?(多分違うと思うけど。3.の後の`D.pl`の後かな)
そうです。B.cgi内では@ABの順番で記述していますが、B.cgiが終了しないと
B.cgiの処理結果であるAが出力されないようです。
>>380 >>381
今日あたり書かれていることを勉強して試してみます。
0383381
2008/07/09(水) 10:16:07ID:???あれ、そうなの?じゃあD.plは一体何をしてるんだ?
自分の解釈としては、
A.cgi→フォーム(装置の種類?)を選択→B.cgiでそれを受け取りCファイルに書き出す
→D.plがCファイルの内容を読み取り、snmpからその装置の値(統計?測定値?)を取りに行く
→結果をB.cgiに返す→B.cgiで結果を出力 かと思ってたんだけど・・。
もし言うとおり、B.cgiの2.の部分が出力されないってことなら、>>380の方法か、
(Web鯖がApacheだと仮定して)
$| = 1;
print "Content-type....."
print " " x 256;
とかを、HTMLの出力前にやってみれば?
(確かApacheがcgiかの出力を256byte分バッファリングしたはず。だから最初に256byte分なにかを出力する)
0384nobodyさん
2008/07/10(木) 13:55:54ID:udSkOiii$FORM_DATA{$name_data}=~s/<FONT>/<FONT>/g;
$FORM_DATA{$name_data}=~s/<\/FONT>/<FONT>/g;
これでやってもうまくいかないです。
0385nobodyさん
2008/07/10(木) 14:08:18ID:???それに、スタイルシートとかJavaScriptで壊滅しちゃうよ?
0386nobodyさん
2008/07/10(木) 14:15:16ID:???0387nobodyさん
2008/07/10(木) 14:37:38ID:???「スタイルシート破壊攻撃」
というものであめぞうを壊滅させたのだ
0388nobodyさん
2008/07/10(木) 17:37:23ID:dih1cMi9ソフトバンクでの$ENV{'HTTP_USER_AGENT'}の中に含まれる
ブラウザのことなんですが、携帯のブラウザって変更できますか?
機種変えないとブラウザは変更できませんか?
0389nobodyさん
2008/07/10(木) 21:21:21ID:???0390nobodyさん
2008/07/10(木) 21:45:49ID:???0391nobodyさん
2008/07/10(木) 21:53:43ID:???0392nobodyさん
2008/07/11(金) 11:46:21ID:blsFm1gdperlで携帯サイトを作ったので個体識別情報を
パスにして重複登録を防ごうとしてるので。
0393nobodyさん
2008/07/11(金) 12:48:17ID:???0394nobodyさん
2008/07/11(金) 17:55:47ID:8w4o/9wt0395nobodyさん
2008/07/11(金) 18:02:09ID:???0396nobodyさん
2008/07/11(金) 18:24:17ID:8w4o/9wt0397nobodyさん
2008/07/11(金) 18:35:49ID:???教えると荒し幇助になるから、後は勝手にやってろ
0398nobodyさん
2008/07/11(金) 19:06:48ID:???0399nobodyさん
2008/07/11(金) 19:11:25ID:8w4o/9wtありがとうございます。
0400nobodyさん
2008/07/14(月) 09:37:28ID:???0401nobodyさん
2008/07/14(月) 12:27:09ID:???0402nobodyさん
2008/07/15(火) 23:35:01ID:xfy/3+9x別ファイルからURLを読み込んで表示させたいのですが、
$url = http://○○○.○○.jp/********/**********/************/********/****.htm 等の場合、
の$url中から http:// という文字だけを削除する記述と、
URLが長すぎる場合、20文字以降は ... で省略して表示させる記述を教えてください。
よろしくお願いします。
0403nobodyさん
2008/07/16(水) 00:07:34ID:???http の h を抜くんだね? .htm の h は抜かないんだね?
$url =~ s/^h// ;
20文字以降、、、は、
$url = +( unpack q{A20}, $url ) . '...' if length $url > 20 ;
0404402
2008/07/16(水) 00:28:18ID:WNn5k82F$url でやろうと思ったのですが、他ファイル(plファイル)から
%url% というので読み込む際の記述を教えていただけると助かります。(^^;
あと、 h だけではなく、 http:// の全てを削除したいと思います。
度々すいませんが、よろしくお願いします。m(_ _)m
0405402
2008/07/16(水) 00:36:08ID:WNn5k82F「 http:// 」 を抜きたいのです。
.htm の 「 h 」 は抜かないです。
0407nobodyさん
2008/07/16(水) 00:41:20ID:???すまんが %url% と言うのは理解出来ん。なんじゃそりゃ?
.htm 以外の h を全部抜くのは
$url =~ s/h(?!tm.?$)//g ;
あたりで何とか。
0408402
2008/07/16(水) 00:52:08ID:WNn5k82Fcgiの中で %url% という記述で呼び出しているんです。
%url% を $url に変換(?)しようと思い、
$url ="%url%";
と書いてみましたが、無反応でした。
記述が間違っているようで・・
あと、 .htm 以外の h を全部抜くのはなく、
「 http:// 」 と 「 https:// 」 を抜きたい場合は、
$url =~ s|http://|| ;
$url =~ s|https://|| ;
でしょうか??
説明下手ですいません。(^^::
0410nobodyさん
2008/07/16(水) 01:04:47ID:WNn5k82F%url% を $url に変換(?)できれば希望通りになりそうなのですが、
この記述は難しいでしょうか??
0412nobodyさん
2008/07/16(水) 01:19:18ID:???0413402
2008/07/16(水) 01:28:15ID:???cgiではなく、読み込む前のplファイル内でイジっていたら、うまくいったようです!
大変助かりました!
ありがとうございました!!
0414nobodyさん
2008/07/16(水) 04:08:39ID:???したのですがうまくいきませんでした。
このcgiはブラウザから引き渡されたデータを処理するのして記録(log)に残す
のですがInternal Server Errorになってしまいます。
perlのパスはあっていましたし、改行もLFでした。
apacheを使っている?のですが他のcgiは動いたのでapacheの設定は間違って
いないはずです。。。
cgi-lib.plを使っているのですがそれのパスが違うのと思いましたが
よくわかりません。
cgi-lib.plがあるフォルダのパスはそのフォルダをTerminalにつっこんで
でたパスをそのまんま書きました。
use lib'#ここにTerminalからのパス';みたいな感じです。
下にファイルのURLを張りましたのでどなたか教えて頂けないでしょうか?
よろしくお願いします<(_ _)>
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/356.zip
0415nobodyさん
2008/07/16(水) 10:00:31ID:???InternalServerErrorのときは、その理由も別のエラーで出てるはずだが、apacheのログはどうなってる?
0416nobodyさん
2008/07/16(水) 10:05:39ID:???[confirm.cgi]
syntax error at confirm.cgi line 43, near "print"
[reservation.cgi]
Name "main::LOG" used only once: possible typo at reservation.cgi line 19.
0417nobodyさん
2008/07/16(水) 10:07:17ID:???ちょっとやってみたが、confirm.cgi の
>print "<HTML><BODY BGCOLOR=\"YELLOW\">\n"
この行の末尾に ; セミコロンがないからsyntax errorおこしてる。
0418414
2008/07/16(水) 11:49:34ID:???返信ありがとうございます<(_ _)>
たしかにセミコロンが抜けていました;つけるとちゃんと実行はできたの
ですが記録するlogファイルは作成されるのですが中身が空なのです。
>>416さんのreserve.cgiの警告は1回だけしか変数と言う警告みたいで
気にすることはないみたいな感じで書かれていました。
ファイルでに追加書き込みの部分が
open(LOG1,">>reserve.log");
print LOG "\"$yourname\",\"$phone\",\"$email\",\"$answer1\",\"$date\",\"$stay\",\"$answer2\"\n";
close(LOG1);
みたいな感じなのですがどこかおかしいでしょうか?
ファイルが存在しない場合は新規で作成してくれました。
カレントディレクトリに存在しなければ umask 666 で新規作成する。
とありましたがそこが問題なのでしょうか?umask 666;とopen関数の後に
入れても何も書き込まれなかったのですが...。
0419nobodyさん
2008/07/16(水) 12:31:03ID:???0420nobodyさん
2008/07/16(水) 12:41:15ID:???suEXECで動いてるんだろう。
0421414
2008/07/16(水) 12:53:40ID:???回答ありがとうございます。
なんとも単純なミス・・・・
昨日から徹夜でしたので頭が回ってないようです;;
何度も確認してこれからは聞きたいと思います、ありがとうございました!
0423nobodyさん
2008/07/16(水) 22:30:17ID:WNn5k82Fパスワードで入室するだけのcgi部分なのですが、
設定された有効パスワード「$pwd」以外にも、もう一つ有効パスワード「$pass」を追加する場合、
どのようにすればいいでしょうか?
※「$pwd」と「$pass」の、どちらでも入室できるようにしたいのです。
$pass = '9999';
## --- パスワード暗号処理
sub passwd_encode {
$now = time;
($p1, $p2) = unpack("C2", $now);
$wk = $now / (60*60*24*7) + $p1 + $p2 - 8;
@saltset = ('a'..'z','A'..'Z','0'..'9','.','/');
$nsalt = $saltset[$wk % 64] . $saltset[$now % 64];
$encode_pwd = crypt($pwd, $nsalt);
}
## --- パスワード照合処理
sub passwd_decode {
if ($encode_pwd =~ /^\$1\$/) { $crptkey = 3; } # FreeBSDサーバ対応
else { $crptkey = 0; }
$check = "no";
if (crypt($pwd, substr($encode_pwd,$crptkey,2)) eq "$encode_pwd") {
$check = "yes";
}
}
0424423
2008/07/16(水) 22:33:12ID:WNn5k82F# パスワード照合
local($encode_pwd) = $pw;
&passwd_decode;
if ($check eq 'no') {
last;
&error("パスワードが違います","lock");
}
0425nobodyさん
2008/07/17(木) 06:00:10ID:???>>422
ヲーニングを出すように設定すれば出るよ。
use wanings ;
use strict ;
らへん。
0426nobodyさん
2008/07/17(木) 19:14:10ID:???0427nobodyさん
2008/07/18(金) 01:25:13ID:???実装自体は簡単で、有効なパスワードをひとつずつ順次判定して、有効なパスワードに合致した時点でその旨報告すれば良いだけです。
>>426 の言うように、単一のアカウントに複数の有効パスワードを設定する設計は必然性がなく、安全性は確実に下がるのでおすすめしません。
まさかとは思いますが万が一、全アカウントに共通のパスワードを付加しようとしているのであれば、ほとんど論外と言えます。
もしその目的なら別途管理者アカウントを実装されるのが良いでしょう。
蛇足ですが、良い本を一冊でよいので、買って読みましょう。
0429nobodyさん
2008/07/20(日) 12:53:28ID:???名前<>パス<>投稿時間<>メッセージ
などのように<>で区切りますが、<>を使う理由ってありますか?
,とか|で区切っているものも時々みかけますが、自分が見た中では
<>が一番多かったです。
0430nobodyさん
2008/07/20(日) 13:10:14ID:???,とか|だと投稿記事に普通に含まれてるので。
0431nobodyさん
2008/07/20(日) 13:16:23ID:???となると書き出しの時のエスケープに加えて読み出しの時もそのための処理が必要になる
<>だと,データに含まれてたとしても保存する時に&<&>にすればいいだけ
<>だと2バイト食うから、それなら非アスキー文字で\0とかで区切るとデータファイルを
テキストエディタで見ると変になるかもしれない
<のみで区切ると容量的には減るだろうがエディタで見たときデータ同士の区切りがピンとこないかな。。
<>の区切りがいいか悪いかはわからんが、KENTが配布してるCGIで広まったのかな?
0432nobodyさん
2008/07/20(日) 13:21:39ID:???0434nobodyさん
2008/07/20(日) 20:30:28ID:???> そういう理由がちゃんと書いてある
> 本とかWEBはあるのかな。
何かの標準というわけでもなく、特定の実装でたまたまそれ("<>")が選ばれた、というだけなので、根拠を求めるなら当該実装のドキュメントを読むのが筋だろうと思います。
0435nobodyさん
2008/07/20(日) 21:44:54ID:UlzGONXmタブ区切りを好む奴はそもそもデータを触ったことが殆ど無い。まああくまで俺の偏見だが。
0436nobodyさん
2008/07/21(月) 02:02:08ID:???0437nobodyさん
2008/07/21(月) 07:42:22ID:???<>はタブの強調表示が出来ないメモ帳向け。
0438nobodyさん
2008/07/21(月) 09:52:12ID:???aabbddedd<>1232345<>0<>qwer345566
abd<>123<>100<>derfgtg
となっちゃうデータを、見た目だけ
aabbddedd<>1232345<>0 <>qwer345566
abd <>123 <>100<>derfgtg
のように区切り文字あわせで表示してくれるようなエディタってないでしょうか。
0439nobodyさん
2008/07/21(月) 17:42:37ID:???perl -ple "s/<>/\t/g" > outfile.tsv
-> 続きは Excel で。
# 僕はその手のファイルを手編集せにゃならん事態は避けたい。
0440nobodyさん
2008/07/21(月) 18:35:14ID:???RFC4180な素朴なCSVにしておけば、間違いなく誰のExcelでも同じように表示される。
0441nobodyさん
2008/07/21(月) 20:42:22ID:???それに、OOoならフツーによめるぞ。
0442nobodyさん
2008/07/22(火) 01:36:21ID:???とか、マンドクセー ってことでしょ?(しかもExcelが覚えてくれないし)
それに知ってるやつになら問題ないけど、よく知らんやつにも配布する、とかになると
開き方説明したり、「なんでこんな形式なんだー!」とかクレーム来ることうけあい。
0443nobodyさん
2008/07/22(火) 03:23:00ID:???0444nobodyさん
2008/07/22(火) 04:52:47ID:???0446nobodyさん
2008/07/22(火) 13:14:57ID:???0448nobodyさん
2008/07/22(火) 21:48:06ID:???0449nobodyさん
2008/07/23(水) 02:02:08ID:???wqを外すとカンマを処理しなくちゃならないから俺もTSVにしてる
フォームだと通常はTAB含まれないので楽(コピペされると入るけど)
0450nobodyさん
2008/07/23(水) 02:19:31ID:???0451nobodyさん
2008/07/23(水) 11:44:47ID:???0452nobodyさん
2008/07/23(水) 21:54:07ID:???0453449
2008/07/24(木) 03:39:07ID:???どーせ見ねぇくせに・・・
0454nobodyさん
2008/07/24(木) 09:22:59ID:???0456nobodyさん
2008/07/24(木) 19:00:08ID:???だったら出力だけCSVでいいじゃん
0457nobodyさん
2008/07/25(金) 00:26:02ID:???0461nobodyさん
2008/07/27(日) 21:58:36ID:???たとえばグリニッジ標準時をを日本での何年何月何日何時何分何秒に直す方法は
あちこちで見かけます。
逆に何年何月何日何時何分何秒をグリニッジ標準時に
直すにはどんなふうにすればいいんでしょうか?
以前両方の換算をしてくれるサイトがあったと思うのですが、
URLを忘れてしまいました。
0462nobodyさん
2008/07/27(日) 23:58:37ID:???0463nobodyさん
2008/07/29(火) 15:51:40ID:PIvmZbRoどうやったらいいか教えていただけないでしょうか?
正規表現を使うのはわかるのですが、いまいち流れがわかりません
何か参考サイトなどがあると良いのですが・・
0464nobodyさん
2008/07/29(火) 21:15:42ID:???use Text::CSV;
my $csv = Text::CSV->new({ binary => 1 });
my @texlines = ();
while (<>) {
$csv->parse($_) or die $!;
push @texlines, join( ' & ', $csv->fields($_) ) . " \\\\\n";
}
print @texlines;
# よく知らんけどこんな感じでいかがかしら。
0465nobodyさん
2008/07/30(水) 10:48:48ID:???0466nobodyさん
2008/07/30(水) 21:20:36ID:???ってどういう意味
0467nobodyさん
2008/07/30(水) 22:04:23ID:???無効なディレクトリハンドル FILE を readdir() しようとしてコケました。
FILE はまだ開かれていないか、あるいは正しいディレクトリハンドルではないか、もしくは「俺は最初ッから、その FILE って名前が気に入らなかったんだよぉッッ……!」 な可能性があります。
血眼でデバグってください。
0468464
2008/07/30(水) 22:08:18ID:???てふの表て、カラム区切りが "&" で、ライン区切りが "\\" じゃなかったんですか?
実際よく知らないのでこれを機会に教えて星ス。
0469nobodyさん
2008/07/31(木) 03:07:00ID:???掲示板cgiにアクセス解析cgiを組み込みたいと思っています。
そのアクセス解析は本来SSI用で、shtmlから
<!--#include virtual="./accesskaiseki.cgi?id=123456"-->
で呼び出すようになっています。
掲示板cgi内に
require './accesskaiseki.cgi';
と記述すると、とりあえずは動いているのですが、
「id=123456」の部分を送るにはどう記述すればいいんでしょうか?
お恥しい質問ですいません。
0470nobodyさん
2008/07/31(木) 04:27:16ID:???なんでidを送る必要があるの?
0471nobodyさん
2008/07/31(木) 12:30:12ID:uEHg7ipCうまく表示できません。
構文エラーはでませんでした。
どのようにしたいかと言うと入力フォームに何かを書き込むと
投稿者のid(そのサイトに何番目にきたか)と入力したメッセージを順に表示したいのです。
メッセージと番号は他のログファイルに蓄積されていきます。
ログファイルにはメッセージは書き込まれるのですがidは空白になってしまいます;
どなたか教えて頂けないでしょうか?
ファイルはhttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/380.txtです。
初心者なので変なタグを使っているかもしれません;
0472nobodyさん
2008/07/31(木) 12:47:18ID:???この行見ればわかるでしょ
0473nobodyさん
2008/07/31(木) 12:57:37ID:???返信ありがとうございます。
\nが不要でした!直したらできたのですが
ログファイルの中身を表示ができないんですよね;
open(FILE2,"+>>log.dat");
while($line=<FILE2>){
print $line;
}
で表示されないんですよね;
datファイルのパーミッションの問題なのでしょうか?
一応chmod 666 log.datをすると
Operation not permittedとでてしまいます。
0474nobodyさん
2008/07/31(木) 15:19:42ID:???0475nobodyさん
2008/07/31(木) 15:30:28ID:???色々とすみませんでした。
0476nobodyさん
2008/07/31(木) 16:50:00ID:???0478nobodyさん
2008/07/31(木) 17:52:42ID:???これがわからんから答えにくいぞ。
0480nobodyさん
2008/07/31(木) 20:48:05ID:???解決済み
○○○○○○○
○○○○○○○
○○○○○○○
未解決
○○○○○○○
○○○○○○○
○○○○○○○
0481nobodyさん
2008/07/31(木) 21:04:23ID:???○○○○○○○
○○○○○●○
○○○○○○○
未解決
○○○○○○○
○○○○○○○
○○●○○○○
0482nobodyさん
2008/07/31(木) 21:26:52ID:???0483469
2008/07/31(木) 23:25:49ID:???解る方いたら宜しくお願いします。
0484nobodyさん
2008/07/31(木) 23:42:25ID:???0485nobodyさん
2008/07/31(木) 23:47:28ID:???./accesskaiseki.cgi の仕様によります。
閲覧可能なのであれば、同プログラムのソースを読み解いてみましょう。
運が良ければ system("./accesskaiseki.cgi", "id=$page_id") で動作するかもしれません。たぶんしないけど。
独立したスクリプトファイルで、引数が重要な意味を持つものを require するのは大抵得策ではありません。
require はコードを、あなたのスクリプト内に読み込み、あなたのスクリプトの一部分であるかのように実行します。
独立したプログラムを呼ぶなら、代わりに system()、exec()、または `` 演算子を使うとよいでしょう。
それぞれ特徴があり、適切に使い分けるべきものですから、この機会に調べてみてください。
> お恥しい質問ですいません。
ここはくだすれ。気にスンナ。
0486469
2008/08/01(金) 00:25:55ID:???>>485
有難うございます。
今まで基本が無いままに、いくつかのCGIを強引に改造したりして使っていましたが、結局は遠回りしていたように思いました。
もう少し基本的なことから調べてやってみようと思います。
>>485さんの優しいお言葉に感謝します。
0487nobodyさん
2008/08/02(土) 07:23:12ID:q/UXvg4Wいま、以下の記述により、$CがAAAの場合、「これはAAAパターンです」となるようにしてあります。
if ($A ne '' && $B ne '' && $C eq 'AAAA') {
$str = 'これはAAAAパターンです';
}
else {
$str = '';
}
これに付け足して、$CがBBBの場合、「これはBBBパターンです」となるようにしたいのですが、
その場合の記述を教えていただけると助かります。
よろしくお願いいたします。 m(_ _)m
0488nobodyさん
2008/08/02(土) 08:20:01ID:???$str = '';
if ($A ne '' && $B ne '' && ($C eq 'AAAA' || $C eq 'BBB')) {
$str = "これは$Cパターンです";
}
0489nobodyさん
2008/08/02(土) 09:04:49ID:???$str = 'これはAAAAパターンです';
} elsif ($C eq 'BBBB') {
$str = 'これはBBBBパターンです';
} elsif ($C eq 'CCCC') {
$str = 'これはCCCCパターンです';
else {
$str = '(´・ω・`)';
}
0490487
2008/08/02(土) 16:13:10ID:???できました!!
感謝しています(^^)
0492487
2008/08/03(日) 18:35:47ID:???(´・ω・`) は、もちろん使ってません(笑)
0493nobodyさん
2008/08/03(日) 19:26:28ID:???0495困った
2008/08/04(月) 00:04:55ID:???リングワールドっていうPerl言語で出来たブログを使わせてもらっているのですが、
そのブログのタイトル部にフラッシュを表示させたいのですが全くPerl言語が分からないので
やさしい方、教えて下さい。
作成者によると、現在はJPGなど画像表示が出来るようになってますが、フラッシュは無理とのこと。
改造は自由で、個人でしてくださいとの事です。
サイズは幅760ドットというのが前提らしいので、フラッシュもそれに合わせるつもりです。
多分この辺りだと思うのを次レスに書きますが、違う可能性もあるので
ttp://blog-imgs-26.fc2.com/i/k/a/ikajyef/tt.txt
に全文アップしましたので、どうぞよろしくお願いします。
0496困った
2008/08/04(月) 00:05:44ID:???my $title_html;
my $title_description_html;
if ( $title_description ne "" ) {
if ( $title_description ne "" ) {
$title_description_html .=<<HTML;
<div class="title_description">
$title_description
</div>
HTML
}
}
if ($title_image ne "") {
$title_html = <<TITLE;
<div class="title_box"><h1><a href="$config->{'toppage_url'}" class="title"><img src="$image_url/$title_image" border="0" alt="$title_str"></a></h1></div>
TITLE
} else {
$title_html = <<TITLE;
<div class="title_box">
<div style='padding:10px'>
<div class="title_string">
<h1>
<a href="$config->{'toppage_url'}" class="title">
$title_str
</a>
</h1>
</div>
$title_description_html
</div>
</div>
TITLE
0497nobodyさん
2008/08/04(月) 00:12:33ID:???0499nobodyさん
2008/08/04(月) 00:18:17ID:???0500困った
2008/08/04(月) 00:21:26ID:???作者の方に聞いたのですが、「ご自分で研究していただくようにお願いします。」
と、回答がありました・・・が、1から覚える時間が・・まぁ勝手な言い分ですが。
0501nobodyさん
2008/08/04(月) 00:23:48ID:???↑
ここからここまでの間に好きなようにhtml書いてよ。
↓
TITLE
0503困った
2008/08/04(月) 00:34:29ID:???例えばこんな感じになるんでしょうか?
$title_html = <<TITLE;
<P><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="760" height="200">
<PARAM name="MOVIE" value="http://〜〜〜〜.swf">
<PARAM name="PLAY" value="true">
<PARAM name="LOOP" value="true">
<PARAM name="QUALITY" value="high">
<EMBED src="http://〜〜〜〜.swf" width="760" height="200" type="a"></OBJECT></P>
TITLE
0504困った
2008/08/04(月) 02:24:24ID:???$title_html = <<TITLE;
<paramname=quality value=high><param name=bgcolor value=#F7F7F7>
<embed src="http://〜〜〜.swf" quality=high bgcolor=#F7F7F7 width=760 height=150 type="application/x-shockwave-flash" >
</embed>
TITLE
} else {
$title_html = <<TITLE;
<paramname=quality value=high><param name=bgcolor value=#F7F7F7>
<embed src="http://〜〜〜.swf" quality=high bgcolor=#F7F7F7 width=760 height=150 type="application/x-shockwave-flash" >
</embed>
TITLE
よく分からないので合ってても違ってもフラッシュ表示しろ!みたいにしたら出来ました!
ありがとうございました。
0505nobodyさん
2008/08/05(火) 00:04:57ID:???配列の書き方すら変わるそうで
すると、今からperl5のらくだ本とか買うのは無駄かな?
リャマはもう読破したんだが…Effectiveとか、クックブックとか、らくだ本に進んでみたいと思っています
ただ、正直安い本じゃないのでperl6の話を聞き迷っています。
それよりも、いつ出来上がるか分からないperl6の書籍を待つより、perl5のこれらの秀逸な文章を読んでしまった方がいいかな?
0507nobodyさん
2008/08/05(火) 22:10:42ID:???cpan[1]> install Gtk2
CPAN: Storable loaded ok (v2.18)
Going to read /root/.cpan/Metadata
Database was generated on Mon, 04 Aug 2008 19:02:47 GMT
CPAN: YAML loaded ok (v0.66)
Going to read /root/.cpan/build/
............................................................................DONE
Found 24 old builds, restored the state of 24
Running install for module 'Gtk2'
Running make for T/TS/TSCH/Gtk2-1.183.tar.gz
Has already been unwrapped into directory /root/.cpan/build/Gtk2-1.183-N08YV3
-- No Makefile created, won't make
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
0508nobodyさん
2008/08/05(火) 23:23:39ID:???Makefile.PL かなんかあんだろうから、そん中見て、わかんなかったら手で叩いて様子を見てみちゃどうか。
0510508
2008/08/07(木) 00:54:10ID:???>>491 参照。
どうやったらうまくいったね?
原因はなんだったんだろうね?
そういう情報が世界の役に立つのね。
感謝はおいしくいただきたいのね。
0513nobodyさん
2008/08/07(木) 03:09:13ID:???プログラム業界では特に嫌われる罠。まあそれは勝ち組って事だが、他の業界でも大抵そうだから、結局だめな罠。
まあくだ質だから、こういうのも仕方ないかw
0518nobodyさん
2008/08/07(木) 08:12:39ID:???ここ荒らされてもこまるしな
でもオフラインドキュメントにもよさはあるよ。
0519nobodyさん
2008/08/07(木) 09:13:34ID:???0521nobodyさん
2008/08/07(木) 11:02:54ID:???From: [330] デフォルトの名無しさん <sage>
Date: 2008/07/27(日) 00:15:07
>>327
勉強したいなら本ばっか読んでないで
プログラム書けよ
受験勉強じゃねーんだからw
0522nobodyさん
2008/08/07(木) 13:53:58ID:???日本語しか分からないというのなら、らくだ本じゃなくて翻訳ソフトを買うことを推奨する。
EffectivePerlは一通り読む。
クックブックは買って常備する。
Perlの質問の答えは、だいたいPerldocかクックブックのどっちかに載ってる。
0523nobodyさん
2008/08/07(木) 14:11:37ID:???オライリーの「CGIプログラミング」って、初めてのPerl読んだくらいで理解できる?
それとも、続・初めてのPerlくらいの知識が要求されるんだろうか?
0524nobodyさん
2008/08/08(金) 00:32:20ID:???BOOK:
for ( @want_to_read ) {
$book = new Book($_);
$book->read($_);
if ( $book->did_understand() ) {
$book->sale_to('Book-off');
}
else {
push @read_later, $book;
}
next BOOK;
}
0526nobodyさん
2008/08/08(金) 14:27:50ID:???0527nobodyさん
2008/08/08(金) 14:33:01ID:???0528nobodyさん
2008/08/09(土) 22:29:21ID:???Apacheはかんたんにインストールできるけど、これって自分もサーバになるってことでしょ?
セキュリティとかむちゃくちゃ怖くない?
でも設定ファイルとか超難しいし…みんなどうやって勉強したの?
0529nobodyさん
2008/08/09(土) 22:39:09ID:???0530nobodyさん
2008/08/09(土) 22:58:23ID:???そんなに難しいかぁ?
ってか、cgiやhtml的な知識だけでなく、
そうゆうことも含めてテストしたり、調整、制御できるのが、
ローカルサーバー組む利点ではないのかな?
(なにも自鯖で公開するとかって意味ではなくね。)
0531nobodyさん
2008/08/10(日) 00:23:14ID:???とりあえず設定ファイルのアクセス制限を「俺専用」に書き換えるだけの
知識でいいんだからあんまり難しく考えなくていいよ。
よく分からないままいろいろ公開してる人よりは怖がってるぐらいのほうがいいかな。
0533nobodyさん
2008/08/10(日) 20:41:19ID:SuPNfSed$aaaa= とすると、該当する数値が例えば2と5と10のように複数ある場合、
この中で一番大きい数字を $aaaa_maxにしたいのですが、記述を教えてください。
説明が下手で申し訳ないのですが、伝わった方、よろしくお願いします。 m(_ _)m
0534533
2008/08/10(日) 20:48:29ID:SuPNfSed$aaaa_max="$aaaaの中の一番大きい数値";
としたいのです。(^^;
0535nobodyさん
2008/08/10(日) 22:12:07ID:???$aaaa_max=0;
ループ{
$aaaa= ; # $aaaaをひとつ取得する (2,5,10)
if($aaaa>$aaaa_max){
$aaaa_max = $aaaa;
}
}
print $aaaa_max;
・モジュールと配列使うなら
use List::Util qw(max);
@aaaa = (2,5,10);
$aaaa_max = max @aaaa;
print $aaaa_max;
0536nobodyさん
2008/08/11(月) 00:37:27ID:???print $aaaa_max;
$aaaa が複数の値になるらしいからループ案でいいんだろうね。
0537nobodyさん
2008/08/11(月) 06:09:49ID:???0538nobodyさん
2008/08/11(月) 08:45:40ID:???0539nobodyさん
2008/08/11(月) 22:49:56ID:???0540nobodyさん
2008/08/11(月) 23:15:47ID:???0541533
2008/08/12(火) 02:23:53ID:ihBdNY6vなんとか希望通りできました。
感謝してます。
もう一つ教えていただきたいのですが・・
$total_plus = $totalの数値 + $total{'count'}の数値
としたい場合の記述を教えていただけると助かります。
よろしくお願いします。 m(_ _)m
0542nobodyさん
2008/08/12(火) 02:38:17ID:???0543541
2008/08/12(火) 02:56:40ID:???お騒がせしました。
0544nobodyさん
2008/08/12(火) 13:48:33ID:Iypx/LW1行ごとに配列にまとめたいのですがどうしたらいいでしょうか?
よろしくおねがいします。
my($fh,$cond) = @_;
while(<$fh>){
return [
$_,
$fh->eof ? undef : $fh->getline,
$fh->eof ? undef : $fh->getline,
$fh->eof ? undef : $fh->getline,
] if /$cond/;
}
return;
}
0546nobodyさん
2008/08/12(火) 17:06:12ID:???カスタマイズは自分でしてね。
use Data::Dumper ;
my @arr ;
while (<>) {
next if ! /Data/ ;
push @arr, [ $_, map{ eof() ? () : scalar <> ; } 0 .. 2 ] ;
# 一箇所限定なら、以下でも良いんじゃね?
# push @arr, $_, map{ eof() ? () : scalar <> ; } 0 .. 2 ;
# last ;
}
print Dumper \@arr ;
0547nobodyさん
2008/08/12(火) 17:06:58ID:???0548nobodyさん
2008/08/12(火) 17:28:46ID:???0550nobodyさん
2008/08/12(火) 20:56:45ID:???してしまえばヤリたい放題でつ (><;)
0551nobodyさん
2008/08/12(火) 21:51:51ID:???Can't locate File/Slurp.pm in @INC (@INC contains: ><;)
0552nobodyさん
2008/08/12(火) 22:29:55ID:???my @lines = read_file('foooooooooo.txt');
chomp(@lines);
my @list;
foreach(0..$#lines){
$lines[$_] =~ m/hogehoge/ or next;
push(@list, [@lines[$_..$_+3]]);
}
これで、ヤリたい放題になるって本当ですか?
0553nobodyさん
2008/08/13(水) 00:18:01ID:???ヤリたいコトとヤる相手とヤる場所によります。
気取ったイケメンが自宅四畳半なら >>545。
慣れない奴がミラパルコで大回転なら >>546。
絶倫がロイヤルスイートで小さい相手とヤるなら >>552。
それぞれ可能なオプションが異なります。
0554nobodyさん
2008/08/13(水) 07:03:24ID:???0556nobodyさん
2008/08/17(日) 17:53:31ID:???とやるとHTMLとしてブラウザ上に出力されるのは分かるのですが、同じようなやり方で
ファイル出力をする方法はないでしょうか?
一々
print FILE $mojiretu;
と打つのもアレなので、何か方法があったらよろしくお願いいたします。
利用環境
フリーのCGIサーバー:isweb
対象ブラウザ(関係ないと思いますが……):基本的にFireFox2,3、ie6,7、OSはwin、macで動けばいいと考えています。
以上です。よろしくお願いいたします。
0557nobodyさん
2008/08/17(日) 18:18:27ID:???アレって?
0558556
2008/08/17(日) 18:22:55ID:???申し訳ありません。
一々
print FILE $mojiretu;
と打つのも面倒なので、何か方法があったらよろしくお願いいたします。
と訂正します。
0559nobodyさん
2008/08/17(日) 18:24:59ID:???え? これ打つのが面倒なの?
プログラミングやめた方がいいよ
0560nobodyさん
2008/08/17(日) 18:25:42ID:???{ここに文字列を入力する}
{ここに文字列を入力する}
{ここに文字列を入力する}
HTML
print FILE $mojiretu;
0561nobodyさん
2008/08/17(日) 18:36:29ID:???なんたら
なんたら
HTML
0562556
2008/08/17(日) 20:07:42ID:???ヒアドキュメントというキーワード(560さんや561さんが教えてくださったもの)で調べたら、目的の物がありました。
本当に有難うございます。
0563556
2008/08/19(火) 02:01:55ID:???0564556
2008/08/20(水) 00:20:47ID:Pb480w2m0565556
2008/08/20(水) 05:37:21ID:???昨日の、スポーツドリンクがいけなかったのかしら。
0566556
2008/08/21(木) 04:50:49ID:???小さい塊が、まだ少し入っているようだ。
0567556
2008/08/21(木) 17:33:02ID:???0568nobodyさん
2008/08/22(金) 09:30:05ID:???0569556
2008/08/22(金) 09:40:41ID:???仕方なく会社で用を足す。俺の階は、大便用が3つしかないから、朝はラッシュ時に壮絶なバトルが、展開される。。。
0570nobodyさん
2008/08/22(金) 19:30:36ID:???0571nobodyさん
2008/08/22(金) 21:38:16ID:???hoge$hensu{key}のような感じなのですが…
0573nobodyさん
2008/08/22(金) 23:56:24ID:???${"hoge$hensu"}{key}
ただしこれが可能なのは以下の条件を満たす場合です:
- 対象のハッシュがパッケージグローバルであること。
- それを行うスコープで事前に no strict 'refs' して制限を緩めておくこと。
# もちろんコード全体を use strict していますよね?
より望ましい解は >>572 が言うように「シンボリックではない」リファレンスを使うことです。
リファレンスを活用した「ハッシュのハッシュ」、すなわち二次元ハッシュがあなたの望むものです。
%hoge = ();
$hoge{'hoshinoa'}{key} = 'ki';
$hensu = 'hoshinoa';
print $hensu, $hoge{$hensu}{key}, "\n";
この方法には前述のような制限がありません。
シンボリックリファレンスが strict で制限されていることからも分かるように、イマドキはこちらが主流です。
0574nobodyさん
2008/08/23(土) 00:01:15ID:???よくわかりませんががんばろうと思います><
0575nobodyさん
2008/08/23(土) 00:20:11ID:???0576573
2008/08/23(土) 00:45:43ID:???元の >>571 の質問に関する話題は perlfaq7 の "How can I use a variable as a variable name?" で詳しく触れられています。
さらに、リファレンスについては perlreftut, perlref の両ドキュメントに、また多次元配列及びハッシュについて perllol に、もっと詳しい話が載っています。
ぜひ見てみてください。
0577nobodyさん
2008/08/23(土) 00:49:36ID:???はい表示が「ほしのあき」になりましたってやかましいんじゃ、というお話だから
そんなに難しいことじゃないよ。
>>573
何か疲れてませんか。
0578573
2008/08/23(土) 00:56:40ID:???分かりやすい素敵な説明ありがとうございます。
# 認めたくないものだな……、昨日未明まで客先でトラブっててロクに寝ないまま一日働いた後だということを……。
0580nobodyさん
2008/08/23(土) 16:45:17ID:???%hash{'$hensu'} = (
'AA' => 'AA',
'BB' => 1,
'CC' => 65,
'DD' => 1200
);
のようにリストで代入することはできないのでしょうか、
perllolをみたんですけど多くの数を一度に代入する方法について載ってないような、
0581nobodyさん
2008/08/23(土) 18:49:15ID:???「多次元ハッシュ」などと事実とことなる認識の仕方を
しているから、3秒考えればわかることを思いつけないんだ。
0582nobodyさん
2008/08/23(土) 19:14:49ID:???0583nobodyさん
2008/08/24(日) 13:25:05ID:abdzrOGO環境はMac OS X 10.5.4, Perl 5.8.8です。
CPANでXML::Atomをインストールしたいのですが、
make testの段階で以下のようにFailedになっている箇所があって
インストールできません
| t/00-compile...........ok
| t/01-util..............ok
| t/02-content...........ok 1/32
| # Failed test in t/02-content.t at line 57.
| # got: 'My name is 宮川.'
| # expected: 'My name is 宮川.'
| t/02-content...........NOK 22# Looks like you failed 1 test of 32.
| t/02-content...........dubious
| Test returned status 1 (wstat 256, 0x100)
| DIED. FAILED test 22
02-contentというファイルで実際にテストしているっぽい部分は以下のようになっていました
| $content->body("My name is \xe5\xae\xae\xe5\xb7\x9d.");
| is $content->mode, 'xml';
| is $content->body, "My name is \xe5\xae\xae\xe5\xb7\x9d.";
「\xe5\xae\xae\xe5\xb7\x9d」を「宮川」という漢字として
出力できていないのが原因っぽい気がするのですが。。
解決の方向性だけでもご教示いただけると助かります。
よろしくお願いします。
0584583
2008/08/24(日) 13:32:45ID:abdzrOGO意図した通り表示されなかったのですが、
実際は以下のようにgot:〜の行には文字コード(?)、
expected:〜の行には「宮川」という漢字が表示される状態です。
| # got: 'My name is \xe5\xae\xae\xe5\xb7\x9d..'
| # expected: 'My name is 宮川.'
0585583
2008/08/24(日) 13:37:07ID:???以下のような出力でした。実際は&が半角です。
| # got: 'My name is &#x5BAE;&#x5DDD;.'
| # expected: 'My name is 宮川.'
0586nobodyさん
2008/08/24(日) 14:07:58ID:???で、\xe5\xae\xae\xe5\xb7\x9dは、UTF-8で「宮川」だ
何が知りたいんだっけ?
0587nobodyさん
2008/08/24(日) 16:23:03ID:???0588nobodyさん
2008/08/24(日) 20:05:54ID:???なんちゃら…
}
とやったら、Range iterator outside integer range と叱られました。
桁デカ杉なんでしょうか。どうすればいいですか?(><)
0589nobodyさん
2008/08/24(日) 20:12:58ID:???$content->mode は xml で合っていて、
$content->body は (x|x?ht)ml の文字参照に置き換えられている状態ですね。
その動作でかまわなければ、
t/02-content.pl 内の、
is $content->body, "My name is \xe5\xae\xae\xe5\xb7\x9d.";
を以下に変更すればそのテストに関しては通ると思われます。
is $content->body, "My name is 宮川.";
その動作ではまずい場合は、モジュール内の関連コードをいじるしかないかなあ。
0590nobodyさん
2008/08/24(日) 20:15:09ID:???0591nobodyさん
2008/08/24(日) 20:27:10ID:???ありがとうございます!
ググったら分かる人が分かる人向けに書いたドキュメントしかみつかりません(><)
もう少しググって諦めます。
0592nobodyさん
2008/08/24(日) 20:29:59ID:???0593590
2008/08/24(日) 20:43:08ID:???5.8.0 から導入された bigint プラグマを使う方法もある。遅いがちゃんと動く。
use bigint;
# あとは何も考えずに書くだけ。
# さすがにこれならおまえでもやれる。がんばれ。
# 遅いので部分的に無効にしたい場合
{
no bigint;
# bigint じゃなくてもいい処理
}
0594nobodyさん
2008/08/24(日) 20:57:43ID:???use bigint;
for (2000000000000000..3000000000000000) {
なんちゃら…
}
!Range iterator outside integer range at…
ActivePerl 5.8.8 Build 822 (><)あーーー
0595nobodyさん
2008/08/24(日) 21:22:25ID:???マルチ乙。
>>594
こう書くしかないんじゃ?
for (my $i = 2000000000000000; $i <= 3000000000000000; $i++) {
つかなんで、くだすれに質問してんだか。
0596583
2008/08/24(日) 21:22:33ID:???レスありがとうございます。
わかりにくくて申し訳ないです。
状況としては本来「宮川」と表示されるべき文字列が、
HTMLの文字参照に置き換えられて「&#x5BAE;&#x5DDD;」となっているので
make testでひっかかっているという状況でした。
>>589
ありがとうございますー。
話がわかっていただけて嬉しいです。エスパーですね。
私も先程なんとか文字参照に置き換えられているのに気付いて
モジュールのソースとにらめっこしたんですが
それらしい部分を見つけられず。。
…と思ったら、libxml2のバージョンが古いと
非ASCII文字が強制的に文字参照に変換されてしまうらしいです。
MacPortsで新しいバージョンのlibxml2を入れたら解決しました!
いろいろとありがとうございましたー。
0597use bigintの人
2008/08/24(日) 21:32:12ID:???エラーがでなくなりました!
>>593
親切に本当にどうもありがとう!!
0599nobodyさん
2008/08/24(日) 22:08:03ID:???>>590
perldoc perldiag
> Range iterator outside integer range
> (F) One (or both) of the numeric arguments to the range operator ".." are outside the range
> which can be represented by integers internally. (snip
use Math::BigInt;
my $num = Math::BigInt->new('2000000000000000');
my $addone = $num + "1";
for ($num .. $addone) { sleep 1 }
Range iterator outside integer range at - line 4.
0600nobodyさん
2008/08/24(日) 22:58:52ID:???system q|cls|;
use bigint;
use Win32::Sound;
$|=1;
#----------------------------------
for (my $i = 2000000000000000; $i <= 3000000000000000; $i++) {
say "$i";
Win32::Sound::Play("file.wav");
}
↑こりゃーおもろい
0601590
2008/08/24(日) 23:16:40ID:???おお。そゆことだったんですね。
さらに、
> One possible workaround is to force Perl to use magical string increment
> by prepending "0" to your numbers.
ということは…、
for ('02000000000000000'..'03000000000000000') {}
おおぅ、これで動作したよおい。^^;
0602nobodyさん
2008/08/24(日) 23:35:23ID:???0603nobodyさん
2008/08/25(月) 09:43:11ID:???use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
for (my $a=10000;$a>=1;$a=$a-1){
system q|cls|;
say "お前の寿命はあと".$a."秒";
}
0604nobodyさん
2008/09/01(月) 10:36:16ID:???<a href="file:///C:/Kudasure/Kudasure.pl?http://pc11.2ch.net/test/read.cgi/php/1204488452/">[Kudasurepl]</a>
とやってWebブラウザからKudasure.plを呼んでいるのですが、
?以降の文字列を取得する事が出来ません。
$ARGV[0]には入ってないし…。
うまく受け取る方法を教えてください。
0605↑ 補足です
2008/09/01(月) 10:38:05ID:???Webサーバ等は起動していません。
0606nobodyさん
2008/09/01(月) 10:48:50ID:???0607604
2008/09/01(月) 11:04:42ID:???Webサーバを常駐させたくないんです。
他にKudasure.plに文字列を渡す方法があれば教えてください。
Kudasure.pl自体は動作してます。
0608nobodyさん
2008/09/01(月) 11:22:08ID:???perl Kudasure.pl "http://pc11.2ch.net/test/read.cgi/php/1204488452/"
みたいな感じでいいんじゃないの?
0609604
2008/09/01(月) 11:43:44ID:???やりたい事はまさにそれなんですが、URLのリストが沢山あって
それを保存してます。htmlなら一覧を見られて1クリックで実行できます。
0611604
2008/09/01(月) 12:25:44ID:???リストのどれがクリックされるか分からないので
html生成時にバッチファイルを作成できません。
0612nobodyさん
2008/09/01(月) 12:26:20ID:???直接実行できたら問題あるだろjk
0613nobodyさん
2008/09/01(月) 12:31:30ID:???0615604
2008/09/01(月) 12:43:12ID:???Perlスクリプトの実行自体はfx3で問題なくできてます。
Webサーバはインストールしてありますが、
ツールのために常時起動させたくなくて質問しました。
直リン、ワンクリックで使えると便利なので。
しかし、出来ないと分かって諦めがつきました。
クリップボードで渡してみる事にします。
0616nobodyさん
2008/09/01(月) 12:49:42ID:???0617nobodyさん
2008/09/01(月) 14:21:02ID:???うちだけ?
0619nobodyさん
2008/09/01(月) 14:43:08ID:???0620nobodyさん
2008/09/02(火) 10:14:49ID:???0621nobodyさん
2008/09/03(水) 22:14:02ID:Mtq7kJsd===ソースコード===
1 #!/usr/bin/perl
2
3 $IP_addr = $ENV{REMOTE_ADDR};
4
5 if ($count = open(OUT, ">>List.dat")) {
6 flock OUT, 2;
7 print OUT $IP_addr;
8 flock OUT, 8;
9 close OUT;
10 } else {
11 $count = 100;
12 }
13
14 print "Content-type: text/html\n\n";
15 print "IPアドレス:", $ENV{REMOTE_ADDR}, "<br>";
16 print '$count = ', $count;
これを実行してみると、ファイルが開けずに$count=100が表示されてしまいます。
同じフォルダ内でopen関数は使えたので、できそうな感じはするのですができません。
どこを書き直したら、IPアドレスを記録してくれるのか教えてもらえないでしょうか。
お願いします。
0622nobodyさん
2008/09/03(水) 22:49:00ID:???List.datを作成ならそのディレクトリに実行権と書き込み権があるかどうか
0623621
2008/09/03(水) 23:04:45ID:Mtq7kJsdアドバイスありがとうございます。
解決しました・・・。
/var/www/htmlに上のスクリプトを置いてあるのですが、
/var/www/htmlとスクリプトのパーミッションは777なので、
書き込み権限はあると思います。
後はスクリプトのほうでファイルを作成してくれるのかと思いましたが、
作成されていなかったのですが、
List.datを用意してあげたら問題なく書き込めました。
open (OUT, ">>List.dat")の追加書き込みでは、ファイルがなければ作成する、と
手元の参考書に書いてあったのですが何が原因だったのでしょう・・・。
0624nobodyさん
2008/09/03(水) 23:16:56ID:???この場合、スクリプト自身のパーミッションは関係しません。
List.dat を置くディレクトリのパーミッションが重要です。
0626nobodyさん
2008/09/03(水) 23:24:17ID:???わかってしまえばこの手のことに悩まなくなるよ
0627nobodyさん
2008/09/04(木) 00:02:51ID:???ここで $count にどんな値が入るという想定になってるんだろ。
0628nobodyさん
2008/09/04(木) 18:42:58ID:???下ろしcpan モジュール名としたところ
Alert: While trying to 'parse' YAML file
'D:\Perl\cpan\FTPstats.yml'
with 'YAML::XS' the following error was encountered:
Usage: YAML::XS::LibYAML::Load(yaml_str) at D:\Perl\lib/YAML/XS.pm line 70.
というエラーらしきものがでて先に進むことがができません。他に何か必要
なのでしょうか?
0629nobodyさん
2008/09/04(木) 19:11:10ID:???0630nobodyさん
2008/09/04(木) 20:01:44ID:???0632627
2008/09/05(金) 01:45:29ID:???> Open returns nonzero upon success, the undefined value otherwise.
> If the open involved a pipe, the return value happens to be the pid of the subprocess.
こういう値を「$count に代入して表示」するコード(>>621)に疑問を持ったんだけど、読み足りない?
穴が開くほどは読んでない。
0633nobodyさん
2008/09/05(金) 01:56:39ID:???じゃあ通りすがりのおれが特別に教えてやるよ
>>621はIPアドレスを記録するのが目的で、$countは制御がどこに移ったかを確認するためだけのもの
ま、if文で必ず真偽が代入されるからelseは余計だけどな
0634627
2008/09/05(金) 02:41:42ID:???特別に教えてくれてありがとう。「else なら 100」用ということで。
$is_success ぐらいのほうが似合うぞぐらいの気持ちで書いたもんに
>>631が来るとは思わなかった。
0635631
2008/09/05(金) 02:53:49ID:???失礼した。カルシウム足りないらしい。
ブールで済む話ならむしろ代入は要らんし、
>>621 程度の処理なら or die でも事足りるところを、
あえて表示用に拾ってるなら >>633 ってことだね。
0636nobodyさん
2008/09/05(金) 10:58:48ID:???ActivePerl 5.10 で Mail::IMAPClient を使って、Gmail に接続。
未読メールの添付ファイルを取ってくる……というスクリプトを書いているのですが、
取ってきた添付ファイルが軒並み破損してしまっており、正常なものが取得できません。
具体的にどんな感じになるのかというと、
PDF = ファイルが壊れている、と出て開けない。
JPG = 画像の下の方がブロックノイズ(最後までデータができていないっぽい)
HTM = ファイルの最後の方で途切れてしまう。
TXT = ファイル末尾に謎の文字化け。(=ェ攵モ]モスクラmエ輜オラ ←こんなのが。なんだこりゃ。)
となります。
ソースは >>637 に貼ります。
どのようにしたら、正常なファイルを取得することができるのか教えていただけないでしょうか?
0637nobodyさん
2008/09/05(金) 11:00:04ID:???use MIME::Parser;
use Mail::IMAPClient;
use IO::Socket::SSL;
my $parser = new MIME::Parser;
$parser->output_to_core(1);
my $socket = IO::Socket::SSL->new(PeerAddr => 'imap.gmail.com',PeerPort => 993) or die "socket(): $@";
my $client = Mail::IMAPClient->new(Socket => $socket, User => 'user', Password => 'password') or die "new(): $@";
if ( $client->IsAuthenticated() ){
$client->select('INBOX');
my @uid = $client->unseen;
foreach my $id (@uid) {
my $message = $client->message_string($id) or warn "Timeout!";
my $entity = $parser->parse_data($message);
my $header = $entity->head;
if ( $entity->is_multipart ){
my $parts_count = $entity->parts;
for (my $i = 1; $i < $parts_count; $i++) {
my $part_entity = $entity->parts($i);
my $filename = $part_entity->head->recommended_filename;
my $filebody = $part_entity->bodyhandle->as_string;
open(FILE, ">$filename");
print FILE $filebody;
close(FILE);
}
}
}
}
0638nobodyさん
2008/09/05(金) 11:24:52ID:???超初心者用スレで質問する内容じゃないと思うけど。。。
テキストファイルも化けてるから解決にはならないと思うけど、binmodeはしたほうがいい
0639636
2008/09/05(金) 11:54:09ID:???他に質問スレが見あたらなかったもので……スミマセン。
binmode も試している(先のソースじゃ消えてしまってました)のですが、やはり同様です。
ただ、binmode にしないと JPG ファイルは読み込みすらできなくなります。
ここでかれこれ数時間詰まっちゃってますヽ(´Д`;)ノ
0642nobodyさん
2008/09/05(金) 18:25:42ID:???> どのようにしたら、正常なファイルを取得することができるのか教えていただけないでしょうか?
デバッグして問題点を見つけ出し、そこを修正すれば良い。
0643nobodyさん
2008/09/05(金) 18:44:30ID:???0644636
2008/09/05(金) 18:59:17ID:???>>641
添付無しのメール、本文を抜き取る分には問題ないみたいです。
ただ添付ファイルを拾おうとすると、前述のとおりに問題が出てしまいます。
>>643
MIME::Parser の使い方がどこかおかしいでしょうか。初めて使うモジュールなもので……。
0645nobodyさん
2008/09/05(金) 19:07:30ID:???> 添付無しのメール、本文を抜き取る分には問題ないみたいです。
> ただ添付ファイルを拾おうとすると、前述のとおりに問題が出てしまいます。
じゃあ、問題ないメールをgmailを通さずに直接パーザに食わせて見ろ。
0646nobodyさん
2008/09/05(金) 20:40:32ID:???おおお、いけました!
Mail::IMAPClient の message_to_file で一度ファイルに保存してから、
MIME::Parser で処理したら正常にファイルを取得することができました。
公開されてるモジュールでこんなこともあるんですね。勉強になりました。
0647nobodyさん
2008/09/05(金) 20:51:35ID:???品質が高いから公開されているのじゃあない。
公開してフィードバックを活かすから品質が上がるのだ。
# CPAN でもマイナーモジュールの中にはソースがアレなのもたくさんあるのよ。
解決おめでとう。
現象を David にレポートして、そのサイクルに貢献するのも一興。
0648nobodyさん
2008/09/07(日) 20:34:27ID:???現在コミュニティーサイトGaccoで有志を募集しています。
詳しい概要等は
→http://www36.atwiki.jp/vipvipschool/
こちらをご覧下さい。
・プログラミングができる方
(現在技術陣は6名です)
・ウェブデザイン・画像編集能力がある方
(現在デザイン陣は2名です)
・宣伝能力のある方
(人員募集やサイト完成後の宣伝等。動画編集ができると○。)
を募集しています。
気軽にIRCに参加、またはsuteあっと2ch.bona.jpまでメールを下さい。
スレッド:ttp://ex14.vip2ch.com/test/read.cgi/news4gep/1219068297/l50
0649nobodyさん
2008/09/11(木) 04:32:33ID:Fj1BKArt複数の行からなる配列を特定の行で行ったソートと同じ順に並び変えたいのですがうまくいきません。
例として下の@hairetu1を昇順にソートして、それと同じソートを他の4つの配列にも施したいです。
@hairetu1=[30,80,50,90]
@hairetu2=[3,8,5,9]
@hairetu3=[さん,はち,ご,きゅう]
@hairetu4=[a,b,c,d]
@hairetu5=[3305,2206,1600,1128]
↑を↓の様にソートしたいのです。
@hairetu1=[90,80,50,30]
@hairetu2=[9,8,5,3]
@hairetu3=[きゅう,はち,ご,さん]
@hairetu4=[d,b,c,a]
@hairetu5=[1128,2206,1600,3305]
みなさんは複行配列のソートはどうされているのでしょうか
お教えいただけませんでしょうか。どつぼにはまっています。
0650nobodyさん
2008/09/11(木) 05:12:08ID:???$b <=> $a −−−>小さくなる順番だから、「降順」
用語はこれで合ってる?
0651nobodyさん
2008/09/11(木) 05:13:02ID:???これってどういうルールで並び替えたのかよくわからない。
単に間違い?
0652nobodyさん
2008/09/11(木) 05:15:25ID:???↑これってそのままだと無理だよね?
まず、数字ではないから、数値ソートは使えない。
文字列ソートはできるが、それって単に
アスキーの順番に並び替えるだけだから。
だから、どうしてもというなら、ハッシュで
3→さん
8→はち
9→きゅう
みたいな対応表を作っておいて、それで
3,8,9を数値ソートする、という風にしないと
だめなんじゃないかな。
0653nobodyさん
2008/09/11(木) 08:44:59ID:???perlでHello worldと文字列を出力したいのですが表示されません
perlはc:\perlにはいってて、perl.exeはbinの中にあります
どのように書き直したら文字列を出力できますでしょうか?
#!/c:\perl\bin\perl.exe
print "<html><head><title>テストperl</title></head><body>";
print "Hello world\n";
print "</body></html>";
0654nobodyさん
2008/09/11(木) 09:24:19ID:???0655nobodyさん
2008/09/11(木) 09:32:03ID:???#!C:/Perl/bin/perl.exe
print "<html><head><title>テストperl</title></head><body>";
print "Hello world\n";
print "</body></html>";
をtest.plと保存して、
http://hoge/test.pl
をアクセスしてみろ。
0656nobodyさん
2008/09/11(木) 10:01:19ID:???0657nobodyさん
2008/09/11(木) 10:20:26ID:???0658nobodyさん
2008/09/11(木) 10:55:26ID:???用途に向いたデータ構造に変更しましょう。
> @hairetu1=[30,80,50,90]
もし本当にこうだとすると、以下と等価であり、
少々不自然で扱いづらいでしょう。
@hairetu1 = ( [30,80,50,90] );
# @hairetu1 は $hairetu1[0] に無名配列リファレンスを持つ、
# 1要素のみの配列になっている点に注意。
以下は一例です。
@hairetu = (
[qw( 30 3 a 3305 さん )],
[qw( 80 8 b 2206 はち )],
[qw( 50 5 c 1128 ご )],
[qw( 90 9 d 1128 きゅう )],
);
あとは値を比較した結果を使って @hairetu の要素を入れ換える操作を行えばおっけー。
その辺の操作は調べると見つかるのでがんばって。
0660nobodyさん
2008/09/11(木) 11:05:32ID:???0661nobodyさん
2008/09/11(木) 11:07:57ID:n+/h4em7いつまでクソ言語にしがみついてんだよテメエらwwwww
いま時代はRuby,php,pythonだろwwww
乗り遅れ乙wwwww
うぇっwwうぇwww時代に乗れなくてくやしいのうwwくやしいのうwwwwww
0662nobodyさん
2008/09/11(木) 11:13:08ID:???my @hairetu1=(30,80,50,90);
my @hairetu2=(3,8,5,9);
my @hairetu3=qw/さん はち ご きゅう/;
my @hairetu4=qw/a b c d/;
my @hairetu5=(3305,2206,1600,1128);
my @array;
for (0..4) {
push @array, join(',', $hairetu1[$_], $hairetu2[$_], $hairetu3[$_], $hairetu4[$_], $hairetu5[$_]);
}
@array = sort { $b cmp $a } @array; # <=> かもしれないけどなんとなく cmp
print join("\n", @array); # この順にしたいんですよね
Excel みたいな「行と列」を思い浮かべながら @hairetu1, 略, @hairetu5 で
再現しようとするからどつぼなんだと思う。
0663nobodyさん
2008/09/11(木) 12:05:15ID:???my @hairetu2 = (3,8,5,9);
my @hairetu3 = ('さん','はち','ご','きゅう');
my @hairetu4 = qw(a b c d);
my @hairetu5 = (3305,2206,1600,1128);
my @narabi = sort{$hairetu1[$b] <=> $hairetu1[$a]} (0..$#hairetu1);
foreach(\@hairetu1, \@hairetu2, \@hairetu3, \@hairetu4, \@hairetu5){
@{$_} = @{$_}[@narabi];
}
--
my @hairetu = ([30,3,'さん','a',3305], [80,8,'はち','b',2206],[50,5,'ご','c',1600], [90,9,'きゅう','d',1128]);
@hairetu = sort{$b->[0] <=> $a->[0]} @hairetu;
普通はこっち。
0664nobodyさん
2008/09/11(木) 12:05:27ID:???思いつくのか理解出来ん。データ構造が腐ってるってのを置いとくにしても、、、
my @ind = sort { $hairetu1[$b] <=> $hairetu1[$a] } 0 .. 3 ;
@hairetu1 = map{ $hairetu1[$_] } @ind ;
@hairetu2 = map{ $hairetu2[$_] } @ind ;
# 略
@hairetu5 = map{ $hairetu5[$_] } @ind ;
ちなみに自分でデータ構造から考えるなら二次元配列かhashにするに決ってる、こんなもん。
0666649
2008/09/11(木) 14:32:27ID:MBV8c4KU今から皆さんが教えてくれたのを全部試してやってみます。
つか自分超絶初心者です。。。
いいプログラム作れる様がんばります。
0667nobodyさん
2008/09/11(木) 14:59:42ID:???0668662
2008/09/11(木) 15:35:31ID:???俺ですね。
他の配列のソート順でgdgdしてたので、質問者さんがわかりそうな道具で
「こういう感覚ですかね?」と書こうとした(ものがアレすぎたのでお怒りになった)んですけど
寝とけばよかったです。0 .. 4 とか書いてるし。
くだすれなのに「腐ってる」「こんなもん」なんてことになってるのも、その怒りの余波だと思うので
質問者さん、すみません。
0669nobodyさん
2008/09/11(木) 18:40:06ID:h0fBdZdnコードを読んでいると$hoge[2]とかいうのはわかるんですが、
$hoge[1][0][0]=3;
$hoge[1][0][1]=5;
$hoge[1][0][2]=7;
とかいうのが出てきたんですが、これは何を意味しているんでしょうか?
0672nobodyさん
2008/09/11(木) 18:51:22ID:???0673669
2008/09/11(木) 19:14:29ID:h0fBdZdnところで、
$hoge[1][0][0]=3;
$hoge[1][0][1]=5;
$hoge[1][0][2]=7;
の場合、
@hoge=( [ [*,*,*], [*,*,*], [*,*,*] ], [ [3,5,7], [*,*,*], [*,*,*] ], …)という感じでしょうか?
だとしたら、この3,5,7だけを
@list=(3,5,7)の様にひとつの配列にするにはどうすれば良いでしょうか。
何度もすいません。
0674nobodyさん
2008/09/11(木) 19:16:46ID:???0675669
2008/09/12(金) 00:22:15ID:Oy+yCkpGありがとうございました。
0676nobodyさん
2008/09/22(月) 04:48:26ID:aVlitntf@a = ([5,8,0,50], [4,6,1,30], [3,7,1,200], [5,8,1,50], [3,8,0,150], [2,9,0,110])
grepを使って、上の配列から3つ目が1のものだけを抜き出して、
@b = ([4,6,1,30], [3,7,1,200], [5,8,1,50])
としたいのですが、どのように記述すればいいのでしょうか。
0677nobodyさん
2008/09/22(月) 07:34:12ID:???0678nobodyさん
2008/09/23(火) 04:34:43ID:???print "@$_\n";
}
↑結果を表示するには
このコードでいい?
0679nobodyさん
2008/09/23(火) 05:20:37ID:???0680nobodyさん
2008/09/24(水) 10:17:33ID:???それがだいじ
0681nobodyさん
2008/09/24(水) 15:42:32ID:???> このコードが窮極?
って質問すればいいんじゃないかな
0682nobodyさん
2008/09/24(水) 16:12:52ID:???って答えが返ってくるんじゃないかな
0683676
2008/09/25(木) 01:55:10ID:rnTIMd1pありがとうございました。
返事が遅れてすいません。
なぜかホスト規制くらって2〜3日アクセスできませんでした。orz
0684nobodyさん
2008/10/03(金) 16:52:32ID:Rl6ONEmX↓の様な記述ですが、
my $flag = (!$a) ? random(3) : random(11));
↑これは、
$aの値が無ければ3未満のランダムの数を$flagに代入、
$aの値が存在すれば11未満のランダムの数をで$flagに代入
ですよね。
ただ、↓の様なのがあって、どうしても意味がわかりません。
my $flag = (!$a) ? !($b >= random(100)) : (($c <= $a) ? random(3) : random(11));
↑これはどのように解すれば良いのでしょうか。
0685nobodyさん
2008/10/03(金) 17:22:11ID:???random てのが何を示すか分らんが…。
! ( $b >= random(100) ) は確実に0、1しか返さんから変に思えるが、
まあ、アリではあるので。
ポイントは、
1. 条件式「!($b >= random(100)) 」を式としてではなく値として利用。
2. 三項演算子の二段がさね。
my $res = COND ? TRUE_EXPR_1
: ( COND ? TRUE_EXPR_2
: FALSE_EXPR_2 ) # FALSE_EXPR_1
;
my $flag
= ! $a # CONDITION
? !($b >= random(100)) # TRUE_EXPRESSION
: # FALSE_EXPRESSION ( だかその中にさらに三項演算子)
(
($c <= $a) # CONDITION
? random(3) # TRUE_EXPRESSION
: random(11) # FALSE_EXPRESSION
)
;
分けると
my $pre_flag = ($c <= $a) ? random(3) : random(11) ;
myy $flag = ! $a ? !($b >= random(100)) : $pre_flag ;
0686Perlについて教えてください。
2008/10/03(金) 18:04:37ID:PunwVHG2コードがISO、西ヨーロッパなどとなってしまうのです。
そこで、headerの部分にcharset=を含めようとしてるのですが、
何度やっても、500エラーになってしまいます。
sub header {
print "Content-type: text/html\n\n";
print "<!--//HEAD//-->\n";
print "<html><head>\n";
print "<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">\n"
print "<title>CGI Control Panel</title>\n";
print "<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">\n"
↑
を追加して日本語になるように、お願い致します。
0687nobodyさん
2008/10/03(金) 18:06:50ID:???あと、Content-type: text/html; charset=云々
というのもあるよ。
0689684
2008/10/04(土) 09:25:08ID:S1uyMhw/なるほど、わかりました。
すいません。randomはrandの間違いでした。
my $flag = (!$a) ? !($b >= rand(100)) : (($c <= $a) ? rand(3) : rand(11));
つまり↑と↓は同じという理解で良い訳ですね。
my $flag;
if (!$a) {
$flag = !($b >= rand(100));
} elsif ($c <= $a) {
$flag = $rand(3);
} else {
$flag = $rand(11);
}
ありがとうございました。
0690nobodyさん
2008/10/04(土) 10:53:07ID:uZuIKJns↑これおすすめ!
"register_globals = on"
を推奨していることについて気をつければ・・・ですが
0691nobodyさん
2008/10/04(土) 18:05:45ID:???0693nobodyさん
2008/10/04(土) 18:16:28ID:???0694nobodyさん
2008/10/04(土) 19:36:37ID:???2
3 aaa
4
5 ******
上のようなテキスト(数字は行番号)で、任意の文字列(aaa)にマッ
チしたら、囲まれた範囲(2行目〜4行目)を別ファイルにコピーする
コードはどう書けばいいでしょうか?
自分でも調べますが、perlは全く知らないので教えてくれる人がい
ると助かります。
0695nobodyさん
2008/10/04(土) 19:50:09ID:???2: ところでaaa
3: aaa
4: aaa
5: これだと
6: aaa
7: どこからどこまでaaaが
8: aaa
9: aaa囲まれた
10: 範囲なんだ
0696nobodyさん
2008/10/04(土) 20:01:11ID:???簡単なのは「******」から次の「******」までをバッファリングして、
バッファの中に「aaa」があったらファイル開いて書き込む、とかかね。
0698nobodyさん
2008/10/04(土) 21:35:30ID:???perl -0777ne 'print grep /^aaa$/m, /^\*{6}\n(.*?)(?=^\*{6}\n)/gms ' hoge.txt >fuga.txt
正規表現一回だと結構めんど
perl -0777ne 'print /^\*{6}\n((?:(?!^\*{6}\n).)*?^aaa\n(?:(?!^\*{6}\n).)*?)(?=^\*{6}\n)/gms ' hoge.txt >fuga.txt
0700694
2008/10/05(日) 14:05:30ID:???次は一歩すすんで、↓のようなテキストの場合、2-4行目と9-11行
目を別ファイルに保存したいのです。
1 *start*
2
3 aaa
4
5 *end*
6
7
8 *start*
9
10 aaa
11
12 *end*
ファイルをオープンしてwhile文で繰り返し処理をしたら行けるの
かな、と思ったのだけど、よく考えたらwhileは1行ずつしか読み
込まないからこの方法だと駄目なのですね。
分かる人がいたらお願いします。
0701nobodyさん
2008/10/05(日) 14:13:01ID:???>かな、と思ったのだけど、よく考えたらwhileは1行ずつしか読み
>込まないからこの方法だと駄目なのですね。
なにがダメなんだ?
0702nobodyさん
2008/10/05(日) 14:19:41ID:???自分で何処まで書けたのか提示しないのも良くない。
この質問に答えた後に、「では…の様にするのはどうしたら良いでしょう?」
って来るのが目に見えてて答える気にはならん罠。
0703nobodyさん
2008/10/05(日) 14:21:12ID:???0704nobodyさん
2008/10/05(日) 14:56:18ID:???クッキーを発行しているページへ下記の様にしましたけどエラーです
どなたか手直しお願いします
やりたいことは新しいクッキーを100個くらい集めたいです
use HTTP::Request;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => 'http://hoge.jp');
while(1){
my $response = $ua->request($request);
print $response->header('Set-Cookie'),"\n";
sleep 1;
0706nobodyさん
2008/10/05(日) 15:07:27ID:???実在してたのかorz
この前、実在のアドレスは2chで晒すなと指摘を受けたので
気をつけたのに
>>705さんは私と多分どこかで遭遇してるね
いつも応援ありがとう
よろしく^^
0707nobodyさん
2008/10/05(日) 15:09:29ID:???あなたには非が無い。
0709nobodyさん
2008/10/05(日) 16:08:06ID:???0710nobodyさん
2008/10/05(日) 16:51:17ID:???全角スペースが含まれていて、}が閉じてないとか?
エラー内容が伏せられてるから、あてずっぽうで。
URLはhttp://example.com辺りを使えば被らない事がrfc2606保障されてる。
0711700
2008/10/05(日) 17:06:32ID:???Cは知っているのでその知識で強引に実現した感じ。
=========
#!/usr/bin/perl
$i = 1;
open IN, "hoge.txt";
while (<IN>) {
if (/.*start.*/) {
$flag = on;
$string = "";
} elsif (/.*end.*/) {
open OUT, ">file$i";
print OUT $string;
$i += 1;
$flag = off;
close OUT;
} else {
if ($flag eq on) {
$string .= $_;
}
}
}
close IN;
=========
perlの人からは腐ったコードに見えると思うので改良点が有ったら
教えてください。Cの人から見ても腐ってる、というのはこの際勘
弁。
0712700
2008/10/05(日) 17:38:53ID:???========
#!/usr/bin/perl
$i = 1;
open IN, "hoge.txt";
while (<IN>) {
if (/.*start.*/) {
$flag = on;
$string = "";
} elsif (/.*end.*/) {
$_ = $string;
if (!/.*aaa.*/gms) {
next;
}
open OUT, ">file$i";
print OUT $string;
$i += 1;
$flag = off;
close OUT;
} else {
if ($flag eq on) {
$string .= $_;
}
}
}
close IN;
=======
0713nobodyさん
2008/10/05(日) 19:23:20ID:???正規表現の.*はいらない。gmsもいらない
あと、状態遷移のアルゴリズムはシグナル判定(start,end文の検出)を
状態判定(flagの検出)の内側に持ってきた方がよいと思われ。
0715700
2008/10/05(日) 21:09:06ID:???「こんなのperlを最大限に使えば半分以下のコードで済む」といっ
た間違いで無ければ、さしあたってはそれでいいです。とりあえず
動くものを書いて、根本的なロジックがおかしくなければ後は修正
するだけなので。
そういった間違いではないようなので、後はこれをブラッシュアッ
プしていきます。どうもありがとうございました。
0716nobodyさん
2008/10/05(日) 21:42:03ID:???「C脳の自分」(表現が悪くて申し訳ない。悪意はないです)が不安で訊いてしまうのかな?
ループ制御できてフラグ使えてパターンマッチ使えてるんだし
指摘されてる bare word とかそんなもんじゃないすか。
> 「こんなのperlを最大限に使えば半分以下のコードで済む」
'on' or 'off' のフラグ変数でなく範囲演算子 .. でフリップフロップ(>>46の使い方)させたら便利とか
フラグ変数使うにしても文字列比較より 1 か 0 のほうが楽とかコマゴマしたのはあるけど、
動きゃいいんです。
0717nobodyさん
2008/10/05(日) 22:01:19ID:???0718nobodyさん
2008/10/05(日) 22:11:49ID:???シェバン行とuse strict; use warnings で11行。
そんなもん追求するには10年早い。
0719nobodyさん
2008/10/05(日) 23:59:23ID:???>>704です
ご指摘ありがとうございました
お陰さまで動くようになりました^^;
空行の全角スペースを削除して
最後の行に}を付け足しただけで
エラー無くなりました
ありがとうございました^^
0720nobodyさん
2008/10/06(月) 01:08:02ID:???0722nobodyさん
2008/10/06(月) 03:55:49ID:???テキスト保存できるようになったのですが
ファイル名をTES-YYYYMMDDHHMMSS.txtにする方法わかりません
どなたか教えてください
お願いします
0723nobodyさん
2008/10/06(月) 04:31:33ID:???それともファイルのタイムスタンプをファイル名にするってこと?
0724nobodyさん
2008/10/06(月) 04:41:45ID:???レスありがとうございます
>>720です
ダウンロードが完了した時刻をファイル名にしたいと思います
tes-08-10-06-04-41-50.txt
上記のようなファイル名が目標です
お時間のあるときにでも教えて頂けたら幸いです
0725nobodyさん
2008/10/06(月) 05:06:00ID:???$filename = DateTime->now(time_zone => "+0900")->strftime("tes-%y-%m-%d-%H-%M-%S.txt");
0726nobodyさん
2008/10/06(月) 06:00:00ID:???>>720です
教えて頂いたコードでテストしてみたところ
Can't locate DateTime.pm in @INC (INC contains: C:/Perl/lib .) at tes.pl line 6.
BEGIN failed--compilation aborted at tes.pl line 6.
とエラーになります
当方の環境でしょうか?
WindowsXp ActivePerl-5.8.8.822です
今日はオヤスミしますので、また明日にでも調べてみます
お疲れのところ本当にありがとうございました
0727nobodyさん
2008/10/06(月) 06:41:21ID:???use File::Slurp;
my $text = read_file('hoge.txt');
my @part = ($text =~ m|^\*start\*$((?:(?!^\*start\*$).)*?aaa.*?)^\*end\*$|gms);
for (my $i = 0; $i < @part; $i++) {
write_file('file' . ($i + 1), $part[$i]);
}
0728nobodyさん
2008/10/06(月) 06:46:14ID:???0729nobodyさん
2008/10/06(月) 07:29:33ID:???先人の残してくれたものを参考にさせて頂き
なんとか目標のものができました
みなさん本当にありがとうございました^^
use HTTP::Request;
use LWP::UserAgent;
use File::Find;
use File::Basename;
my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => 'ttp://www.ググル.co.jp/');
$i = 1;
while($n < 3){
$n++;
my $response = $ua->request($request);
print $response->header('Set-Cookie'),"\n";
sleep 1;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
@a = split($i);
$i = sprintf("TES-%s%04d年%02d月%02d日%02d時%02d分%02d秒%s", $a[0], $year+1900, $mon+1, $mday, $hour, $min, $sec, $a[1]);
open(DATAFILE, ">> $i.txt") or die("Error:$!");
print DATAFILE $response->header('Set-Cookie'),"\n";}
0730nobodyさん
2008/10/06(月) 07:58:00ID:???まあいいかw
0731nobodyさん
2008/10/06(月) 08:02:00ID:???use POSIX qw(strftime) ;
print strftime "%y年%m月%d日%H時%M分%S秒\n", localtime ;
0732nobodyさん
2008/10/06(月) 08:02:45ID:???0734nobodyさん
2008/10/07(火) 18:53:36ID:???use warnings;
use LWP::UserAgent;
use Time::Piece;
use IO::File;
my $fname = localtime->strftime("%Y年%m月%d日%H時%M分%S秒.txt");
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET=>'http://www.google.co.jp/');
my $res = $ua->request($req);
if ($res->is_success) {
my $io = IO::File->new("$fname", ">");
$io->print($res->content);
$io->close;
}
0735nobodyさん
2008/10/08(水) 23:43:58ID:???レス遅くなり申し訳ないです
サンプル作ってくれたんだ^^
ありがとう
環境の違いなのか4行目のuse Time::Piece;の部分がキャントロケートなんとかってエラーが出るんです
use Time::Piece;が当方のパソコンにインストールされていないってことなんでしょうか?
せっかく>>734さんが作ってくれたのに使えなくってすいません
ありがとうございました
0736nobodyさん
2008/10/09(木) 00:43:23ID:???0737nobodyさん
2008/10/12(日) 14:00:31ID:???配列の勉強中で下のようなのを書いたんですが、実行するとエラーになります。
どこが悪いのか分からないので教えていただけないでしょうか?
#!/user/bin/perl
$. = ",";
$\ = "\n";
@data = (3,6,7);
print @data;
%data[1] = 'six';
print @data;
%data[5] = 9;
print @data;
@data = (1,2);
print @data;
0738nobodyさん
2008/10/12(日) 14:09:49ID:???0739nobodyさん
2008/10/12(日) 14:35:35ID:???あ、基本的なところが;;
直して実行してみましたが、まだエラーになります(ノд`)
他に変なところは無いでしょうか?
0740nobodyさん
2008/10/12(日) 14:47:38ID:???%data[5] => $data[5]
0741nobodyさん
2008/10/12(日) 15:16:41ID:???0742nobodyさん
2008/10/12(日) 15:25:44ID:???ありがとうございます;;;
0743nobodyさん
2008/10/12(日) 21:56:41ID:???なんで配列の要素にアクセスするのに、
%じゃなくて$なんだよと。
0744nobodyさん
2008/10/12(日) 22:56:30ID:???0746nobodyさん
2008/10/14(火) 12:12:13ID:???0747nobodyさん
2008/10/14(火) 12:28:13ID:???0748nobodyさん
2008/10/14(火) 14:49:26ID:W0wcfnrq今HP乗せてるブロバイダでperl4が対応しなくなるので、ソーすを変更しろと
いう通知が来ました。無料公開のCGIを拾ってきて掲示板や質問を埋めて
もらってメールを受けるのを使った程度の記憶しかありませんw
4から5に変更するにはどうしたらいいのでしょうか?
0749nobodyさん
2008/10/14(火) 15:25:39ID:???0750nobodyさん
2008/10/14(火) 15:47:00ID:???0751nobodyさん
2008/10/14(火) 15:47:24ID:CJyY9JPp0752nobodyさん
2008/10/14(火) 18:34:16ID:???ssh起動してターミナルでGo。
0753nobodyさん
2008/10/14(火) 19:19:11ID:CJyY9JPpありがとう!
0754nobodyさん
2008/10/18(土) 08:37:31ID:TpRddp7o追加中に
Apache source not found, enter path name or q to quit
といわれてしまいます。
Apacheのソースコードなどが必要ということでしょうか?
Apacheのバージョンが2.2.6なのですが、ソースコードが見当たらないです。
すいませんがご存知の方教えてほしいです。
0756nobodyさん
2008/10/18(土) 11:46:59ID:TpRddp7oApache2.2.6から2.2.10にアップグレードする場合、
古いApacheを消さず、そのままアップグレードってできますか?
環境はwindowsXPです。
0757nobodyさん
2008/10/18(土) 11:48:06ID:TpRddp7o0758nobodyさん
2008/10/18(土) 18:51:00ID:???0759nobodyさん
2008/10/18(土) 21:19:53ID:???lwpでhttpsサイトのソースをgetで取ると一部が抜けてしまう
状態になったのですが、Crypt-SSLeayを削除したところ
問題なく取得できるようになりました。
最近のバージョンではCrypt-SSLeayは使わなくなったのでしょうか?
0760759
2008/10/18(土) 21:31:03ID:???あれこれやってるうちにp5-Net-SSLeayの方も入れてました。
これも消したところ接続不能に…
一方ずつ試してみたところ、Crypt-SSLeayの方では>>759の状態になるのですが
Crypt-SSLeayを削除してNet-SSLeayを入れたところ正常になりました。
LWPではCrypt-SSLeayの方を使ってたと思うんですが、Net-SSLeayに変わったのかな・・
BASIC認証もおかしくなったしportupgradeでまとめてあげたのが悪かったのか…(´・ω・`)
0761nobodyさん
2008/10/24(金) 04:49:19ID:kVbR7JUN0762nobodyさん
2008/10/24(金) 12:59:37ID:???ここに書くには面倒だな
0763nobodyさん
2008/10/24(金) 13:48:31ID:???あるPerlスクリプトでMIME::Toolsを利用しているのですが
MIME::Tools内でFile::Tempをインクルード?しようとしているときに
File::Temp Vresion 0.18 Required--This only Version 0.12と表示され
スクリプトが動作しません。
CPANではFile::TempのVer 0.12の配布は終わったらしくインストールできません。
そこでtar.gzを探してインストールしてみたのですがエラーは改善しません。
CPANでインストールしたものを-Dオプションで削除しても同様でした。
CPANでインストールしたものとtarボールからインストールしたモジュールは
同居できないのでしょうか?
もしそうだとするとこのエラーは解決しないのでしょうか。
動作OSはDebian Etchです。
0764nobodyさん
2008/10/24(金) 14:02:11ID:???> File::Temp Vresion 0.18 Required--This only Version 0.12
File::Temp Vresion 0.18 が必要--これはたったの Version 0.12
0765763
2008/10/24(金) 14:33:43ID:???レスありがとうございます。
英語を誤読していましたか。お恥ずかしいです。
で、CPANでFile::Tempと念のためMIME::Toolsを最新にしてみました。
File::TempはVre 0.20、MIME::Toolsは5.427に上がりました。
ですが元のParlスクリプトを実行すると
全く同じエラーが表示されます。
バージョン番号を誤認しているようなのですが
そもそもParlやCPANはどこでバージョンを管理しているのでしょうか。
0766nobodyさん
2008/10/24(金) 14:48:26ID:???0767nobodyさん
2008/10/24(金) 14:57:09ID:???コンソールから、
perl -MFile::Temp -e "pritn $File::Temp::VERSION" (Unix系ならシングルクオートで)
やってみ。
これで0.12が出たら、多分、システムにもともと入ってた0.12と新しく入れた0.18が共存してる。
OSとか分からんからはっきりとは言えないけど、そのシステムに合ったやり方で
モジュールのバージョンアップしないと(ActivePerlならppm、RHEL系Linuxならrpmなど)
違うファイルパスに二つのバージョンが入ってしまう、ってことも起こり得る。
0768763
2008/10/24(金) 15:22:04ID:???レスありがとうございます。
教えていただいたコマンドを実行してみましたが何も表示されませんでした。
念のためsudoにてroot権限でも実行してみましたが同じでした。
(ちなみ動作環境はDebian Etchです)
とりあえず共存の可能性があるとのことご指摘があったので
Perlのモジュールが格納されてそうなディレクトリを
調べてみたいと思います。
0769nobodyさん
2008/10/24(金) 16:55:38ID:???大変失礼した。>>767の"pritn"は"print"のtypoだ。pritnてなんだよ(w)
あと、OSちゃんと書いてたの見落としてた。ごめん。
で、なにも表示されないってことだけど、それはおかしいと思う。
(モジュールが入ってなければなんらかのエラーが出るはず。bashからなら囲いの""を’’にしてみて)
Deb系のことは詳しく知らないからあくまでも参考だけど、RHEL系の場合/usr/lib/perl5 以下に、
5.8.8とかsite_perl、vendor_perlみたいなディレクトリがいくつかあって、例えばrpmから入れたらvendorに入るけど、
tarから手動でmakeとかするとsite_perlに入ったりする。(モジュールによって違う)
0770763
2008/10/24(金) 20:41:34ID:???フォローありがとうございます。
SSHクライアントの表示がおかしかったようです。
実行結果をリダイレクトしてviで覗いたら
0.20と記録されていました。
で、途中報告です。
実は動かそうとしているスクリプトは
後出しで申し訳ないのですがほかのサーバで動作していた
Movable Type関係のスクリプトなのです。
で、Movable Type内にもPerlのライブラリがあるらしく
そちらとバッティングしている可能性が大きくなってきました。
今回Debianに移行評価テストをしているのですが
ディストリビュートのディレクトリ構成やパーミッションの違いが
影響しているのもあるようです。
引き続き調べてみて、報告したいと思います。
0771nobodyさん
2008/10/24(金) 20:50:49ID:???0772763
2008/10/24(金) 23:18:20ID:???途中経過に書いた通りなのですが
Movable Type 内にextlibというディレクトリがあり
その中にFile::Tempの0.12がインストールされていました。
動作させようとしていたスクリプトが
Movable Typeで提供しているライブラリを優先させて
インクルードさせていたために
CPANでインストールしても有効にならないということでした。
で、Movable Type内のFile::Tempをリネームして
スクリプトを実行したところバージョンチェックに引っかかりませんでした。
ただその後jcode.pmの実行中にたくさんのエラーを吐いて
処理が止まっていました。
これ以上深追いしても私の手で解決するには時間がかかると判断し
今回の評価作業は打ち切りました。
ただ今回初めてPerlでの作業を行って勉強になりました。
コメントしてくだった方に感謝します。
0773nobodyさん
2008/11/11(火) 14:43:56ID:???<html><body>1</body></html>
と表示され、test.cgi?page=2 だと
<html><body>2</body></html>
…というふうに数字が増えていき、これをpage=10までやる。
という場合どうしたらいいですか?
0774nobodyさん
2008/11/11(火) 15:10:13ID:???Content-type: text/html
<html><body>%d</body></html>
HTML
0776nobodyさん
2008/11/11(火) 16:21:08ID:???先頭の #!/path/・・・/perl とか、パーミッションとかは問題ないな?
0777773
2008/11/11(火) 16:49:28ID:???で%dと表示されるので環境に問題はないと思うのですが…。
先頭の#!/path/・・・/perl の次の行から>>774を貼り付けてtest.cgiで保存し
ブラウザでアクセスしているのですが、何か根本的に間違えていますか?
0778nobodyさん
2008/11/11(火) 16:52:57ID:???まあ普通は CGI.pm 使うとこからやった方がいいが。
0779773
2008/11/11(火) 17:15:43ID:???文末にスペースが入っちゃってました。
ありがとうございます!
0780nobodyさん
2008/11/14(金) 01:53:06ID:???送り方は何でもいいのですが、例えばこんな感じで↓
$hyouji=表示件数
$cnt = 0;
for (@logdat) {
$cnt++;
next if ($cnt < $pageno + 1);
next if ($cnt > $pageno + $hyouji);
print "$logdat[$cnt-1]<hr>";
}
print "<form action=\"$script\" method=\"post\">\n";
$next = $pageno + $hyouji;
$back = $pageno - $hyouji;
if ($next < $cnt) {
print "<input type=\"submit\" name=\"page=$next\" value=\"次の$hyouji件\">\n";
}
ただ、元のCGIに以下のような記述があり、どうすればこれを保持したまま上のボタンが
機能するようになるのかがわかりません。
my($cl)=$ENV{'CONTENT_LENGTH'};
read(STDIN, $a, $cl);
foreach (split(/&/, $a)){
($arg, $val)=split(/=/, $_);
$val =~ s/\+/ /g;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego;
}
undef $a;
どうかご教授ください…
0781nobodyさん
2008/11/14(金) 02:08:39ID:???0782nobodyさん
2008/11/14(金) 02:18:37ID:???0783nobodyさん
2008/11/14(金) 02:45:52ID:???0784nobodyさん
2008/11/14(金) 02:53:52ID:???0785nobodyさん
2008/11/14(金) 22:30:27ID:SnXSZwdHprint ("RlNG" ne uc "ring");
0786nobodyさん
2008/11/14(金) 22:43:17ID:???0787nobodyさん
2008/11/15(土) 08:06:22ID:???0788nobodyさん
2008/11/15(土) 14:37:47ID:???じっくりやりたいならまずCを勉強する。そうすれば
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_toc.html
オンラインマニュアルで充分だ。
0789nobodyさん
2008/11/15(土) 19:04:08ID:???>>787さん
実は私も超初心者で何からどうすればよいのかわかんなかったので
2chで聞いてみた
たまたま答えた人がこう言ったんですけど(その後、誰もフォローもしないので)
おもいっきり信じてしまいました
「Perlでなんでもできるよ。Perlは簡単なので初心者向きだよ」ってね
しかし、Perlにできることは限られていました
それに簡単ではありません
ちょっと込み入ったことをやろうとしたら
参考書20冊買いました。でもできませんでした。
何が言いたいのかというと
Perlで時間潰すくらいなら初めからCがいいです。もしくはC++ね
Perl使いの最高峰レベルで難しいことやるよりは
Cプログラマヘタレレベルのほうが簡単に色んなことができました
VC++がいいかも知れません
Cはプログラムの王様です
やりたいことが難しいことになるほど
いずれCにいかなきゃなあって思うはずだよ
それなら最初からCかC++の方が絶対いいよ
私はPerlスレでオモイッキリ小馬鹿にされまくって結局何もできないまま挫折しました
今はCの超〜〜〜初心者ですが既に私のやりたいことできました
悪いことはいわないのでCかC++(VC++なら無料でできます)がいいよ
Perlスレの解答者は自己満足で人をけなしてばかり
あなたをオモチャにするだけで、あなたの役には立ちません
マジでCかC++がいいとおもう
もし、どうしてもPerlに拘るのならここで質問しない方がいい
いじくられて小馬鹿にされるだけです
CからみたらPerl使いなんて何もできないヘタレですよ
そのくせ生意気にも人様を小馬鹿にするのが趣味なんです
とにかくC(もしくはC++またはVC++)です!
0790nobodyさん
2008/11/15(土) 19:59:23ID:???お前perl or C以前にセンス無いからやめちまえ。
参考書買って「読む」って事が分ってないだろ…
「実際の例題とか自分で打って実行してみる」
それが「読む」って事だよ。
0791nobodyさん
2008/11/15(土) 20:01:25ID:???0792nobodyさん
2008/11/15(土) 20:25:57ID:???RubyかPythonあたりにしなさい。
0793nobodyさん
2008/11/15(土) 20:27:24ID:???ここの連中はこうやって煽るばかりです
そして私が質問するとできないのでみんな消えちゃうんですよw
20冊読んでってわかんないから挫折したんだよ
Cのほうが圧倒的にいいよ
Perlなんて何もできないくせに難しいだけ
やっと覚えてもちょっと計算するか文字列扱うくらいだろ
例えば半自動でいいからヤフーのIDを10分で200個作れるのか
そう3秒に1個ね
できてから言え!
ここで迷解答してればいいよ
>>787
とにかくPerlやPHPやjavaスクリプトとかはやらないほうがいい
JAVAも遅い
Cだよ
も少し込み入ったことやるならC++
VC++使えばPerlより簡単だ
貼り付ければほぼ完了だもん
Perlは口ばっかし
お前らやってみろよヤフID
私は簡単にVC++で作れたよ
あのままPerlやってても多分、今でも作れなかったと思う
そういうサンプル皆無なんだもん
そのくせ「なんでもできる」だからねw
はらいてー
LWPだっけあれでどこまでできるか試してみればいいだろ
何もできないよ
0794nobodyさん
2008/11/15(土) 20:33:12ID:???どうした迷解答者
また言い放題で消えちゃったか
そうなると思ってたよ
はよヤフID3秒で作れるソースくれくれ
ほらほら
0795nobodyさん
2008/11/15(土) 20:34:55ID:???自分じゃ何もできないくせに
おら
はよヤフID製作マシーンだせよ
お前らホント口先だけだな
C++がいいよマジで。
0796nobodyさん
2008/11/15(土) 20:41:53ID:???私は挫折したけど
ホント今、思い出しても
振り回されっぱなしで何も習得できなかったよなあ
おい20冊読んでわからん奴はむいてないとか言った奴
お前は早急にヤフーID製作ソフト作ってみ
私はC++で1日で作れたよ
お前は人様を小馬鹿にするんだから
私より早く作れるのを頼むよwww
口先くん
まあ、未だにPerlで作れないけど
別にいいよ
私は前から言ってたけどPerl覚えるためにPerlやるんじゃないって
簡単に挫折しないで目標を達成
これを以前言ったら「それPerl」って言われたけど
Perlじゃなにもできないよ
Perl解答者はヤフーId1分間に20個以上は作れるのか?
私はPerl全くできないのと同じレベルだけど
私は作ったよC++でね
簡単さ
0797nobodyさん
2008/11/15(土) 20:44:46ID:???作ってから言え!
PerlじゃC++の足元にも及びません
世界中が認めますよ
それなのにPerlできない奴を見つけて遠吠え
情けないやつらだ
0799nobodyさん
2008/11/15(土) 20:53:32ID:???サーバサイドって作れるように言語がそういう仕様なんだから作れて当たり前
私がクライアント操作を知りたいって言えばみんな消える
サーバサーバサーバ
どの解説書もサーバサーバサーバ
うんざり!
そんなことより本当に必要な解説書はPerl本にはなかったな
私の言う本当のクライアント操作のサンプルはPerlではない
0800nobodyさん
2008/11/15(土) 20:57:10ID:???そういう時代じゃないと思う
Perlの解説本を買えば
みーーーーーんな
お決まりのCGI
サーバサイドって言う割には遅すぎて細かいことは
「サーバサーバ」の掛け声でごまかしちゃう
さーば!さーば!さーば!
もうちょっとクライアント側に詳しい解説本はないのか探しまくったけど
ない
当たり前だ
Perl自体が、私の言うクライアント操作できないじゃん!
さーば!さーば!さーば!あほか。
0801nobodyさん
2008/11/15(土) 20:59:31ID:???もっとゴロゴリ力業の必要な私が言うクライアント操作なんて夢物語
サーバ!サーバ!って言ってるあいだはわかんあいだろね
本当に難しいのはクライアント操作だったんだ
0802nobodyさん
2008/11/15(土) 21:01:56ID:???その割には
サーバとしては小回りきかない
中途半端
ほんと時間の無駄だったわ
こんなのでクライアント操作を模索してた自分が無知すぎて
perlの実態わかったとき自分をワロタ
0803nobodyさん
2008/11/15(土) 21:03:08ID:???あほか
解説本どおりにすりゃあほでもできる
そんなことよりクライアント操作だ
Perlじゃ無理!!!!
0804nobodyさん
2008/11/15(土) 21:06:40ID:???なんでもさーば!
絶対さーば!
さーばさいどは凄いんだぞ〜〜
さーば信者はカス
本当に難しいのはクライアント操作
それをここで聞いてた私も速く気づけばよかったとオモイッキリ後悔してるよ
こいつらクライアント操作はできないくせに
サーバのことがわかったら一人前に
人様を小馬鹿にしやがって。
さーば!さーば!さーば!さーば!・・・死ぬまでやっtればいいよ
0805nobodyさん
2008/11/15(土) 21:08:07ID:???perl使いだけですよ
細かなことができないのに
なんでサーバサイドなんだよ
CGI作れるってだけだろ
ぽかーーーーん
0806nobodyさん
2008/11/16(日) 01:41:39ID:???参考書20冊買いました。でもできませんでした。
↓
Perl使いの最高峰レベルで難しいことやるよりは
Cプログラマヘタレレベルのほうが簡単に色んなことができました
ちょっと込み入ったことはできなかったが最高峰には到達したようだ。
0807nobodyさん
2008/11/16(日) 05:58:56ID:???0808nobodyさん
2008/11/16(日) 06:04:08ID:???それがたまたまUNIX系サーバに載ってるって事でCGIを作るのに丁度良かっただけ
この痛い奴はどんな幻想持ってたんだ?
Perl云々でなく自分が無能だって事を理解しようね
0809nobodyさん
2008/11/16(日) 10:21:26ID:???0811nobodyさん
2008/11/16(日) 15:43:33ID:???CGIがPerlで書かれてるから勉強したいだけなんです。
ちょっといじって改造とかしたいんです。
0812nobodyさん
2008/11/17(月) 09:13:31ID:???こうですか?
0815nobodyさん
2008/11/18(火) 09:18:08ID:???Googleだけでなんとかなりそうだけど、
そうじゃないならどうなんでしょうか?
0816nobodyさん
2008/11/18(火) 09:41:28ID:???ローカル環境で動作テストすれば試行錯誤しても誰にも迷惑かけないしね。
0817nobodyさん
2008/11/18(火) 22:42:46ID:???chomp($a);
$b=int($a);
$b%=0xFF;
printf("%0x",$b);
getcで受け取った1文字のアスキーコードを表示したいのですが
上のコードを実行しても"0"しか表示されません。
どうしたらいいでしょうか?
0818nobodyさん
2008/11/18(火) 22:49:27ID:???・getcの行で「a(リターンキー)」を押したら「61」と16進数で表示される
これがやりたいことです。
0819nobodyさん
2008/11/18(火) 23:25:03ID:???0821nobodyさん
2008/11/19(水) 08:25:12ID:Fi86N1yA掲示板が出ません、
clip.cgi?mode=check にアクセスしても404になりますし
ドメインのアドレスをクリックしても、アップロードしたファイルがそのまま出てくるだけで
1週間悩んでもわかりません><
アドバイス頂けませんか? サーバーはさくらのレンタルでライトプランです
0822nobodyさん
2008/11/19(水) 09:11:55ID:???/home/アカウント名/www/ にCGIをアップロードして実行権限与えるだけのようだが
一週間の悩んでたのならまず落ち着け
0823821
2008/11/19(水) 11:48:01ID:Fi86N1yA先ほど掲示板は出ました、
しかし、掲示板から画像投稿しても画像が出ません><
imgデェレクトリには、投稿した画像はあるのですが、画像がでません
$ImgUrlはサーバーの説明ページを見てやったので間違いないと思うのですが…
0824nobodyさん
2008/11/19(水) 12:14:18ID:???0825821
2008/11/19(水) 12:33:43ID:Fi86N1yAありがとうございます! おかげでできました!
0826821
2008/11/21(金) 11:44:39ID:+lsYQ29gkentwebさんの画像アップ掲示板(clipboard)にカウンターをつけたいのですが
調べても、解説しているサイトが無くて
どなたかヒントでいいので教えて頂けませんか?
0827nobodyさん
2008/11/21(金) 11:57:00ID:???0828nobodyさん
2008/11/22(土) 14:19:29ID:???OSはWin2k SP4です
どうすればインストール出来るのでしょうか?
0829nobodyさん
2008/11/22(土) 18:38:31ID:???つ VC2008(2005)Express + nmake + mysqlclient.lib(libmysql.dll)
つ http://theoryx5.uwinnipeg.ca/ppms/
お好きな方を
0831nobodyさん
2008/11/29(土) 12:59:08ID:060X3luIあ い う え お か き く け こ
と文字列があり、リロードする度に2回ずつ表示させるにはどう書いたら良いか教えてほしいです。
一回目 あ
二回目 あ
三回目 い
って感じです。宜しくお願いします。
0832nobodyさん
2008/11/29(土) 13:40:07ID:???0833nobodyさん
2008/11/29(土) 21:05:33ID:???my $num = 0;
for $num (0 .. 20) {
$num = $num/2;
print $words[ $num%@words ], "\n";
}
0834831
2008/11/30(日) 01:08:25ID:???ありがとうございました。
0835nobodyさん
2008/11/30(日) 18:06:10ID:???my @words = qw(あ い う え お か き く け こ);
{
my $call = 0;
sub _idx {
int($call++/2);
}
}
while (my $val = $words[_idx()]) {
print "$val\n";
}
0836nobodyさん
2008/12/09(火) 19:35:05ID:???ボタンを押して表示されるURLが「test.cgi?page=1?Word=○○」になるようにしたい
<form action="test.cgi?page=1">と書いても?以降は無視されちゃうんですが
何か方法ありますか?
0837nobodyさん
2008/12/09(火) 19:48:00ID:???0838836
2008/12/09(火) 19:53:00ID:???とやると、URLが「test.cgi?Word=○○」になってしまいます。
「?page=1」を入れるにはどうしたらいいでしょう
0839nobodyさん
2008/12/09(火) 21:57:27ID:???<input type="hidden" name="page" value="1">
<input type="text" name="Word">
0840836
2008/12/10(水) 07:22:57ID:???すみません それだと「test.cgi?page=1&Word=○○」になってしまいます
Wordの前を「?」にしたいので、hiddenではできないかなと思ってたんですが
できるのでしょうか
0841nobodyさん
2008/12/10(水) 08:06:09ID:???順番的な話だけなら記述する行を逆にすればいい話だけど
0842836
2008/12/10(水) 08:45:47ID:???アクセス数の内訳を把握するためにURLを表示させたいのですが、
同じ内容を表示するにはURL内のpageとWordの前に
それぞれ?がないとだめなようなので。
formの記述でなんとかなるかなと思ったんですが、無理ですか…
他の方法を考えます。ありがとうございました。
0843nobodyさん
2008/12/10(水) 11:15:13ID:???プログラムを頂いてActive perl5.6ではしっかり動作したのですが、
5.8.8環境下で一応動くものの、日本語が文字化けして意味不明になります。
ググッた所では日本語の処理方法が違う?見たいな事がチラホラ見えます。
日本語処理で5.6を5.8.8においてそのような違いが有るのでしょうか?
対処方法が有れば、ご教授お願いします;
パッチの置き場所が問題?w
動作環境
5.6 XP ルート設定有り マイコン→ユーザ1→プログラム置き場
5.8.8 XP 設定なし マイコン→Cドライブ→直置き
0844nobodyさん
2008/12/10(水) 11:24:04ID:???5.8対応するならUTF-8前提で書き直したほうがいいと思う。
0846nobodyさん
2008/12/10(水) 11:41:47ID:???>>844
やはり文字コードが変更されていたんですね;;
書き直し・・・強引に動かす方法無いですかね?(有れば)
無理が有りすぎならプログラム書いた人に相談してきます。
>>845
テンプレート?練習用テンプレで書いてみるって事でいいですか?
急いで探してみます><
0847nobodyさん
2008/12/10(水) 12:17:15ID:???0850nobodyさん
2008/12/14(日) 13:24:40ID:???一つのファイルで全部やるよりも、
書き込み.cgi
閲覧.cgi
管理人用.cgi
検索.cgi
などのように、処理の種類ごとに
ファイルを細かく分けた方が、体感軽いとかありますか?
0851nobodyさん
2008/12/14(日) 13:32:50ID:???0852nobodyさん
2008/12/14(日) 14:18:58ID:???ありがとうございました!
0853nobodyさん
2008/12/15(月) 17:24:02ID:???ループごとにカウントしてlastだと管理しにくいので良い方法を探しています
0854nobodyさん
2008/12/15(月) 19:30:03ID:V2NIPW0rfor(0..$num)とでもしとけば?
0857nobodyさん
2008/12/15(月) 22:03:34ID:???0858nobodyさん
2008/12/15(月) 22:05:31ID:???0859nobodyさん
2008/12/15(月) 22:08:55ID:???レスしても混乱するだけだろ。
0860nobodyさん
2008/12/16(火) 00:25:05ID:???0861nobodyさん
2008/12/16(火) 00:47:33ID:???0864853
2008/12/16(火) 12:06:04ID:???質問の仕方が悪くて申し訳ないです。
例えば配列の値を見るとき、
my $count=0;
for (@array) {
print $_;
$count++;
last if $count>1000;
}
等、終了条件を決めて抜ければいいんですが
ループの度にカウンターを設定してカウントって面倒ですよね?
意図としては>>861のように、何もせず、あるいはもう少し簡単にブレイクする方法があれば
教えて頂きたいというものでした。
PHPだとmax_execution_timeで実行時間を制限できます。
Perlだとそういったものは無いのでしょうか?
0865853
2008/12/16(火) 12:09:30ID:???×for (@array) {
○foreach (@array) {
0866nobodyさん
2008/12/16(火) 12:19:48ID:???854氏が既に書いてるが、
for my $i ( 0 .. 999 ){
print $array[$i] ;
}
0867853
2008/12/16(火) 12:35:45ID:???for my $i ( 0 .. $#array ){
print $array[$i] ;
}
こんな感じでしょうか。
あれれ?配列の場合、無限ループにはなり得ない??
0868nobodyさん
2008/12/16(火) 13:16:54ID:???0869nobodyさん
2008/12/16(火) 13:57:42ID:???$i=1;
foreach(@array){
print $_;
$array[$i+1]=$array[$i];
$i++;
}
こんな悪戯とかは。
0872nobodyさん
2008/12/17(水) 08:19:35ID:???俺は意外と無いんだけど…
0873nobodyさん
2008/12/17(水) 10:44:54ID:JyAZ5ywx0874nobodyさん
2008/12/17(水) 10:53:59ID:???取得できたらファイル保存してスリープ
を繰り返す
0875nobodyさん
2008/12/17(水) 11:28:15ID:JyAZ5ywxcronとかそういうのがあると聞いたんですが
0876nobodyさん
2008/12/17(水) 11:33:30ID:???書いた
cron使えるサーバならそれでいける
0877nobodyさん
2008/12/17(水) 12:12:50ID:JyAZ5ywx2つの場所にある cgi が、十分短い時間だけスリープして相手を呼び出すってどうでしょう?
0878nobodyさん
2008/12/18(木) 11:45:09ID:???2つのCGIで呼び合うというのは作ったことがあるができるよ。
システム占有率が目立たなければ問題ないと思う。
cronが使えればそれに越したことはないと思うが
0879JyAZ5ywx
2008/12/18(木) 11:54:13ID:pPcqWUbs0880nobodyさん
2008/12/19(金) 19:42:45ID:???ファイルの先頭に追加書き込みをする処理を行いたいのですが、
読み書きモードで開いて、ファイルを全て配列に読み込み、
unshiftで先端に追加してファイルに書き込みをしなおし、
するやり方と、
上書きモードで新しいファイルに追加を書き込み、
それから読み込みモードで元ファイルを開いて中身を新しいファイルに書き込み、
unlinkとrenameをするやり方では、
どちらの方が良いのでしょうか?
また、この二つ以外にオススメのやり方があれば教えて下さい。
0881880
2008/12/19(金) 20:00:28ID:???通常の掲示板の書き込み保存ファイルなどだけを扱うつもりです。
0882nobodyさん
2008/12/19(金) 20:13:08ID:???できれば先頭に追加書き込みする仕様を変えるとかは選択肢にないの?
0883nobodyさん
2008/12/19(金) 20:22:02ID:???読み込むときにreverseなどをした方が良いのでしょうか?
0884nobodyさん
2008/12/19(金) 20:23:05ID:???ブラウザでファイルの中身を表示するときのことです。
掲示板でいうと記事一覧表示などです。
0885nobodyさん
2008/12/19(金) 20:26:00ID:???0886nobodyさん
2008/12/19(金) 20:38:36ID:???読み込みは一番多いところでは1秒に30〜100回程あります。
ただ、少ない時間(朝〜昼など)は読み込みも1分に1度程度になる時期もあります。
静的なhtmlというと、書き込みのたびにhtmlファイルの形に書き出す感じでしょうか。
確かにそうしている掲示板スクリプトなどは閲覧が早いですよね、
そういったことはやったことがないので調べてみます、
難しそうに感じますが試してみます。ありがとうございます。
ログファイルへの書き込み自体は、末尾に追加書き込みをし、
閲覧時にreverseするやり方が良いのですか?
サーバーは専用サーバーを借りております。
ただ私に知識が足りないので、基本的な運用は管理者の方に任せている状態です。
必要なモジュールなどはお願いして入れてもらっている形です。
0887nobodyさん
2008/12/20(土) 00:27:59ID:???CPAN の File::ReadBackwards を使うという手もあります。
何故住人が口を揃えてファイル先頭への追記を忌避するかというと、
必然的にいずれかのステップでファイル全体のコピーを必要とするため、
空間的にも時間的にも効率が悪いからです。
また、読出し負荷を下げるために静的ファイルを利用する際には、
投稿ログファイルのタイムスタンプとキャッシュのタイムスタンプを比較して、
キャッシュのほうが新しければキャッシュをただ投げ返すといった方法もとれるでしょう。
がんばってください。
0888nobodyさん
2008/12/20(土) 00:56:27ID:???0889nobodyさん
2008/12/20(土) 22:09:13ID:???win環境です。
パスワードセットして解凍するです。
よろしくお願いします。
0891nobodyさん
2008/12/20(土) 22:53:25ID:???zip解凍ソフトの実行ファイルをオプション付きでPerlからたたく
これで解決
0892nobodyさん
2008/12/20(土) 22:54:40ID:???wwwwww
CPAN つかえよwww
0893nobodyさん
2008/12/21(日) 18:51:35ID:???./movies/loli.zip
~$
0894nobodyさん
2008/12/22(月) 12:53:17ID:???0895nobodyさん
2008/12/22(月) 20:16:30ID:Vaq4WjNPそこで読み込んだhtmlファイルに変数を埋め込んでcgiから出力したいんです
簡単なデータ構造なら埋め込む方法は何個か思いつくんですが、記事とか記事のタイトルとか、配列やハッシュの配列などをどう処理しようか悩んでます
一般的にはどういう方法を取るもんなんでしょうか
0896nobodyさん
2008/12/22(月) 20:26:01ID:???0898nobodyさん
2008/12/22(月) 20:57:44ID:???Tenjin - the fastest template engine in the world
http://www.kuwata-lab.com/tenjin/
0899nobodyさん
2008/12/22(月) 21:01:36ID:???extlib にゴミが大量に入ってて当初のコンセプトはどこにあるのかさっぱりだけどwww
0900nobodyさん
2008/12/22(月) 23:07:11ID:TJyyzWEdall skipped: Perl 5.8.1 or later required
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/enc_module.t 2 512 3 2 66.67% 2-3
3 tests and 6 subtests skipped.
Failed 1/24 test scripts, 95.83% okay. 2/5850 subtests failed, 99.97% okay.
make: *** [test_dynamic] エラー 29
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
Perlのバージョンを今の5.8.0から5.8.1以上に上げないといけないのでしょうか?
0901nobodyさん
2008/12/22(月) 23:09:31ID:???0902895
2008/12/23(火) 00:34:22ID:ZaYeCOkcありがとうございます
とりあえずのところ、一番わかりやすかったHTML::Templateを使ってみることにしました
できれば勉強のために自分で作ってみたかったんですが、ソースコード見て諦めましたw
0903nobodyさん
2008/12/24(水) 03:27:20ID:DJKrSH/Sなんとか関数と暗号でググると コードとか詳しく説明してあるがイマイチ
0904nobodyさん
2008/12/24(水) 23:13:25ID:???0906nobodyさん
2008/12/25(木) 00:45:10ID:eRkadvZc0907nobodyさん
2008/12/25(木) 10:37:40ID:???おれはCatalystとか使える環境でやってるから、レンサバのかたの事情は
よく分からんのだけど、speedy_cgiレベルでもキツい?
speedy_cgiオケなら、初めはCGI::Application(Titanium)でやって
負荷が増えてきたたらspeedy_cgi化するってのがよさそうだけど。
0908nobodyさん
2008/12/25(木) 21:09:02ID:???0909nobodyさん
2008/12/26(金) 00:56:21ID:???例えば、mod_perlは同じユーザーで、プロセス使い回しで実行されるから、かなり危険。
SpeedyCGIはどうなの?
0910nobodyさん
2008/12/27(土) 00:59:07ID:???0912nobodyさん
2008/12/28(日) 06:40:16ID:???0913nobodyさん
2008/12/29(月) 10:09:26ID:p2M05RZ+#!/usr/local/bin/perl
print "Refresh: 3;http://google.com/","\n";
print "Content-type: text/html\n\n";
print "a";
exit;
0914nobodyさん
2008/12/29(月) 10:19:37ID:???0915nobodyさん
2008/12/29(月) 14:53:03ID:???0916nobodyさん
2008/12/31(水) 22:39:26ID:vTUPxBETってな感じで繰り返すのですがyahooへ三回飛ばしたい場合
if ($count>=0 and $count<=4){
print "Location:$word_5\n\n";
}elsif ($count>=5 and $count<=9){
print "Location:$word_5\n\n";
}elsif ($count>=10 and $count<=14){
print "Location:$word_5\n\n";
三回書くのではではなく
:$word_5 = 3
みたいな感じで数字で回数を指定するにはどう書いたら良いでしょうか?
できたらコピペで使えるような答えが欲しいです・・・お願いします。
http://test.testars.com/link.txt ソース
http://test.testars.com/link.cgi
0917916
2008/12/31(水) 22:42:28ID:???$word_5 = 9
みたいに書く方法無いでしょうか?
0918916
2008/12/31(水) 22:43:52ID:???すいません
0919nobodyさん
2009/01/02(金) 02:39:12ID:???use strict;
my @num_url = (
"2,http://www.yahoo.co.jp/",
"3,http://www.goo.ne.jp/",
"2,http://www.google.co.jp/");
my $file = "./count";
my ($fh, $count);
open($fh, "<", $file) or die "error";
$count = <$fh>;
close($fh) or die "error";
chomp $count;
my $num_url;
my $i = 0;
for $num_url (@num_url) {
my ($num, $url) = split(/,/, $num_url);
if ($count >= $i and $count < $i + $num) {
print "Location:$url\n\n";
}
$i += $num;
}
$count++;
if ($count >= $i) {
$count = 0;
}
open($fh, ">", $file) or die "error";
print $fh $count;
close($fh) or die "error";
0921nobodyさん
2009/01/03(土) 21:24:01ID:xUjko049cgi掲示板を連ねてレンタル掲示板を作ろうかと検討しています。
そこで、全てのフォルダにある掲示板cgiに広告を表示させたいのですが、
MTみたいなモジュールを使って表示させることを掲示板cgiで可能なのでしょうか?
サーバー内
┏bbs1(レンタル)フォルダ
┣bbs2(レンタル)フォルダ
┣bbs3(レンタル)フォルダ
┣bbs4(レンタル)フォルダ
┣bbs5(レンタル)フォルダ
┣bbs6(レンタル)フォルダ
┣bbs7(レンタル)フォルダ
以下どんどん追加
全てに共通した広告を出す。
また、広告の修正なども、1つを修正すれば全てに反映されるようにしたい。
0922nobodyさん
2009/01/03(土) 21:37:02ID:???0924nobodyさん
2009/01/03(土) 23:50:12ID:xUjko049それを聞いてんだろカス!
教えてやる知識ねーならくんなよボケw
0925nobodyさん
2009/01/04(日) 00:16:52ID:???バカにはわからないようだ。ww
0926nobodyさん
2009/01/04(日) 00:24:01ID:???0927nobodyさん
2009/01/04(日) 00:31:33ID:???教えてもらえないバカは回答得ようと必死でマルチしてるが、
俺は教えなくても何にも困って無いぞ。
0928nobodyさん
2009/01/04(日) 00:55:27ID:???複数掲示板に対応するスクリプトをひとつ用意した方が楽じゃないか?
まあ、ム板にもあったように広告用モジュール作って、読み込ませればいい。
0929nobodyさん
2009/01/04(日) 03:50:47ID:???>教えてやる知識ねーならくんなよボケw
自分に対して「教えてやる」って・・・
まず日本語から勉強じゃまいか?
それ以前に幼児に対するような躾が必要そうだがw
0930nobodyさん
2009/01/04(日) 10:21:21ID:???0931nobodyさん
2009/01/04(日) 10:28:04ID:???ここの解答者は頭おかしいから期待できないよ
知ってても教えないし
知らないくせに知ってる振りをして質問者を罵倒して楽しんでる
人間として未熟なのが多いよ
2人くらい解答はまともな人居てるけど
気分屋ってとこは他のカス解答者と一致してる
俺だったらbbs0(基本bbsこれはレンタルで使わない)を作って
他のフォルダにあるbbsからbbs0を読み込む
0932nobodyさん
2009/01/04(日) 11:30:03ID:???>924やお前みたいなバカは相手にする気も起きないが
まともな質問者に対してはちゃんと答えてる
お前も過去にマヌケな質問して相手にされなかったクチか?
あと、お前も日本語の勉強し直せw
0933nobodyさん
2009/01/04(日) 11:52:32ID:???あなたの言うまともな質問者なんて極少数だろね
>>924は煽りっぽくなってるけど
わからないから質問してるように思うよ
解答者を煽るためのトラップ質問じゃないよ
俺はどう答えればわからないから答えれないけど
わかるんなら解答してあげてください
>>924
解答者すべてにまともに答えていたらケンカになっちゃうよ
解答がスグに欲しいのはわかるけど
逆切れ書き込むより質問内容を充実させた方がいいと思う
ただし、後だし条件は嫌われるので
やりたいこと全てを一気に質問せずにひとつづつゆっくりまったり
0934nobodyさん
2009/01/04(日) 16:53:44ID:???それでも質問するのは、本当の難問にぶつかった人か、
あるいは異常者。
0935nobodyさん
2009/01/04(日) 18:07:23ID:???そもそもここは重複・隔離スレなんだからまじめに答えるな。
この板の初心者質問スレとム板の質問箱だけで充分だ。
0936nobodyさん
2009/01/04(日) 18:12:19ID:ca/zCwOYム板
てどこの板のことでつか?
0937nobodyさん
2009/01/04(日) 22:14:51ID:???0938nobodyさん
2009/01/04(日) 23:20:32ID:???てどこの板のことですか?
0939nobodyさん
2009/01/04(日) 23:29:16ID:???マー板はプログラマー
0940nobodyさん
2009/01/05(月) 05:09:26ID:???ちなみにプ板はプロレス板。
0941nobodyさん
2009/01/05(月) 08:36:42ID:???0942nobodyさん
2009/01/09(金) 15:09:32ID:sHD2/VBK0943nobodyさん
2009/01/09(金) 15:30:58ID:dxaSQaiQ坂東
0944nobodyさん
2009/01/09(金) 16:48:31ID:???#!/usr/bin/perl
for ($i=1; $i<1000; $i++)
{
if( $i<10 ){
$x = $i * 0.00001;
system( "./実行プログラム $x > Data/data4.0/output000[$i].txt");
}
els if(($i>9) && ($i<100)){
$x = $i * 0.00001;
system( "./実行プログラム $x > Data/data4.0/output00[$i].txt");
}
els if(($i>99) && ($i<1000)){
$x = $i * 0.00001;
system( "./実行プログラム $x > Data/data4.0/output0[$i].txt");
}
else{
$x = $i * 0.00001;
system( "./実行プログラム $x > Data/data4.0/output[$i].txt");
}
}
で、実行すると、
syntax error at ./cycle1.pl line 9, near "){"
syntax error at ./cycle1.pl line 13, near "){"
syntax error at ./cycle1.pl line 16, near "}"
Execution of ./cycle1.pl aborted due to compilation errors.
のようなシンタックエラーが出てしまいます。どこの文法が間違っているのかわからず。
どうか、アドバイスお願いします。
ちなみに、実行プログラムは、具体的なプログラム名が入ります。
0946nobodyさん
2009/01/09(金) 17:17:11ID:???そうでした・・
教えてくださりありがとうございました。
こんなことで3時間考えてた自分がはずかしーーーーーーーーー
0947nobodyさん
2009/01/10(土) 07:38:22ID:???0948nobodyさん
2009/01/10(土) 19:47:19ID:???って言われかねないこんな世の中では
0950nobodyさん
2009/01/11(日) 14:16:29ID:???0951nobodyさん
2009/01/11(日) 19:23:36ID:oQI3lzQfif($test){
&left;
}else{
&right;
}
この場合leftへ行きますがこの場合でもrightの内容って
メモリ上に書き込まれるんですか?多分書き込まれますよね・・・?
0952nobodyさん
2009/01/11(日) 19:26:29ID:???0953nobodyさん
2009/01/12(月) 02:39:30ID:???今、メールの受信をきっかけにプログラムが動くように、
.forwardを使用したperlスクリプトを組んでいるのですが、
レンタルしたサーバのヘルプに分からない点があり、
そのサーバのヘルプにあるサンプルプログラムすら動かない状況です。
ヘルプには、
「.forward はローカルアカウント(@の左側がユーザー名)へのメールに対してのみ効果を生みます。」
と書いてありますが、この意味も恥ずかしながら良く分からず、
【ユーザ名@取得ドメイン】のメールアドレスにメール送信しても、
指定の.plファイルが動かない状態です。
このスレでお聞きする事では無いかも知れませんが、
どこでお聞きすれば良いのかすら分かりません。
些細な事でもかまいませんので、是非とも教えて下さい。
宜しくお願いします。
0954nobodyさん
2009/01/12(月) 03:31:43ID:???サンプルプログラムが用意されていてそれが動かないなら鯖の中の人に言うしかないね
0955nobodyさん
2009/01/12(月) 04:51:28ID:???お返事ありがとうございます。
.forward には、
|/home/ユーザ名/test.pl
test.pl には、
#!/usr/bin/perl
use Jcode;
my($mail) = join("", <>);
open MAIL, ">>/home/ユーザ名/forwarded_mail.txt" or die;
print MAIL jcode(\$mail)->euc;
close MAIL;
となっており、
上記はレンタルサーバのヘルプからの例をコピペしたものです。
要するにメールを受信したら、
それをforwarded_mail.txtに書き込むというスクリプトです。ソースや.forwardを置くディレクトリは間違ってないと思うのですが、
ローカルアカウントのメールに対してのみ効果を生む、という、その意味が知識不足な故、分かりません。
ローカルアカウントのメールアドレス「ユーザ名@取得ドメイン」の、
メールアドレスは送信は出来るけど受信が出来ないアドレスでした。
yahooフリメから↑のローカルアカウントのメールアドレスに、
テストメール送信を行いましたがエラーでyahooに帰ってきます。
しかしローカルアカウントアドレスからyahooにメールすると、
yahooに届くという一方通行となっているみたいです。
何か思い当たる点がありましたら、
どんな些細な事でも良いので教えて頂けたら幸いです。
0956nobodyさん
2009/01/12(月) 12:32:16ID:???0957nobodyさん
2009/01/12(月) 13:16:09ID:???などという訳のわからないことを言っている状態で、やらないで欲しい。
> 何か思い当たる点がありましたら、
SMTP関連をちゃんと勉強すること。
SMTPのプロトコルやDNSのMXレコード、サーバ上でのdispatchの手順など。
さらには、>>956 の言うことなど。
思い当たる点だらけ、で、数冊の本になりそうな状態だと指摘しておく。
0958nobodyさん
2009/01/12(月) 17:50:00ID:tJlllgzBですよね。ありがとうございました。
0959nobodyさん
2009/01/13(火) 01:49:52ID:???ご指摘ありがとうございます。
自分が今回やりたい事に関係する知識が乏しい事はとても自覚しております。
仕事の関係で全く知識のない分野をやる事になり、全てが手探り状態です。
また、レンタルサーバのヘルプにある.plファイルや.forward等を配置し、
ローカルアカウントへメール送信する。 という作業以外に、
他に色々と知識や作業が必要という事でしょうか。
てっきり、.fowardを置いてローカルアカウントにメールを送れば、
.forwardに指定されている.plが実行されるのかと思っていました。
>>957さんの記事に書いてある事について、しばらく勉強してみようと思います。
ありがとうございました。
0960nobodyさん
2009/01/13(火) 04:23:02ID:???perlで書かれたプログラムをダウンロードしたのですが、
使い方として、
・本体(exxeed.pl)は編集の必要がありません。
・cpiファイルにスクリプトを追記して、動作を指定します。
・起動方法
コンソールから
> perl exxeed.pl hogehoge.cpi
とだけ書かれているのですが、
起動するにはどうすればいいのですか?
コンソールから、の意味が分かりません。
0961nobodyさん
2009/01/13(火) 04:25:09ID:???0962nobodyさん
2009/01/14(水) 13:53:56ID:???ググれ粕
WindowsXPだと仮定して
ウィンドウズキー+R
cmdと入力してEnter
cd (Alt+半角)デスクトップ
perl -cw ×××.pl
syntax OK
perl ×××.pl
0963nobodyさん
2009/01/14(水) 14:27:04ID:???コンソールが分からんのにperlをどうやってインストールしたの?
>>962
というわけでそのやり方でもダメな気がする。
0964nobodyさん
2009/01/14(水) 17:00:54ID:???別にWindowsにインストールしたのであればコンソール関係無いし。。。
インストーラーでWindowsにPerl入りますよ、知らないの??
まあ>>962はWindowsでの話だしUnix/Linuxでは少し変わってくるな。
0966nobodyさん
2009/01/14(水) 17:23:33ID:???ここで話されてるのは、『コマンドラインインタフェース』という意味での「コンソール」。
Wikipedia読めばわかるが、本来の意味とはちょっと違って使われているわけです。
0967960
2009/01/14(水) 19:04:12ID:???サーバーにアップして使いたいのですが、
ローカルで実行するプログラムであって、
サーバーで実行することはできないという事ですか?
0969nobodyさん
2009/01/14(水) 20:56:14ID:???0970960
2009/01/14(水) 20:57:18ID:???シェルから実行すればサーバー上で実行できると言うことですよね?
でもシェルから、、という意味がよくわかりません。
サーバー上のcronを使うのかと始め思ったのですが、違うみたいですし、、
0971nobodyさん
2009/01/14(水) 21:04:34ID:VxBaEqTh0972nobodyさん
2009/01/14(水) 21:06:23ID:???ローカルで実行したいの?CGIから?
0973nobodyさん
2009/01/14(水) 21:09:42ID:VxBaEqTh0974nobodyさん
2009/01/14(水) 21:39:16ID:???| | | レ | | | | | J || | |
| | | J | | | し || | |
| レ | | レ| || J |
J し | | || J
| し J|
J レ
/V\
/◎;;;,;,,,,ヽ
_ ム::::(l|l゜Д゜)| …
ヽツ.(ノ::::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
0975nobodyさん
2009/01/14(水) 22:04:03ID:???チンコ出すところまでやってあげな。
0977nobodyさん
2009/01/14(水) 22:17:50ID:???もうちょっと自分で調べる努力しないと、後々つらいと思うけど
とりあえずヒント。
まずあなたがサーバで実行したいPerlのプログラム(スクリプト)を
あなたのパソコンからサーバへコピーしてください。
サーバをパソコンからリモートコントロールするために
通信ソフト(Telnetとかターミナルとかいろんな名前がある)で
サーバに通信できるようにしてください。
サーバと繋がってWindowsのコマンドプロンプトのように
キーボードから命令が打ち込める画面になったら
そこで>>960にあなたが書いた
"perl exxeed.pl hogehoge.cpi"を入力してください。
運が良ければサーバであなたがダウンロードしたプログラムが動くかもしれません。
これはあくまでもヒントです。具体的な手順は書いていないつもりです。
分からない用語や言葉があれば自分で調べてください。
調べる気がないのなら、あなたにそのプログラムを動かす事は出来ないと思ったほうがいいです。
>>974
釣り針にあえて釣られてみた。
>>975
とりあえずチンコの出し方は書いてみたが
この程度なら自分の服を汚す可能性は高いよな。
0978nobodyさん
2009/01/14(水) 22:23:20ID:???0979960
2009/01/14(水) 22:25:12ID:???とりあえず、頂いたヒントを参考にチンポ挿入を試みてみます!!
0980nobodyさん
2009/01/14(水) 22:26:51ID:???0981nobodyさん
2009/01/14(水) 22:30:53ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。