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


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

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



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

201 名前:nobodyさん mailto:sage [2008/05/14(水) 04:27:20 ID:???]
>>200
そう、だから気合がいる。昔そんなのを書いてて、
「こんなん苦労して書く必要あんのかよ?しかも1サイトにしか通用しねえし・・」
とか思ったこともあるけど、気合(笑)でカバーした。あの頃は若かった。

202 名前:196 mailto:sage [2008/05/14(水) 04:44:38 ID:???]
みなさん情報ありがとうございます
ブラウザ無しでできるって事ですね
ブラウザ無しでデータをやり取りすると速いんじゃないかと思うのですが
実際どうでしょうか?
込み合ってるサイトもスイスイですか?

203 名前:nobodyさん mailto:sage [2008/05/14(水) 05:50:58 ID:???]
>>202
それは、相手のサーバーの処理能力とか、回線状態による。
まあそのページが、Javascriptやら画像やらフレームやらで大変込み入った内容なら
ブラウザでレンダリングするよりかは早くなるかも知れん。
(向こうのレスポンスについては、こっちからじゃなんもでけん)
けど、HTMLを正規表現等でパースして、ifで場合分けして、Formに内容セットしてとかしてたら、
はっきり言ってブラウザでクリックしたりしてするのの楽さと比べて、そんな恩恵あるとは思えん。
なにより、そうゆうコード書くのにかなり気合を要する(w)。

まあやるのは自由だけど・・・。
DDosアタックでも仕掛けるのなら話は別だが・・。

204 名前:nobodyさん mailto:sage [2008/05/14(水) 06:19:24 ID:???]
スイスイ具合は「画像オフ・JSオフ・CSSオフ」のブラウザと大差ないよ。レンダリングの有無だけ。
「Perlで書けばスイスイ!」だけを期待してるんだったら、やめれと。
でも、HTMLをパースしてCookieも食べて、フォーム仕立てて送信、お返事をパース…の繰り返しを書いて
意地でもPerlで注文してやる、というマゾな考えならそれはそれでありなのかもね。

205 名前:nobodyさん mailto:sage [2008/05/16(金) 00:52:53 ID:???]
近所の古本屋さんでオライリーPerl リソースキット UNIX版Xと記載されたperlの解説本を発見!
定価15000円らしいのだが2000円の値札が付いている
CD付属でそのCDは未開封
パラパラッと立ち読みしたらWindows環境にも通用しそうな気がするんですよ
自分はWindows環境なんだけどこの本は勉強なりそうですか?
付録のCDはWindows環境でも使えそうですか?
ご存知の方お願いします


206 名前:nobodyさん mailto:sage [2008/05/16(金) 12:23:26 ID:???]
>>205
それ、解説書じゃなくて、CPANにある
モジュールのドキュメントを和訳しただけのものだから。
しかも10年前のものだから。
www.oreilly.co.jp/out/presuni/



207 名前:nobodyさん mailto:sage [2008/05/16(金) 16:32:25 ID:???]
>>206さん
ありがとうです
UNIXと記載がありますが2000円捨てるつもりで買ってみようかと思います
他にも古い本でプログラミングperlUNIXとか600円で売っていたんですよ
Windowsで動くのか心配だけど一緒に買ってみます

208 名前:nobodyさん mailto:sage [2008/05/16(金) 16:37:16 ID:???]
XPのためにWin98の本買うようなもの
最新のドキュメントを探したほうがいい
古いの見ても混乱するだけ

209 名前:nobodyさん mailto:sage [2008/05/16(金) 16:45:50 ID:???]
>>208さん
そうだなー
そう言われればその通りですよね
やっぱり見合わせます
ありがとうございます



210 名前:nobodyさん mailto:sage [2008/05/16(金) 17:18:48 ID:???]
Perlほど解説本なしでネットでまかなえるプログラミング言語はないだろう

211 名前:nobodyさん mailto:sage [2008/05/19(月) 01:43:18 ID:???]
コマンドプロンプトからユーザエージェントして返ってきた文字列が
英数字以外は文字化けしてます
コマンドプロンプト内で読めるように教えてください
jcode.plもエラーになります

212 名前:nobodyさん mailto:sage [2008/05/19(月) 01:52:01 ID:???]
>>211
意味がわかりません。
> コマンドプロンプトからユーザエージェントして
とはどうゆうことですか?

213 名前:nobodyさん mailto:sage [2008/05/19(月) 02:16:27 ID:???]
わかんないならスルーしろよ
なんで答えるの?
教えたらわかりそうなのか?

214 名前:nobodyさん mailto:sage [2008/05/19(月) 02:24:16 ID:???]
>>213
いやあ、多分LWP-UserAgentのことかなとエスパー。
ほんで取ってきたページのソースがcp932じゃないから
コマンドプロンプトで文字化け。

実は俺も昔やったことがある。
だから聞いてみた。

215 名前:nobodyさん mailto:sage [2008/05/19(月) 02:26:22 ID:???]
>>214
ぅぉぉぉー ヽ( ゚д゚)ノヽ(゚д゚ )ノ ぅぉぉぉー
わかってんじゃん
それそれ
cp932をも少し詳しく

216 名前:nobodyさん mailto:sage [2008/05/19(月) 02:27:15 ID:???]
「CLI で LWP を飛ばしたら、CP932 じゃない文字列が返ってきます」まではわかるから、
もう一段階進んで
「jcode.pl は UTF-8 を知らんぞ」でいいのかな。

217 名前:216 mailto:sage [2008/05/19(月) 02:29:01 ID:???]
つーか、質問者さんがその態度で通すんだったら移動してくださいな。

くだらない質問でもど偉そうに聞いていいスレ
pc11.2ch.net/test/read.cgi/php/1158647441/

218 名前:nobodyさん mailto:sage [2008/05/19(月) 02:40:29 ID:???]
>>215
次からは、もちっと質問を詳しく。

ほいで解決方だけど、
perl 実行したいスクリプト.pl > kekka.html
とでもして、そのファイルを各種文字コードで開けるエディタ(秀丸、TeraPad等)で開く
もし持ってなければ、とりあえずIEで開けばなんの文字コードかはわかる。
or
use Encode;(5.8以降標準で入ってる)
で文字コードをcp932に変換。

>>216
その可能性もあるかもだけど、多分、もともとのページの文字コードが分かってなかったら使えない。
(と思ったが、自動判別出来るんだっけ?もう長いこと使ってないから忘れちまった。)

あと、$response()->as_string() あたりでサーバーからのレスポンスヘッダが読めるから、
それでそのページの文字コードを判別しい。(か、もしくはhtmlの中の<metaを探すか)

219 名前:nobodyさん mailto:sage [2008/05/19(月) 02:50:31 ID:???]
>>218
自動判別は (jcode.pl|Jcode.pm|Encode::Guess) な感じでいちおうあるよ。
# jcode.pl は UTF-8 に対応してないので、その辺はどうにもならない。

どれも「当たるとは限らん」ところが大事ですけど。



220 名前:nobodyさん mailto:sage [2008/05/19(月) 02:50:47 ID:???]
>>217
気分悪いならスルーでいいよ
あなた個人を攻撃してるわけでもないのに
態度云々言われたらこっちが気分悪い
取り合えず2chには向いてないと思うよ
これからもし私を見かけてもスルーしてね
おちょくってるわけでもないのに変な奴だ

>>218
詳しくありがとう



221 名前:nobodyさん mailto:sage [2008/05/19(月) 03:23:45 ID:???]
例の人が久々に来てたのか。エスパーたち、乙。

222 名前:nobodyさん mailto:sage [2008/05/19(月) 10:53:12 ID:???]
またおまえかwww

223 名前:nobodyさん mailto:sage [2008/05/19(月) 15:45:54 ID:???]
このバカ定期的に沸いてくるな
しかもあちこちに増殖している

224 名前:nobodyさん mailto:sage [2008/05/19(月) 16:40:56 ID:???]
ふーん
人を馬鹿扱いできるほどお前稼いでるの?
税金なんぼ払ってるかいってみ

225 名前:nobodyさん mailto:sage [2008/05/19(月) 16:59:25 ID:???]
失せろ

226 名前:nobodyさん mailto:sage [2008/05/19(月) 17:15:21 ID:???]
キモイ

227 名前:nobodyさん mailto:sage [2008/05/19(月) 18:46:02 ID:???]
稼いでる = 馬鹿でない

上の理論が成り立つと思ってるマヌケさ

228 名前:nobodyさん mailto:sage [2008/05/19(月) 18:49:18 ID:???]
なんか自分を凄く見せたがる為に銭金の話をしたがる馬鹿いるよな
森伊蔵云々、ディナー云々
中学生のホラ自慢みたいw


229 名前:nobodyさん mailto:sage [2008/05/19(月) 19:09:24 ID:???]
もう構うなってw



230 名前:nobodyさん mailto:sage [2008/05/19(月) 21:49:23 ID:???]
みんなお疲れ様
わかる人お願いします
ソースコードutf-8で保存してから実行してみた
アクティブパール5.88
WindowsXp
ここからどうすれば日本語になるの?

use LWP::UserAgent;
use utf8;
use encoding 'cp932';
$ua = LWP::UserAgent->new();
$req = HTTP::Request->new("GET", "www.yahoo.co.jp/");
$res = $ua->request($req);
print $res->content();


231 名前:nobodyさん mailto:sage [2008/05/20(火) 04:17:01 ID:???]

use LWP;
use Encode;

print encode('cp932',decode('utf8',LWP::UserAgent->new()->get('www.yahoo.co.jp')->content()));

232 名前:nobodyさん mailto:sage [2008/05/20(火) 04:28:46 ID:???]
>>231
私の環境ではエラーになっちゃったけど
物凄く参考になった
ありがとう

233 名前:nobodyさん mailto:sage [2008/05/20(火) 04:36:24 ID:???]
>>231
できました!
スペースの文字コードを半角スペースに変えたらエラーにならないで実行できました
見事に日本語になってます
ありがとうございました!

234 名前:nobodyさん mailto:sage [2008/05/20(火) 15:30:39 ID:???]
>>231をhtmlファイルで保存したいんだけどできない
すいませんまた教えてください

open(FH, '>>', "yahoolog001.html") or die "Cannot open content()!";
flock(FH, 2);
print FH qq|content()\n|;


235 名前:nobodyさん mailto:sage [2008/05/20(火) 16:51:57 ID:???]
>>234
231をyahoo_get.plとでも名前付けて保存して、
perl yahoo_get.pl > yahoo001.html

236 名前:nobodyさん mailto:sage [2008/05/20(火) 17:29:08 ID:???]
>>235何回もすいません
どうすればいいのか?
下記のような状況です

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.

237 名前:nobodyさん mailto:sage [2008/05/20(火) 18:28:08 ID:???]
>>235
スクリプト内に入れてやれよww

print FH encode('cp932',decode('utf8',LWP::UserAgent->new()->get('www.yahoo.co.jp')->content()));

238 名前:nobodyさん mailto:sage [2008/05/20(火) 18:38:22 ID:???]
>>236
違う違う、235のは、コマンドラインから実行するんであって、perlスクリプトの中に書くんではない。

>>234とか見てると、ファイルのオープンとかはあってるけど、
オブジェクトとか、クラスメソッドとかのことを良く分かってないようなので、
とりあえず一行で書けるのにしてみた。

それから、君は>>211>>230と同じ人(?、かどうかは定かではないが)
コマンドプロンプトから実行してるなら、リダイレクトや標準出力、標準入力等についてもある程度は理解がないと。
(Perlではないんで、入門書とかにはあんまり書いてないか。でも基本ってか常識レベルなんで、
わかってないとこれからしんどいよ。逆にわかってくると、いちいちスクリプトの中でやらなくていいことが増えるんで
書くのが楽になるし、理解も深まる。)

239 名前:nobodyさん mailto:sage [2008/05/20(火) 18:42:43 ID:???]
wktk



240 名前:nobodyさん mailto:sage [2008/05/20(火) 21:15:41 ID:???]
>>237さん、>>238さん、御二方ともお忙しい中ありがとうございます
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('www.yahoo.co.jp')->content();
↓コマンドラインから保存できたソース
--------------
use LWP;
use Encode;
print LWP::UserAgent->new()->get('www.yahoo.co.jp')->content();
ここからログインのテストしたいので
またお願いするかもしれませんが
その時はよろしくお願い致します
>>238さん
勉強方法詳しくありがとうございました
標準入出力の解説書なかなか見当たらないです
手持ちの解説書で標準入出力を解説しているのは
「perlデータマンジング」という本だけです
大変わかりやすく良書なのですが紙面の関係上さわり程度なのが残念です
何かお勧めの解説書があれば教えて頂ければ嬉しいです
ありがとうございました


241 名前:nobodyさん mailto:sage [2008/05/22(木) 14:07:57 ID:???]
お世話になります
httpsでログイン可能な簡易ブラウザサンプルどこかないでしょうか?
自分が調べたところ2001年にある雑誌が付録で付けていたようなのですが
絶版になり各方面探しても見当たりませんでした
やりたいことはhttps接続での送受信です
お心当たりのある方よろしくお願い致します

242 名前:nobodyさん mailto:sage [2008/05/22(木) 14:12:19 ID:???]
LPW

243 名前:nobodyさん mailto:sage [2008/05/22(木) 14:12:53 ID:???]
間違えた笑
LWP

244 名前:nobodyさん [2008/05/23(金) 20:25:12 ID:VktSXUAF]
sで一気にいくつかのものを変換する方法ありますか?
たとえるならあいうえおという文のあとおをかとこにおきかえたいんです。

245 名前:nobodyさん mailto:sage [2008/05/24(土) 02:20:54 ID:???]
trじゃダメなの?

246 名前:nobodyさん mailto:sage [2008/05/26(月) 19:32:51 ID:???]
どもお世話になります
あれから色々調べているんですけど
ログインや検索やセレクトメニューの選択やボタンクリックなど
具体的なサンプルってないですね
もしかしてperlで出来ないですか?
結局HACKER本買い捲ったんだけど
みんなHTMLの取得までなんですよ
そこからセレクトメニューを選んだりOKボタンをクリックするとか
できないんだろうか?


247 名前:nobodyさん mailto:sage [2008/05/26(月) 19:36:22 ID:???]
お前は何を言っているんだ

248 名前:nobodyさん mailto:sage [2008/05/26(月) 20:03:33 ID:???]
なんで?
perlでなんでも出来るって言ってたじゃないですか?

249 名前:nobodyさん mailto:sage [2008/05/26(月) 20:18:52 ID:???]
ネタですか?



250 名前:nobodyさん mailto:sage [2008/05/26(月) 20:35:06 ID:???]
>>248
もしかして>>196からの流れか?
ひょっとして画面が表示されて検索ワードが勝手に入力されてセレクトメニューが勝手に選択されてボタンが勝手に押されるとか
そういうのイメージしてる?

251 名前:nobodyさん mailto:sage [2008/05/26(月) 20:47:35 ID:???]
>>250
それそれ
それです!
perlで出来るんですよね?
今のところそのようなサンプル見当たらないんですよ
自動ソフトのスクリプトとかならOKボタンのクリックなどは
初歩の初歩インストール後5分後には覚えれるくらい簡単なんですけど
perlの場合参考になるような記述すら見当たらないんですよ
超凄いらしい解説本やオライリーのHACKシリーズやWEBシリーズを購入したんですけど
全然すごくない
OKボタンの1回すら出てこない
なんでもできないのですか?

252 名前:nobodyさん mailto:sage [2008/05/26(月) 20:54:44 ID:???]
それをやろうと思ったのはお前が最初で最後だと思うよ

253 名前:nobodyさん mailto:sage [2008/05/26(月) 21:12:52 ID:???]
>>252
なんでですか?
perlでは出来ないってことなの?

254 名前:nobodyさん mailto:sage [2008/05/26(月) 21:16:41 ID:???]
ちなみに自分はある自動ソフトで検索とか保存とか
WEB上での操作でやりたいことは大体教えてもらえましたよ
そのソフトを教えてくれる方たちはみんな普通にご存知でした
ただ遅いんですよorz
0.5秒で完結させたいんです


255 名前:nobodyさん mailto:sage [2008/05/27(火) 02:30:31 ID:???]
>>252
自分は>>198>>201なんだけど、多分初めてじゃないと思うぞ(w)

>>253,254
君のやりたいことってのが、GUIのツールみたく目に見える感じで動いて行くってのなら多分ムリ。
(Tkとか使ったら無理やりにでもできるかも知れん。でも自分はGUI系はからっきしなんで、よくわからん)

そうでなくて、コマンドラインから、ブラウザで操作したことと同じ結果を得るってことなら可能。
どんな本や、どんなページ参考にしたかわからないけど、
ちょっと上の方に出てるLWPなんかの解説や、CPANのmanualなんかをじっくり読めば(リンクを少々辿らないダメだけど)、
検索フォームにワード仕込んだり、”OK”ボタンを押すってことにもたどりつきそうだけど・・・。

256 名前:255 mailto:sage [2008/05/27(火) 02:31:04 ID:???]
でもまあ、サンプルでも書いとく。
use strict;
use LWP;
use Encode;
use HTML::Form;

my $pwd = `cd` . '\\';
my $cmd = 'C:\Program Files\Internet Explorer\iexplore.exe';
my $url = '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で表示される。(無理やり、画面遷移っぽくなるように作った。)
モジュールや関数の詳細は、自分で調べてくれ。

257 名前:nobodyさん mailto:sage [2008/05/27(火) 03:14:05 ID:???]
また湧いたのか・・・

258 名前:nobodyさん mailto:sage [2008/05/27(火) 03:29:45 ID:???]
>>255さん
ありがとうございます
まさにそれなんです
GUIを使わないで送受信してみたいんです
お疲れのところわざわざサンプルまで作って頂き本当にありがとうございます!
頂いたサンプルを参考にログインとかもチャレンジしてみます
ありがとうございました

259 名前:nobodyさん mailto:sage [2008/05/27(火) 14:08:14 ID:???]
ブラウザのインターフェースに強引に割り込ませるのかと思ったわ
httpについて勉強するといいよ



260 名前:nobodyさん [2008/05/28(水) 00:14:16 ID:T0EpbUiq]
ググったら趣旨が違うのしかでないんですが、
ifで、たとえば$Aに\という文字列が含まれる場合、
\が含まれています。とするにはどうしたらいいんでしょうか?
if($A =~ \\)
{print "\\が含まれています"}
でいけますか?

261 名前:nobodyさん mailto:sage [2008/05/28(水) 02:23:14 ID:???]
if($A =~ /\\/)

262 名前:nobodyさん mailto:sag [2008/05/31(土) 01:19:07 ID:???]
$in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'} && $in{'upfile'}){ &error(202); }

この処理ってどういう意味なのでしょうか?


263 名前:nobodyさん mailto:sage [2008/05/31(土) 02:02:14 ID:???]
;


264 名前:nobodyさん mailto:sage [2008/05/31(土) 15:52:59 ID:???]
>>262
>$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'});

265 名前:264 mailto:sage [2008/05/31(土) 15:54:58 ID:???]
戻り値をセットせなあかんから1行にまとめたら駄目だな・・orz

266 名前:264 mailto:sageΛ||Λ [2008/05/31(土) 16:03:00 ID:???]
&error(202) if(!($in{'ext'} = &extfind($in{'orgname'})) && $in{'upfile'});

オリジナルと大して変わらんけどこうやればいけるか
スレ汚しスマソ・・

267 名前:nobodyさん mailto:sage [2008/05/31(土) 18:48:39 ID:???]
より、この処理ってどういう意味なのでしょうか?
という質問が出易くなりますな。

268 名前:nobodyさん mailto:sage [2008/05/31(土) 20:14:45 ID:???]
>>264
やっぱりperl難しいな・・・

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); }
に、しても普通にアップロードできてしまうし。。。どこがおかしい?

269 名前:nobodyさん mailto:sage [2008/05/31(土) 20:40:29 ID:???]
>>268
そこのアップローダの改造の質問 って前にもどこぞで見たなあ。
で「改造スレに行け」と言われてたハズだが?

ソースが好みじゃないのでやる気にならん。…改造スレ行けば?



270 名前:nobodyさん mailto:sage [2008/06/04(水) 08:35:22 ID:???]
perlで書かれたチャット掲示板みたいなCGIプログラムがあります
テキストエリアに文字を入力して、投稿ボタンを押すとregist.cgiに渡されて書き込まれる仕組みです
このregist.cgiはmessageとcountという2つの引数をとるみたいなのですが、
ブラウザからURL:/aaa/bbb/regist.cgi?message=test&count=1
とやっても書き込まれませんでした

ちなみにFirefoxのTemperDataで確認したリクエストとレスポンス上ではベーシック認証は使われていませんでした

最終的にはperlで自動的に書き込んでくれるプログラムを書きたいのですが、まずはperlでこのregist.cgiに投稿するにはどうすればいいか教えてください


271 名前:nobodyさん mailto:sage [2008/06/04(水) 10:11:46 ID:???]
postしてみろ

272 名前:nobodyさん mailto:sage [2008/06/04(水) 14:06:46 ID:???]
GETで投稿出来ちゃうと、2chにリンク貼られまくったときにw

273 名前:nobodyさん mailto:sage [2008/06/06(金) 23:21:44 ID:???]
sub getDirSize($)の($)ってどういう意味?

274 名前:nobodyさん mailto:sage [2008/06/07(土) 02:53:47 ID:???]
>>273
プロトタイプ。
$は引数としてスカラーしかとらないってこと。


275 名前:273 mailto:sage [2008/06/07(土) 08:37:38 ID:???]
>>274
thx

276 名前:nobodyさん [2008/06/13(金) 17:42:23 ID:GNaVOr+f]
UTF-8の16進コードを文字にしたいんですが、
pack('C*','0xe4','0xba','0xba')とやっても化けてしまいます。
どういう式を書けばいいのですか?

277 名前:nobodyさん mailto:sage [2008/06/13(金) 18:06:20 ID:???]
pack('C*',0xe4,0xba,0xba) だとどうなる?

278 名前:nobodyさん mailto:sage [2008/06/13(金) 18:32:03 ID:???]
>>277
ありがとうございます。できました。
裸のままでよかったのですね。
pack('H*','e4baba');
というのもあったみたいです。

今は10進→16進→文字なんですが、
10進から直接変換できますか?


279 名前:nobodyさん mailto:sage [2008/06/13(金) 18:37:43 ID:???]
0xがついてなきゃ10進だよ。
pack('C*',228,186,186) とか
10進の数字しかないならpack('C*','228','186','186') でも通るけどな。



280 名前:nobodyさん mailto:sage [2008/06/13(金) 19:26:54 ID:???]
ありがとうございます。
文字列との違いが判りました。

UTF-8のコード範囲を調べると
[\x00-\x7f]
[\xC0-\xDF][\x80-\xBF]
[\xE0-\xEF][\x80-\xBF][\x80-\xBF]
[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]
とあります。
これには他の言語も含まれているとおもいます。
先ほど教えていただいた変換で一覧を作ろうと思うのですが、中国語なども混ざってしまいます。
日本語のみの範囲はどのようなものなのでしょうか。

281 名前:nobodyさん mailto:sage [2008/06/13(金) 19:41:37 ID:???]
ttp://ja.wikipedia.org/wiki/Unicode

282 名前:nobodyさん mailto:sage [2008/06/13(金) 20:36:31 ID:???]
そういえば、日本語じゃなくても、
罫線とか利用している文字もありますね。
なかなか難しい。

283 名前:nobodyさん mailto:sage [2008/06/15(日) 14:13:18 ID:???]
postやgetじゃなくて、普通にページにアクセスしたときの条件分岐が作りたいのですが、
そんなことはできませんか?

284 名前:nobodyさん mailto:sage [2008/06/15(日) 14:29:37 ID:???]
Use of uninitialized value in concatenation (.) or string at main.cgi line 93.
このエラーの意味が分からないのですが、教えて頂けませんか?

285 名前:nobodyさん mailto:sage [2008/06/15(日) 20:40:23 ID:???]
>>283
もう少し詳しく
>>284
main.cgiというファイルの93行目で、連結の方法がおかしい。

286 名前:nobodyさん mailto:sage [2008/06/15(日) 22:45:56 ID:???]
>>284
>>285 =~ s/連結の方法がおかしい/未定義値を文字列として評価している/;

例えば $foo が undef の状態で "foo$foo" とか 'foo' . $foo とか。

287 名前:nobodyさん mailto:sage [2008/06/16(月) 09:05:17 ID:???]
おはようございます。

あるサブルーチンでファイルを扱おうとしています。
evalの中でopenしたファイルハンドルをエラー処理(if $@)で閉じるにはどうすればよいのでしょうか。
環境はperl5.8 use strictです。

288 名前:nobodyさん mailto:sage [2008/06/16(月) 10:45:47 ID:???]
pc11.2ch.net/test/read.cgi/tech/1208674881/514
より

#!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 "変更完了";


289 名前:nobodyさん mailto:sage [2008/06/16(月) 10:49:36 ID:???]
pc11.2ch.net/test/read.cgi/tech/1208674881/511
より

#!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 "消去完了";




290 名前:nobodyさん mailto:sage [2008/06/16(月) 13:00:09 ID:???]
>>288-289
せっかくお答えいただいたのにすみません。
私が知りたいのはスコープを跨ぐ場合の話です。

例えば、evalの中で宣言した変数をevalの外で使おうとすると、perlに叱られます。
ファイルハンドルの場合は叱られないのですが、これが作法に則った方法なのかわかりません。

291 名前:nobodyさん mailto:sage [2008/06/16(月) 14:31:35 ID:??? BE:177559834-2BP(1)]
案1)
my $fh = IO::File 〜とかopen my $fh〜等を使って
いちいち閉じなくていいようにする。

案2)
use IO::File;して
my $fh = *FH{IO};
$fh->close() if defined($fh) && $fh->opened();


292 名前:nobodyさん mailto:sage [2008/06/16(月) 16:00:58 ID:???]
>>290

失礼。他のスレッドへの返答でした。

pc11.2ch.net/test/read.cgi/tech/1208674881/519 への回答

# 変数が半角スペースで始まっていれば、半角スペースを先頭一個だけ消去
if($example =~ /^ /){ $example =~ s/ //; }
# 変数が全角スペースで始まっていれば、全角スペースを先頭から一個だけ消去
elsif($example =~ /^ /){ $example =~ s/ //; }

拙いですがどうですか?

293 名前:nobodyさん mailto:sage [2008/06/16(月) 16:05:48 ID:???]
>>292

修正です。

# 先頭の全角スペース、半角スペースの連続を削除
$example =~ s/^([\ \ ]+)//;


294 名前:nobodyさん mailto:sage [2008/06/16(月) 17:36:08 ID:???]
流れがよく分からんけど、
もうひとつファイルを用意して、
書き出して言ったらダメなの?

>>293
スクリプトとファイルの文字コードが同じならいいけど。

295 名前:nobodyさん mailto:sage [2008/06/16(月) 21:58:28 ID:???]
>>291
ありがとうございます。

お答えいただいた案1がしっくりきたので、この方式で行きます。

またよろしくお願いします。

296 名前:nobodyさん mailto:sage [2008/06/17(火) 10:38:26 ID:???]
>>294

すいません、超未熟でした。

297 名前:nobodyさん [2008/06/18(水) 00:25:23 ID:Mmy0x8n6]
perlで、
print "あ";
で一秒待ってから
print "い";
を実行する方法ってありますか?
localtimeで受け取って1秒過ぎるまでwhileで空白を書き続けるってのも考えたんですが・・・
負荷がかかりそうなんで。

298 名前:nobodyさん mailto:sage [2008/06/18(水) 01:19:02 ID:???]
sleep 1;

299 名前:nobodyさん mailto:sage [2008/06/19(木) 06:37:25 ID:???]
select undef,undef,undef,1;



300 名前:nobodyさん mailto:sage [2008/06/19(木) 10:35:29 ID:???]
$| = 1;






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

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

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