Perlコーディング初心 ..
314:nobodyさん
07/10/12 04:05:22 i4CjOo+I
XML::RSSについて質問です。
rssのバージョンが1.0の場合、以下のソースの#エラーが出るの部分で
Use of uninitialized value in concatenation (.) or string at rss line 21.
というエラーが出てしまいます。
他の<link>タグなどの場合は表示できるので
<dc:date>などの名前空間を使っているタグの場合に
上記のエラーが出てしまうみたいです。
どうすれば、名前空間のタグデータも表示できますか?
my $rss = new XML::RSS;
my $url = "URLリンク(hoge.con)
my $dat = get($url);
my $result = $rss->parse($dat);
foreach my $item ( @{$rss->{'items'}} ){
if($result =~ /1.0/){
print "@{$item_list}[0]->{'dc:date'}\n"; #エラーが出る
}elsif($result =~ /2.0/){
print "@{$item_list}[0]->{'pubDate'}\n";
}
}
315:nobodyさん
07/10/12 04:09:29
print @{$item_list}[0]->{'dc:date'} || '', "\n";
とか。
316:314
07/10/12 04:37:32
すいません。
ソースがおかしかったんで張りなおします。
my $rss = new XML::RSS;
my $url = 'URLリンク(hoge.com)';
my $dat = get($url);
my $result = $rss->parse($dat);
foreach my $item ( @{$rss->{'items'}} ){
if($result =~ /1.0/){
print "$item->{'dc:date'}\n"; #エラーが出る
}elsif($result =~ /2.0/){
print "$item->{'pubDate'}\n";
}
}
317:314
07/10/12 04:50:59
自己解決しました。
print "$item->{'dc'}->{'date'}\n";
という記述でうまくいきました。
お騒がせしました。
318:nobodyさん
07/10/12 22:46:03 w18ekEW+
ここにいる人は仕事でもPerlに問わずプログラミングをしてるのですか?
そういう仕事に就くにはやはり学校などを出てる必要があるのでしょうか?
いわゆる大卒みたいな最低条件というか。
前から一度経験してみたいなと思っていましたが、そういうアルバイトはないんでしょうか。
建設現場の日雇いみたいに気軽にやってみたいです。
本業はありますが、結構時間はあるほうなので。
この世界はどうなってるのでしょうか?
319:nobodyさん
07/10/12 22:50:35
仕事に関する大事なことを自分で調べず2chで聞いてる時点で・・・
320:nobodyさん
07/10/12 22:59:11
セックスアパートって会社で働くといいよ。
321:nobodyさん
07/10/12 23:23:59 w18ekEW+
2ちゃんをバカにしてる利用者ほどその利用方法はひどいって法則誰かが言ってましたね。
322:nobodyさん
07/10/13 00:20:58
プログラマーなんて趣味の延長だろ
24時間PCの前でカタカタやるのが楽しくなきゃやってられない
323:nobodyさん
07/10/13 00:22:01
「CGI Perl 実務経験なし 初心者OK」で求人サイト検索すりゃいいべ。
324:nobodyさん
07/10/13 00:26:24
>>321
その手の切り返しパターンもう飽きた
325:nobodyさん
07/10/13 00:41:31
多分しっかりやらないとプログラムは楽しくない。
326:nobodyさん
07/10/13 02:59:15
プログラマーは3桁残業にも耐えられる精神力+体力が必要。
年取ったら高確率で禿げそう。
327:nobodyさん
07/10/13 15:06:53 iKtPwiMH
$a = 0000010
この文字列を数字に変える($ = 10)
簡単な表記はありますでしょうか?
sprintf使ってみたのですが上手くいきません
328:nobodyさん
07/10/13 15:10:02
それは文字列じゃなくて8進数じゃ?
もし$a= "0000010"; なら 関数int使えばいい
329:327
07/10/13 15:13:51
すみません
自己解決しました
%dで
330:318
07/10/13 16:40:37 5Vuk1MtC
この雰囲気からすると日雇いなんかなさそうですね。
しかしこういう雰囲気からすると日雇いなんかありませんよね。
ちょっと待って日雇いなんかありませんよ。
実際いきなりそれを本職とするのは厳しい。
どういう雰囲気なのか味わいたいだけと考えるとそういう会社で働いてる人脈を作るのがよさそうですね。
ここの本職の方は会社と自宅以外にどこに行きますか?
明日とかきっと休日だと思いますけど、街へ行ったりするんですか?
家族持ちだとどうしても接点を取っても仲良くはなれなさそうだから。
独身がいい。女を紹介とかすればそれなりに仲良くなれる気がするんですが。
どうですかね。女は嫌いですか?
331:nobodyさん
07/10/13 18:43:45
コーディング初心者質問スレであって、IT 土方向けの仕事斡旋スレではないんだよなぁ。
332:318
07/10/13 19:19:29 5Vuk1MtC
なるほど。
やはり頭は固いと。
333:nobodyさん
07/10/13 21:12:30
釣りにしては程度が低すぎるんだが、これは素で言ってるのか?w
だとしたらやばすぎる。
334:nobodyさん
07/10/13 21:40:38
スルーしとけよ
335:nobodyさん
07/10/13 21:48:34
スレ違いという自分のミスを指摘され
馬鹿にされ悔しさのあまり慢心で書き
出した文章がこれ
336:nobodyさん
07/10/13 21:53:08 fl6REYk4
IPアドレスから携帯かPCかを判断したいんですがどうやればいいんですか?
337: ◆TWARamEjuA
07/10/13 22:06:27
ここで宣う前に「調べる」ことをお勧めいたします。
338:336
07/10/13 22:23:53
ググっても分からなかったので教えてもらえませんか
339:nobodyさん
07/10/13 22:31:44
どうググったのですか
340: ◆TWARamEjuA
07/10/13 22:35:33
(´-`).。oO(ググる≠調べる ググる=さがす ・・・と思うけれども。。。)
341:336
07/10/13 22:58:35
perl IPアドレス 携帯か 判断
とかで検索したけど出てきませんでした
342:nobodyさん
07/10/13 23:16:28
俺なら
perl 携帯 判定
でぐぐるな。
343:nobodyさん
07/10/13 23:43:01
cpanでmobile ipとかで調べたらいいんじゃね?
344:nobodyさん
07/10/13 23:50:32
>>342
それだとUA判定が多いんじゃ?
携帯 IPアドレス wiki で検索かけたらあったぞ
345:336
07/10/13 23:56:59
UAで判定できるなんて知らなかった。
IPアドレスより楽みたいですね。
346:342
07/10/14 00:01:08
>>344
そうだった。IPで判定したいんだったな。これは失礼。
347:336
07/10/14 00:06:15
UAで判定したら携帯ブラウザエミュだと携帯で判定されるのか。
IPアドレスの方が確実ってことかな?
348:336
07/10/14 00:16:57
携帯ってIPアドレスの種類どんどん増えてってたのか・・・
諦めてUAで判定します。
349:nobodyさん
07/10/14 03:31:42
CPANにモジュールあるよ。
350:nobodyさん
07/10/14 06:50:16
フォームって別ドメインのCGIスクリプトにも送信できたっけ?
351:nobodyさん
07/10/14 07:54:33
>>349
それって DIS るのが生きがいの人のだっけ?
352:nobodyさん
07/10/14 07:54:34
open関数で開けるファイルって同じサーバーにある必要がありますよね?
別サーバーにあるファイルの情報を参照する方法はあるのでしょうか?
あるのでしたら方法をお教え下さいますようお願いします。
353:318
07/10/14 08:50:07 a8OZDemC
>>333-335
別にバカにしてるわけでもないのに、どうしてすぐそうムキになるかね。
逆に聞きたいが、自分は頭が固くないとでも思ってるのかい?
354:nobodyさん
07/10/14 09:23:55
おまい自分が雇う側の立場になって考えてみな
日雇いで次の日に来るかどうか解らない奴を雇う?
スキルレベルも解らずに雇う?
つか、銭もらえるだけのスキルはあるのか?
355:318
07/10/14 12:02:37 a8OZDemC
>>354
>日雇いで次の日に来るかどうか解らない奴を雇う?
もしかして日雇い知らない?
プログラミングに関わらずどんな仕事でも適当なやつはいらないし雇わないよ。
>スキルレベルも解らずに雇う?
どんな職業でも同じ。
君は雇う側になったことがなさそうだ。
356:nobodyさん
07/10/14 12:10:23
もう頭のおかしいヤツ相手にすんなよ
ま、いちばん悪いのは病院に連れて行かない親なわけだが
357:nobodyさん
07/10/14 13:05:35 9kSbwdFL
画像付きのBBSに、アクセスログ記録を付けて使っています
ところが、特定の人だけ同時に3回記録されています
WindowsNT5.1 ブラウザが「Sleipnir」
たぶんブラウザのせいだと思いますが、
1回のアクセスでサーバに3回の動作をさせている事になります
一体どういう事なのでしょう? perlの書き方のせいでしょうか?
358:nobodyさん
07/10/14 13:19:59
実際一番ムキになってるのは君じゃん(w
359:nobodyさん
07/10/14 17:32:02
>>357
とだけ言われてもなぁ、多重コネクションで画像DLなんてよくある話だし。
で、どうしたいのさ?
360:nobodyさん
07/10/14 18:22:36 9kSbwdFL
>>359
画像付きといってもファイルをたまにアップするだけで
ほとんどの利用はテキストの書き込みと、BBSの読み込みです
会員制サイトなのでアクセスの数は少ないです
サイトの関連ログが飛ぶトラブルがあって原因の一つと思います
まず、なぜこの環境の人がアクセスすると、同時刻に3回CGIが動作して
しまうのか、その原因を知りたいです
BBSのスクリプトでは、@の配列に入れたものをforeachで展開しながら
html表示します、アクセスログはこのプロセスに入れ込んでます
361:nobodyさん
07/10/14 19:25:16
当人じゃないからわからんが、Javascriptで読み込みなおしするような
なんかをしてるんじゃね?
本人に聞いたらいいよ。
362:nobodyさん
07/10/14 19:59:35 RGItsPbe
質問です。
CPANモジュールまとめサイトってないですかね?
いろいろググったけどそれらしきものがなかったので。
363:nobodyさん
07/10/14 20:01:11 RGItsPbe
>>362
追記
日本語モジュール解説 まとめサイトです
364:nobodyさん
07/10/14 20:37:02
perldoc.jp
365:nobodyさん
07/10/14 20:42:54
basic認証が必要な自サイトのアクセスログからある部分だけ抽出して表示させたい
のですがまずcgiでアクセスするにはどうすればいいでしょうか?
366:nobodyさん
07/10/14 20:49:09 RGItsPbe
>>364
そこで全部見れるんだ。
ありがとー
結構数すくないっすね
ありがっつ
367:nobodyさん
07/10/14 22:03:04 5YQaKvWD
ブログのページからソースを取ってきてテキスト部分だけを取り出したいんですが
use LWP::Simple;
$buff = get("URLリンク(www....."));
print $buff;
これでとりあえずソースだけは取ってこれたのですが、テキスト(記事)の部分だけ取り出す方法がわかりません。
よろしくお願いします
368:nobodyさん
07/10/14 22:05:45 RGItsPbe
>>367
正規表現でちょちょいのどんじゃないですかね?
一度調べてみることをおすすめします。
369:nobodyさん
07/10/14 22:15:05 9kSbwdFL
>>361
なるほど
当方MacなのでParallelsのWinに「Sleipnir」入れてみましたが、
プラグインかなにかなんでしょうね
有り難うございました
370:nobodyさん
07/10/15 00:22:13
>>367
最近はこういうのが流行みたいです
Web::Scraper
URLリンク(search.cpan.org)
371:nobodyさん
07/10/15 00:43:20
>>369
ぐぐればトップに出てくるだろうに
372:nobodyさん
07/10/15 00:44:21
ごめん、371は勘違い
373:nobodyさん
07/10/15 01:06:24
nikonikoにもScraperネタある。
URLリンク(www.nicovideo.jp)
374:nobodyさん
07/10/15 03:46:48
Web::Scraper が重いんだけど、どうにかならないの?
375:nobodyさん
07/10/15 05:35:56
不満は作者に直接言う
改善案を出す
パッチ送る
376:nobodyさん
07/10/15 12:15:17
男は黙って正規表現一択
scrAPIは女の様な軟弱者が使う物
377:nobodyさん
07/10/15 14:20:07
youtubeに上げなおしてくれ。
ニコニコ垢なんかもってないし使いたくも無い。
378:nobodyさん
07/10/15 21:15:14
カレンダーを作りたいと思っているんですが、ライブラリはありませんか?
379:nobodyさん
07/10/15 22:05:51
>>378
URLリンク(search.cpan.org)
380:nobodyさん
07/10/15 23:41:31
処理の進捗状況を表示する一番よい方法は何ですか?
一定期間ごとにファイルに書き込むことしか思い付きません。
381:nobodyさん
07/10/15 23:43:46
>>380
それでいいんじゃねーの
一番簡単だし
382:nobodyさん
07/10/16 06:05:03
$| = 1;
って何かいいことあるの?
383:nobodyさん
07/10/16 08:47:04
意味をわかった上で言ってるのか?
それとも意味を聞いてるのか?
とりあえず「perl コマンドバッファリング」あたりでググれ。
384:nobodyさん
07/10/16 10:56:39
自分が使ってるサーバーがLWPが使えないようなので、socketで別サーバーのファイル内容を拾って展開させようとしたんですが、
ローカルではちゃんと動くのにサーバーにアップすると凍ってしまいます。
リストにある複数のブログのrss取得して最新のブログ3件の記事表示、みたいなのがやりたいんですが、
サーバーがLWPの許可してないと難しいですか?
なにかいいやり方あったらお教えください。
385:nobodyさん
07/10/16 11:11:22
fpingの出力値の数字だけを抜き出すプログラムを作りたいのですが、うまくできません。
input.txtという名前に下のようなfpingの出力を入れ
www.yahoo.co.jp:[0], 84 bytes, 18.1 ms (18.1 avg, 0% loss)
www.yahoo.co.jp:[1], 84 bytes, 23.2 ms (20.7 avg, 0% loss)
18.1
23.2と出力したいです。
bytes,より前を切り取り、ms ( も切り取ろうとして
$fping = "./input.txt";
open(A,"$fping")|| die "Can not open file";
@b = <A>;
close (A);
foreach $c(@b){
$c = grep(/(.*?)bytes, (\d{1,4}\.\d{1,2} ms) \(/,$c);
}
foreach $c(@b){
print "$c\n";
}
というプログラムを作ったんですが、うまくいきません。
どこを直せばいいでしょうか?
386:nobodyさん
07/10/16 11:26:03
>>385
$c =~ /bytes, (.*?) ms/;
$c = $1;
じゃだめなん?
387:385
07/10/16 12:33:21
>>386
レス遅れてすいません。
できました!
ありがとうございます!!
助かりました、ホントありがとうございます!!!
388:nobodyさん
07/10/16 12:40:52
>>385
出遅れた…。
perl -lne "print /(?<=bytes, )(.+?)(?= ms)/" input.txt
389:nobodyさん
07/10/16 13:22:24
>>384
どこの鯖使ってるか知らんが、LWP使えないようにしてるってことは
FWでoutboundが遮断されてる可能性が高く、だとすればどうしようもない
390:nobodyさん
07/10/17 00:29:17 7VxwUF8E
SNSサイトにperlを使って接続って無理?
391:nobodyさん
07/10/17 00:37:06
日本語でOK
392:nobodyさん
07/10/17 01:05:09
>>390
WWW::Mixi
WWW::Myspace
393:nobodyさん
07/10/17 08:03:38 BedUMdjt
おはようございます。
下のような流れのcgiで
複数のクライアントから接続された場合
変数$gHogeはクライアント毎に保たれますか?
それとも上書きされちゃいますか?
my $gHoge = ""; #クライアントからポストされた値が入る。
〜$gHogeを扱う長めの処理が続く。
394:nobodyさん
07/10/17 08:36:36
>>393
実行される度にプロセスが作られるから上書きなんてされない
395:393
07/10/17 09:01:24
>>394
そうですか。期待通りの結果でよかったです。
朝早くからありがとうございました。
396:nobodyさん
07/10/17 23:05:49 7VxwUF8E
>>392???
わからないので要望スレに逝ってきますorz
397:nobodyさん
07/10/18 00:34:50
>>396
ググることもできないのか
398:nobodyさん
07/10/18 01:48:20
モジュールがわからなくてSNSに接続しようとは・・・
399:バターズ
07/10/18 22:40:14
コロンが二つならんでいるのは
ダブルコロンって言うんだよ
400:nobodyさん
07/10/20 00:37:33 Ja84SJeF
Location ではtargetが指定できませんが、呼び出したときの
属性は生きるってどこかに書いてありました
どういうことでしょう
ssiのhtmlファイルの中に書いた、iframeのCGIまたは#exec cgiで
クッキー認証できなかったら全画面を再認証画面に飛ばしたいのですが、
やはり無理でしょうか?
401:nobodyさん
07/10/20 05:18:19 VLTga6QI
print <<EOM;
<a href="hoge.html">hoge</a>
EOM
と、
print "<a href=\"hoge.html\">hoge</a>\n";
ではどちらの方が実行速度が速いですか?
402:nobodyさん
07/10/20 06:50:46
>>401
ほぼ同じ。
URLリンク(boobar.hp.infoseek.co.jp)
403:nobodyさん
07/10/20 07:40:43 VLTga6QI
>>402さん、ありがとうございます。
大変参考になりました。
404:nobodyさん
07/10/20 07:47:37 x+Q9ulv4
おはようございます。
以下のスクリプトについて質問です。
outフォルダ内の.txtファイル全てに対して
ある作業をするというスクリプトなんですが、
ファイルオープンのところでそんなファイルはないから
開けないというエラーが出力されます。
例:hoge.txtがある場合
OPEN ./out/hoge.txt file: No such file or directory at check line 22.
どこが間違ってるか教えてください。お願いします。
OSはWindowsXPです。
my @directories_to_search = ('./out/'); #対象のフォルダ
find(\&wanted, @directories_to_search);
sub wanted{
my $filePath = $File::Find::name;
my $find = index( $filePath, ".txt" ); #.txtを対象
unless ($find >= 0) {
return 1;
}
open FH_READ, "<$filePath"
or die "OPEN $filePath file: $!";
#ある作業をする。
close FH_READ;
}
405:nobodyさん
07/10/20 08:21:11
>>404
22行目ってホントにopen文の所か?
406:404
07/10/20 08:33:09
>>405
え?open文のor dieのエラーメッセージが出力されているから
open文でエラーが発生していると思うんですが・・・
407:nobodyさん
07/10/20 10:42:05
読んで字の如しとしか。
まさかmod_perlじゃないよな?
408:nobodyさん
07/10/20 10:55:56
>>404
openに渡すのは「$filePath」じゃなくて「$_」
File::Findの解説ちゃんと読め
409:半角全角が混在する行が一定の文字数を超えたら折り返すようにしたい
07/10/20 14:21:49 g/E6yd0f
メールフォームを作っています。同マシン上のsendmailを使って送るものです。
送信するメールの本文において、半角全角が混在する行の文字数を数え、
一定の文字数(例えば半角72文字、全角36文字)を超えた行だけを
強制的に折り返したいと考えています。
どのようにするのがよいでしょうか?
lengthはバイト数を返す関数なので、
全角文字の真ん中で折り返されると困ることになると考えてます。
もしかすると、長い行はsendmail側が自動で折り返してくれたりするのでしょうか?
それとも、何かほかの関数で簡単に数えたりできるのでしょうか?
なお、カスタマイズの自由度を考えて自作しているので、
「どこそこのメールフォームを使え」というのは勘弁してください。
以上、よろしくお願いします。
410:nobodyさん
07/10/20 14:28:07 o1wAy6B9
eval ($hoge); の実行した値を変数に入れるにはどうしたらいいでしょうか?
$@ だと、evalでのエラーの値が入る
でも、実行値は...?
お願いします。
411:nobodyさん
07/10/20 14:37:23
>>410
$result = eval($hoge);
じゃダメなん?($resultに実行結果、$@にエラーメッセージ)
参考
URLリンク(www.tohoho-web.com)
412:nobodyさん
07/10/20 14:55:48 o1wAy6B9
>>411 その通り!ありがとう。
短い$hogeだと関数が成功した1しか返さないことがあるようでアレ違うわと思っていました。
>>409
ちょっと離れるので投げっぱなしになってしまいそうだけど
解答してくれる人が現れる間に考えていました
use utf8;
use Encode;
$str = '
eval ($hoge); の実行した値を変数に入れるにはどうしたらいいでしょうか?
$@ だと、evalでのエラーの値が入る
でも、実行値は...?
お願いします。
';
@stream = split(/\n/,$str); #最初に渡された文字列を 改行 を区切りとして @stream に配列として読み込んだ
map{ s{(.......)}{$1\n}g } @stream; #”8文字”単位で改行を入れてる
map{print encode(sjis,$_)}@stream; #各行を出力するときにsjisに変換してる
とか、なかんじでどうよ?
ただし1バイト文字の扱いがなんか変。
*たぶんutf8でけつまずいてるかんじ。
413:nobodyさん
07/10/20 16:08:12
>>409
jcode.plかJcode.pmにjfoldってなかったっけ?
414:409
07/10/20 17:45:16
>>413
これです。こういう機能がほしかったんです。
jcode.plにはありませんでしたが、Jcode.pmにはありました。
これまで使っていたのがjcode.plだったのでが、
MIMEヘッダの機能も強化されているようなので、Jcode.pmに乗り換えようと思います。
どうもありがとうございました。
415:nobodyさん
07/10/20 18:24:36
いいかげんにEncode使い方覚えろよ
416:nobodyさん
07/10/20 19:12:39
>>415
じゃ、Encode.pmを使って折り返す方法を書いてあげれば?
417:nobodyさん
07/10/20 19:44:36
Encode::decodeしてlengthでカウントしてみろよ
418:nobodyさん
07/10/20 20:12:44
文字コードわかってんなら正規表現で簡単にできることだろ
419:nobodyさん
07/10/23 05:26:38
全部正規表現でやるのは重そうだな。
420:nobodyさん
07/10/23 14:21:34
正規表現で解決するならEncode要らんがな。
421:nobodyさん
07/10/23 15:27:18
Perlのテキスト処理で質問させてください。
UTF8な日本語テキストの半角カナを全角にしたいと思ってEncode::JP::H2Zを使おうと思いました。
しかし、一部の文字(〜など)がEUCに変換する段階で?に変換されてしまい、困ってしまいました。
とりあえず、コードポイントにフォールバックできることがわかったので、
以下のように書いてその場をしのぎましたが、コードポイントを検索して文字に置換するという
作業が入ってしまい(しかも無駄に複雑)、どうもしっくりきません。
もっと簡単にする方法はありますか?
$text = encode("eucjp", $text, Encode::FB_PERLQQ); # EUCに変換
Encode::JP::H2Z::h2z(\$text); # 全角変換
$text = decode("eucjp", $text);
$text =~ s/\\x\{([0-9A-Fa-f]+)\}/pack("U*", hex($1))/eg; # コードポイントを文字に
422:nobodyさん
07/10/23 17:42:25
>>421
#!/usr/local/bin/perl -w
use strict;
use Encode qw(from_to);
use Encode::JP::H2Z;
my $text = 'このファイルはUTF-8で〜半角カナ混じりの文字列';
from_to($text, utf8 => 'cp932');
from_to($text, shiftjis => 'euc-jp');
Encode::JP::H2Z::h2z(\$text);
print $text;
__END__
別解。
use Unicode::Japanese qw(unijp);
print unijp($text)->h2zKana->euc;
423:421
07/10/23 20:32:44
>>422
ありがとうございます。その変換法で化けなくなりました。
後学のためお聞きしますが、Encodeではutf8を直接EUCにマップできないのでしょうか。
SJISを経由するのはわかるのですが、cp932をshiftjisに読み替えるなど、
トリッキーなことをやっていますね。
機種依存文字(@など)がある場合もそうですが、utf8とEUCの変換法は
どうもよくわからないです。
機種依存文字とか、どうやってEUCに変換するんでしょうか
424:nobodyさん
07/10/23 22:43:56
「よくわからない」のは、EUC-JPとCP51932の関係じゃないのかな。
URLリンク(search.cpan.org)
425:nobodyさん
07/10/24 01:04:04
暗号化関連の質問です
メールフォームを使っててブラウザとサーバの間はSSLで暗号化してます
でもサーバからsendmailで送信するメールも暗号化してないと意味ないですよね?
Perlでどうやってやってます?S/MIMEかPGPが使えるの?(´・ω・`)
426:nobodyさん
07/10/24 01:05:27
そもそもメールを飛ばさないという選択肢を検討すべきではないか
427:421
07/10/24 02:01:47
>>424
なるほど、ぐぐってみてわかりました。
EncodeーEUCJPMSでcp51932も使えるようになるんですね。
標準のEncodeになんで実装しないんだろ、これ。
428:nobodyさん
07/10/24 06:10:09
>>425
URLリンク(search.cpan.org)
URLリンク(search.cpan.org)
求められる安全度、対象ユーザのITリテラシ、かけられるコスト
等を検討すると、暗号化メールの使えるシチュエーションは
かなり限られてそうだ。金融機関やNSPだと大抵郵送だな。
429:nobodyさん
07/10/25 16:41:10
スペースは or に変換するが、クォートにかこまれたスペースは変換しない。
これの実装がうまくいきません。
例えば
tenis ball は tenis or ball に変換するけど
'tenis ball' はそのままっていうのはなんとか出来たんですが、
'tenis ball' 'base ball' のときは
'tenis ball' or 'base ball' にするのがどうしても出来ません。
orを入れたい場所もクォートに囲まれてると判断されてしまうのです。
どなたか助けてください。
430:nobodyさん
07/10/25 17:03:22
>>429
my @list = (
q{tenis ball},
q{'tenis ball'},
q{'tenis ball' 'base ball'},
) ;
for my $line ( @list ){
print join ' or ',
map{ /'/ ? $_ : split /\s+/, $_ }
split /\s+(?=')/, $line ;
print qq{\n} ;
}
431:nobodyさん
07/10/26 05:03:54
foreach(@list){
my @token = m/('[\w\s]*'|\w+)(?:\s+|$)/g;
print join (' or ', @token), "\n";
}
432:429
07/10/26 15:02:18
>>430
すみません、できるだけワードは固定してない方がいいのですが・・・うまく動きませんでした。
>>431
おぉ、なんかうまく動きそうです。
でも、クォートの部分を除外して配列に納めたいのですが、どうしたらいいのでしょうか?
433:nobodyさん
07/10/26 23:17:20
>>432
430は全角文字(スペースも含め)を半角に変換してもダメか?
それと「クォートの部分を除外」って意味が分らん。単に
クォートを削除したいだけなら、そのぐらいは自力で考えてみたら?
434:nobodyさん
07/10/27 10:01:02
Encode::JP::H2Z
ってなんでeucjpの糞使用なの?
ユニコードのまま渡せて処理出来ればいいのに。
435:nobodyさん
07/10/27 11:34:06
>434
そういうことはdankogaiに直接文句つけて来い
436:nobodyさん
07/10/27 13:36:03
>434
じゃあお前さんがそういうの作れば?
437:nobodyさん
07/10/27 16:43:19
>>434
Jcode::H2Z (Jcode.pm のサブモジュール) そのままだから。
438:nobodyさん
07/10/27 18:53:28
utf8もページからフォームを入力して送信させると、
「〜」の文字だけがなぜか正常に送信されないのですが、なぜでしょうか?
439:nobodyさん
07/10/27 22:19:08 jIrqvOa/
return +{};
という記述の意味を教えて下さい
空ハッシュを返すという事でしょうか?
440:nobodyさん
07/10/27 22:50:14
>>438
何を以て「正常に送信されない」と判断したのか。
Wikipedia項目リンク
URLリンク(euc.jp)
URLリンク(www.asahi-net.or.jp)
>>439
URLリンク(perldoc.jp)
> 単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、
> 何もしません。関数名に続けて括弧付きの式を書く場合に、関数の
> 引数リストと解釈されないようにするために用いることができます。
441:nobodyさん
07/10/27 23:21:31 jIrqvOa/
>>440
ありがとうございます、単項演算子についてはわかったのですが
とあるCPANモジュールのコードで
return +{} unless $data;
というコードがあったのですがこれを
return {} unless $data;
と書かずに単項演算子の+をつけるのは
何か意図があるのでしょうか
戻り値自体はどちらでも同じような気がするのですが、、
442:nobodyさん
07/10/28 00:49:00
ブロックとして解釈される場合があるんじゃね
443:nobodyさん
07/10/28 04:52:46
+{ } :無名ハッシュでコンパイル
{; } :コードブロックでコンパイル
444:nobodyさん
07/10/28 08:38:20
URLリンク(www.nicovideo.jp)
Perlで予約語プログラミング
445:nobodyさん
07/10/28 08:48:47
URLリンク(www.nicovideo.jp)
Perl Programming: Web::Scraperモジュールの利用
↑これ何やってるの?
446:nobodyさん
07/10/28 08:54:29
URLリンク(www.nicovideo.jp)
Perl Catalyst Programming (入門編)
↑これも何をやっているのか、
さっぱりわからんよ
447:nobodyさん
07/10/28 09:22:22
まぁプログラミングを動画で見てもわからんよなw
448:nobodyさん
07/10/28 09:30:40
そうか?
この動画だけは「何をやろうとしてるか」だけは伝わるぞ
URLリンク(www.youtube.com)
449:nobodyさん
07/10/28 11:24:36
>>448
Aho da...orz
450:nobodyさん
07/10/29 02:42:49
>>446 にある動画はなんかおかしいと思う。
451:nobodyさん
07/10/29 11:17:19
質問させてください。
指定した文字が何回続いたかを取得したいのですがどうしたらいいですか?
例)この場合指定した文字は1です。
$a = '1111222';
$b = '1111136';
$aは4
$bは5
よろしくお願いします。
452:nobodyさん
07/10/29 11:56:14
$a='1111222';$i='1';($r)=($a=~m/($i{2,})/);print length $r
全角はシラネ
453:nobodyさん
07/10/29 11:59:30
$a = '1111222';
$c= 1;
$n= length(($a=~/((?:\Q$c\E)+)/)[0])/length($c);
454:nobodyさん
07/10/29 12:31:05
perlは色んなやり方があって面白いね
$a = '111111222';
$n = '1';
$count = length(($a =~ /($n+)/)[0]);
455:nobodyさん
07/10/29 13:04:18
>>451
$test_str = '111234111111';
$char = '1';
こういう場合は後半気にせず、まず見つけた連続の 3 でいいの?それとも、より長い連続の 6?
「はい、6 が得られるようにしたいんです」だと上に回答を書いた皆さんが優しくキレるかも。
あと、例なんだろうけど $a や $b は地雷踏むことがあるから気をつけてね。
456:nobodyさん
07/10/29 13:25:31
use strict;
use warnings;
test('1111222' => 1 );
test('1111222' => 2 );
test('111122211' => 1 );
test('111122211' => 1 , 1);
test('1111136' => 1 );
sub test {printf "%s:%s:%s\n",$_[0],$_[1],_test(@_)}
sub _test {
local($a,$b);
(sort {$b<=>$a} map {length($_)} ($_[0] =~ m{($_[1]+)}g) )[ $_[2] ? -1 : 0 ];
}
457:nobodyさん
07/10/29 17:04:12
my $i = '1' ;
print +( length ) . qq{\n} for split /[^$i]+/ ,$a ;
458:456
07/10/29 19:24:03
見直したらgdgdだったので修正しとく
sub _test { ( sort map length,$_[0] =~ /(${_[1]}{2,})/g )[$_[2] ? 0 : -1] }
459:nobodyさん
07/10/30 23:38:44
一つのファイルで処理がたくさん書いてあって分岐させる時に、
例えば
$mode = $cgi->param('mode');
というデータを受け取って、処理の場合わけをする場合どういう書き方がエレガントなんでしょうか?
現状は
if ($mode eq 'post') { &post}
elsif ($mode eq 'edit') { &edit;}
elsif ($mode eq 'delete') { &delete}
else { &error}
こんな感じなのですが、それは初心者の書き方だって馬鹿にされました。
悔しいのでもっと効率的な方法があったら教えてください。
460:JAPU ◆lVJAPUTeX.
07/10/30 23:52:20
>>459
エレガントかは分からないけど、分岐がある程度多い場合はこんな書き方だとすっきり書けるかと。
%actions = (post => \&post,
edit => \&edit,
delete => \&delete);
if(exists $actions{$mode}) {
$actions{$mode}->();
} else {
error();
}
数個程度なら if で分岐されちゃってもいいと思いますし、実際そうしています。
461:nobodyさん
07/10/30 23:58:03
>>459
それでいいんじゃね?
各サブルーチンに戻り値があるなら「三項演算子」って手もあるし、
以下の様なやり方もあるけど、普通に書いてメンテ出来るものならば
バカにされても放置しとけば?
my %hash = (
post => sub { 1 } , # &post の内容を書く
edit => sub { 2 }, # &edit の内容
delete => sub { 3 }, # &delete の内容
) ;
print $hash{'edit'}->() || q{error} ; #q{error} には&error あたりを、、、
ソース全体を見たら綺麗な書き方があるかもしれんが、
それに関しては情報不足。
462:nobodyさん
07/10/30 23:59:04
ああ、丸かぶりだorz...
463:nobodyさん
07/10/31 00:10:35
せめて、CGI::Applicationくらい使っとけって話なんじゃ。
if文分岐も分かりやすいと思うが、へたに小細工するとますますへたっぴに見える。
464:nobodyさん
07/10/31 12:11:23
三項演算子ってタマに見かけるけど読みづらいんだよな。
使いたくない書き方No1かも。
465:nobodyさん
07/10/31 13:29:29
$expr1 ? $expr2
: $expr3 ? $expr4
: $expr5 ? $expr6
: $expr7
;
書き方か頭が悪いんだろ
466:至急
07/10/31 15:17:23
CGIを自宅出張でサポートしてくれる方募集します。
CGIに詳しく都内に来れる方であれば可能
一日日払い即金で払います。
詳細はメール下さい。
467:nobodyさん
07/10/31 15:47:41
>>459
エレガントかしらないけどこんなパッケージ作ってる。
(不要箇所削ったのでそのまま動くか不明)
package Local::Base;
use strict;
use warnings;
our $DEBUG = 0;
sub class {ref$_[0]||$_[0]||__PACKAGE__}
sub new {(bless {} => class( shift() ))->init(@_)}
sub mode :method {shift->param('mode',@_)}
sub method_name :method {shift->{method_name}->{ shift() }}
sub default_method :method {die('不正なmodeを受け取りました')}
sub init :method {
my $self = shift;
my %param = @_;
$self->{method_name} = $param{method_name} || {};
return $self->run_method( $self->mode , @_ );
}
sub run_method :method {
my $self = shift;
my $method = $self->method_name( shift );
$method = 'default_method' unless $method && $self->can( $method );
return $self->$method(@_);
}
1;
468:nobodyさん
07/10/31 17:36:51
>>467
外部からinitとか呼ばれちゃわない?
469:nobodyさん
07/10/31 19:51:49
>>467 method_nameチェックしてるから大丈夫
使い方も書いたつもりだったんだけど書けてなかった。
#!/usr/bin/perl
use strict;
use warnings;
use base qw(Local::Base);
my $r = eval{
__PACKAGE__->new(
method_name => {
edit => 'edit',
post => 'post'
}
)
} || $@;
print CGI->header,$r,"\n" unless ref $r;
######################################################################
# editの動作を定義
sub edit :method {
my $self = shift;
print $self->header;
print "EDITモード";
return $self;
}
1;
470:nobodyさん
07/10/31 20:11:48
sub edit :method {
この :method って何の意味だっけ
perlsub見ても載ってないや
変数にも付けれた気がしたが
471:nobodyさん
07/10/31 21:09:19
perlsub に載ってるし、perldoc attributesすれば詳細分る(perl5.8.1)。
perl attributes でググれば日本語のサイトも沢山出る。
変数に付けられるのは 5.8系
472:nobodyさん
07/11/01 01:06:18
実際、CGI::Applicationとか使うと効率的になるの?
自分でゴチャゴチャ作るよりも。使ってる人いる?
473:nobodyさん
07/11/01 02:26:10
CGI.pmで書くには複雑だけど、Catalystとかのフレームワーク持ち出すまでもないときには使える
474:nobodyさん
07/11/01 10:48:57
> CGI.pmで書くには複雑だけど、Catalystとかのフレームワーク持ち出すまでもないときには使える
CGI::Application もフレームワークじゃないの?
475:nobodyさん
07/11/01 17:27:41
>>470
:methodは組み込みのattribute
Attribute::Handlers使うと自作のattributeも作れる。
…がいつ仕様が定まってなくて変更があるかもってどっかで読んだ気がする。
>>474
・自分しかいじらない
・少人数で知識の共有が容易
・マニュアルが整っている
のどれかなら自作のフレームワークの方が慣れてるだろうし開発効率いいんじゃないかな?
フレームワーク自体のメンテナンスが(出来る|しなきゃいけない)のはデメリットか?
既製のフレームワーク使うのは
・他の人と知識の共有しやすい
・ドキュメントがある/(第3者も使ってるので)ノウハウが検索しやすい
・フレームワーク自身のメンテナンスを(あまり)しなくていい
ってとこかな?
476:nobodyさん
07/11/01 18:07:59
>>475
???
477:nobodyさん
07/11/02 11:22:36
/public_html/test/log.txt を、UTF8→SJISに変換して、
別名で保存するにはどうすればいいでしょうか
Perl 5.8.8なのでuse Encode;を利用する、読み取り専用で1行ずつ変換処理する
あたりまでは勉強しました。スマートな方法よろしく御教示おねがいします
478:nobodyさん
07/11/02 13:22:56
ログをShift_JISに変換ではなく、表示する時にsjisに返還して表示するようにして、
データはutf-8のままのほうがよくないかな。
479:nobodyさん
07/11/02 13:29:46
>>477
まずは自分で書いた糞コード晒すのが先じゃね?
480:nobodyさん
07/11/02 14:01:12
>>477
おまえさんの「スマート」の基準が判らんのだが、
Encodeで何か不足でもあったのか?
481:nobodyさん
07/11/02 16:43:20
nkf -s log.txt > log.sjis.txt
482:nobodyさん
07/11/02 17:17:33
>>481
すげー!、シェルスクリプトですよね?
sshができない場合はこんな感じで利用すればいいのかな
system("nkf -s log.txt > log.sjis.txt");
1つ気になるのがjcode.plなど元の文字コードを指定するのがあると思うのですが、
&jcode::convert(\$_, 'sjis' ,'utf8');
nkfでは気にしなくても自動判別完璧なのでしょうか?
483:nobodyさん
07/11/02 17:34:58
もはやPerlに何の関係もない
484:nobodyさん
07/11/02 17:51:47
>>477
use Perl6::Slurp;
use Jcode;
$c = slurp "log.txt";
Jcode::convert(\$c, "sjis", "utf8");
open($fh, ">", "log.sjis.txt");
print $fh $c;
>>482
jcode, Jcode, nkfは、判別できる場合は判別してくれる。
485:nobodyさん
07/11/02 22:18:35
>>484
頭足りてないのは理解した。
486:nobodyさん
07/11/05 07:24:22
gethostbynameについての質問です。
コマンドプロンプトだとnslookup -> set type=***
UNIXならhost -t ***
でクエリタイプを設定できるんですけど、PERLの場合はどうやるのでしょうか。
487:nobodyさん
07/11/05 10:55:44
>>486
URLリンク(search.cpan.org)
488:nobodyさん
07/11/05 11:20:15 6nXAnQ+n
ファイルのオープンでエラーになります。
open(FILE,">".$workFname) or die "Cannot Output File: ";
あらかじめファイルを持たせておいて、書き込み権限を与えておけば
成功しますが、新規にファイルを作成できません。
どうすればいいのでしょうか。
489:nobodyさん
07/11/05 12:21:09
ディレクトリのパーミッションかな
490:nobodyさん
07/11/05 13:05:21
>>489
解決しました、ありがとうございます。
491:nobodyさん
07/11/05 13:19:35
die するときに $! も含めるべき。
492:nobodyさん
07/11/05 13:22:45
自分の環境では、相対パスではエラーになるので、絶対パスに書き換えてます。
できれば相対パスのままで動くようにしたいです。どうすれば解決できるか分かる
方はおられませんか。まあ、あまり解決策が複雑なら、とりあえずあきらめてこの
ままにしておくつもりですが。
493:nobodyさん
07/11/05 14:36:06
>>492
まず「何を」相対パスにしようとしているのかくらい書こうぜ。
あと「自分の環境」は書かなきゃ誰にも伝わらない。
494:nobodyさん
07/11/07 09:25:24 R3XG8Srf
Perlで関数の引数に二次元配列を渡すのは無理ですか。
495:nobodyさん
07/11/07 09:32:37
>>494
ヒント:リファレンス
496:nobodyさん
07/11/07 11:46:06 R3XG8Srf
次のソースのsub kansuのforeachの行は何と書けば正しく動きますか
#!perl/bin/perl
use strict;
sub kansu{
my $ref1 = shift;
my $value1;
foreach $value1($$ref1) {
print $value1 . "\n";
}
}
sub main{
my @databox1 = (13,1,6,3,9,8);
my $ref1 = \@databox1;
usort_kansu(@databox1);
}
main();
497:nobodyさん
07/11/07 11:47:42
誤: usort_kansu(@databox1);
正: kansu(@databox1);
498:nobodyさん
07/11/07 12:36:16
>>496
「言語的意味で」正しく挙動させるには
foreach $value1($ref1) {
(多分)あなたの望んだ挙動にするには
ソースの殆どに手を入れる必要がある。
∴ 本読んでからどうしても分らんかったら
質問し直せ
499:nobodyさん
07/11/07 14:24:36
>>496-498
#!perl/bin/perl -w
use strict;
sub kansu {
my $ref1 = shift;
# my $value1;
foreach my $value1 (@$ref1) {
print $value1 . "\n";
}
}
sub main {
my @databox1 = (13,1,6,3,9,8);
my $ref1 = \@databox1;
kansu($ref1);
}
main();
500:nobodyさん
07/11/07 15:22:14 vLJSXT0R
コーディングじゃないのですが該当スレが見当たらず、新規スレにするような質問でもないと思いこちらに質問します。
.qmailからperlスクリプトを呼び出しているのですが、その場合エラーログを取るにはどうしたらよいのでしょうか?
不正終了しているようなのですが、原因がつかめません。
501:nobodyさん
07/11/07 15:43:21
eval { require スクリプト; };
if ($@) {
open(LOG, ">>/path/to/ログファイル名") or die;
print LOG "WARNING: $@";
close(LOG);
}
こういうスクリプトをqmailから呼び出せばどーよ
>499
forearch行を書き換える条件だからforearch my $value (@_){ って書いて欲しかったのかと・・
502:501
07/11/07 15:59:10
foreach $value1($ref1,@_) {
こうか
503:500
07/11/07 16:13:30
>>501
ありがとうございます。
試してみます
504:nobodyさん
07/11/07 18:20:14
STDERRに吐いた文字はqmailのログにのこるでしょ?
ログが見えないならプログラムを置くべきではないと思う。
505:nobodyさん
07/11/07 18:46:18
>>504に同意だけど、
とりあえず、STDERRをファイルにでもリダイレクトすればどうなん?
506:500
07/11/07 19:59:45
>>504
qmailのログとはmaillogでしょうか?
スクリプトからは何もログを吐いていないんです。
sudoでapache権限で実行してるからログ吐かないのかな。
507:nobodyさん
07/11/07 20:05:11
|/path/to/script.pl >> /path/to/error.log 2>&1
508:500
07/11/07 20:13:46
>>507
ありがとうございます。
.qmailでもログ指定しないといけないんですね。
509:nobodyさん
07/11/07 21:32:38
>>500
何かとんでもない設定でqmail動かして無いか?
510:500
07/11/07 22:29:30
>>509
いえ。
.qmail内でperlのみsudoしてapache権限で動かしてます。
qmailはvpopmail権限で動かしてますよ。
>>507さんでログ取れました。m(__)m
511:nobodyさん
07/11/09 15:33:58
UTF-8でperlを書きたいのですが、文字コードをperlにどのように知らせればよいのでしょうか?
512:nobodyさん
07/11/09 15:47:46
>>511
plagger のソース読むといいよ!
513:nobodyさん
07/11/09 17:28:52
>>512
それ無理に流行らそうとしなくていいよ
514:nobodyさん
07/11/09 17:49:37
tokuhirom自重
515:nobodyさん
07/11/09 18:08:33
Perl死んじゃうん?
516:nobodyさん
07/11/09 18:57:53
(・∀・)ニヤニヤ
517:JAPU ◆lVJAPUTeX.
07/11/09 18:59:46
>>511
use utf8;
518:nobodyさん
07/11/09 19:09:09 8S2oyKnm
>511
use dan;
で解決するよ。
519:nobodyさん
07/11/09 19:26:50
tokuhirom の直近の発言をコピペすることによりスレを荒らす tokuhacks.
520:nobodyさん
07/11/09 21:31:54
plaggerのソース読めって言ってるやつのほとんどはplaggerのソースが読めない
521:nobodyさん
07/11/09 22:28:46
コード解説読めってならともかくコード読ませたってしょうがないだろ。Perlなんだから
522:nobodyさん
07/11/09 23:35:40 8S2oyKnm
tokuhiromのソース読めって言ってるやつのほとんどはtokuhiromのソースが読めない
523:nobodyさん
07/11/09 23:39:07
プラガー(笑)
524:nobodyさん
07/11/10 10:49:28 Z9OcedPC
web上の圧縮ファイル(.lzh)をダウンロードして保存、
さらにその圧縮ファイルを解凍するスクリプトを作りたいです。
例えば、LWP::Simpleを使った場合
my $dat = get('URLリンク(hoge.com)');
の後はどう処理していけばいいでしょうか?
525:nobodyさん
07/11/10 11:02:39
> の後はどう処理していけばいいでしょうか?
lha 書庫を解凍する処理を行えばよい。
526:nobodyさん
07/11/10 11:03:28
>>524
はい。
URLリンク(www.google.co.jp)
527:nobodyさん
07/11/11 02:16:45
2chみたいに携帯から固有のIDを作りたいんですが
どうすればいいんでしょうか。
528:nobodyさん
07/11/11 07:14:50
>>527
i-mode:UTN
EZweb:HTTP_X_UP_SUBNO
Y!:UA
529:nobodyさん
07/11/11 14:32:10 4iiY3aOI
正規表現について質問です。
urlからファイル名だけを取り出したいです。
例えば、$urlという変数に下の3つのurlがあった場合は
hoge1.html, hoge2.html, hoge3.htmlを取り出したいです。
URLリンク(localhost)
URLリンク(localhost)
URLリンク(localhost)
下のように自分でやってみたのですが、localhostの前の/から取得してしまいます。
if( $url =~ /\/(.*\.html)$/ ){
print $1 . "\n";
}
どうすればやりたい事ができますか?
教えてください、お願いします。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4893日前に更新/271 KB
担当:undef