Perlについての質問箱 6箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc2.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
過去ログは>>2-5あたり
0002デフォルトの名無しさん
NGNGPerlについての質問箱 2箱目
http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
Perlについての質問箱 3箱目
http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
Perlについての質問箱 4箱目
http://pc2.2ch.net/test/read.cgi/tech/1048519394/l50
Perlについての質問箱 5箱目
http://pc2.2ch.net/test/read.cgi/tech/1053053082/
0003デフォルトの名無しさん
NGNGPalmOSの代わりにPerlOSなんてどうでしょう。
0004デフォルトの名無しさん
NGNGおまえがやってみろ痴呆が
餓鬼がモウソウタレテンジャネーヨ
0005デフォルトの名無しさん
NGNG何がおかしいのかわからない俺はおかしい?
0006デフォルトの名無しさん
NGNGコノスレハいたち外です
移動をよろしくお願いします
PHP板は半分はPErlのスレで埋め尽くされています
とくにCGIは「こちらできいてください
削除依頼出してくだっさい
Perl コーディング初心者質問コーナー Part26
http://pc2.2ch.net/test/read.cgi/php/1059043704/
Perl コーディング初心者質問コーナー Part26
http://pc2.2ch.net/test/read.cgi/php/1059043704/
Perl コーディング初心者質問コーナー Part26
http://pc2.2ch.net/test/read.cgi/php/1059043704/
Perl コーディング初心者質問コーナー Part26
http://pc2.2ch.net/test/read.cgi/php/1059043704/
Perl コーディング初心者質問コーナー Part26
http://pc2.2ch.net/test/read.cgi/php/1059043704/
0007デフォルトの名無しさん
NGNGおかしいのは あ い つ の 脳 味 噌
0008デフォルトの名無しさん
NGNG書き方が少し分かりにくかったですね。
$hoge="\x9A";
となっているときに
$hogeの中身を「\x9A」という文字列に変更したいのです。
つまり表示したときに「\x9A」となっていればいいです。
標準関数でやることではないですか?
$hoge=~s/\x9A/\\x9A/;
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG$hoge =~ s/(.)/'\\x' . uc unpack 'H2', $1/eg;
0012デフォルトの名無しさん
NGNG$hoge='\x9A';
0013デフォルトの名無しさん
NGNGうぉ!ありがとうございました!
0014ハッカ飴
NGNGじゃあ俺の話は忘れていいから、Algorithm::Diffのドキュメントにある例をLCS()に掛けてみれば良いよ。
ドキュメントと違う結果になるから。
あと>>7、宛て名でも書いとけ。
0015デフォルトの名無しさん
NGNGWebフォームからユーザー名$userを書き込んで
actionスクリプトにある$userに反映させるにはどうしたらいいんですか?
001615
NGNGcgiユーザーはwwwです。
で、ユーザー側でquotaを調べたいのですが、
このままでは、ユーザーがwwwなので出来ません。
apacheがSuEXECだといいのでしょうが、、、、
他のやりかたで、cgiをroot権限で動かすこtなんか出来ますか?
それで駄目なら、ユーザー名を書き込むことによって
root権限のシェルスクリプトが起動するようにとか出来ますか?
001715
NGNG板違いですた!
∧∧
/⌒ヽ)<逝ってくる
i三 ∪
〜三 |
(/~∪
三三
三三
三三
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGAlgorithm-Diff-1.15.tar.gz落としてきてやってみた。
use Algorithm::Diff;
use strict;
print "--LCS----------------------\n";
my @seq1 = qw(a x b y c z p d q);
my @seq2 = qw(a b c a x b y c z);
print "@seq1\n@seq2\n\n";
my @result = Algorithm::Diff::LCS(\@seq1, \@seq2);
print "@result\n";
print "\n--diff---------------------\n";
@seq1 = qw(a b c e h j l m n p);
@seq2 = qw(b c d e f j k l m r s t);
print "@seq1\n@seq2\n\n";
@result = Algorithm::Diff::diff(\@seq1, \@seq2);
foreach my $hunk (@result) {
print "-" x 10 . "\n";
foreach (@$hunk) {
print join(", ", @$_) . "\n";
}
}
002120
NGNG--LCS----------------------
a x b y c z p d q
a b c a x b y c z
a x b y c z
--diff---------------------
a b c e h j l m n p
b c d e f j k l m r s t
----------
-, 0, a
----------
+, 2, d
----------
-, 4, h
+, 4, f
----------
+, 6, k
----------
-, 8, n
+, 9, r
-, 9, p
+, 10, s
+, 11, t
diffの9桁目がドキュメントと逆になってるけど、別に問題はないと思われ。
0022ハッカ飴
NGNG> a x b y c z p d q
> a b c a x b y c z
>
> a x b y c z
これじゃあ分からないよ。
問題は
> a x b y c z
の a がどっちの a かということ。
ドキュメントには2つめのaだと書いてあるけど、実際はそうじゃないんだ。
0023ハッカ飴
NGNG0024デフォルトの名無しさん
NGNGこういう場合にIEなどの普通のブラウザなどではそのまま認証を
受ければHTMLファイルを取得することができブラウザ上に表示されるわけですが、
これをPerlで行うにはどうしたらよいのでしょうか?
わたしが考えたのはIEのcookieをPerlでも使えるようになんか設定をいじればいいのでは
ないかと思ったのですが方法がわかりませんし、もっといい方法があるのかもしれませんが
私にはわかりません。
ちなみに環境はWin2K+ActivePerl5.8.0.804で、HTTP::Liteで取得しています。
もしわかる方がおられたらお願いします。
0025デフォルトの名無しさん
NGNG$ENV{'HTTP_COOKIE'}
002620
NGNGスマンかった。
LCSの方の配列でdiffやったら、確かにお前さんの言う通りの結果になった。
他にも似たようなパターン作ってやってみると、
必ず先頭を一致させて途中に埋め込んだような結果になるな。
確かにドキュメントとは違うが、一般的にはこういう結果だと思う。
俺はこの分野に詳しいわけじゃないから理由はわからないが、
なるべく前の方に一致する点を置くようにしてるんじゃないかな。
綺麗に一続きの部分を取り出したいって気持ちもわからなくはないが。
002724
NGNGそれをいれて実行してみたのですがその変数には空文字しか入ってませんでした。
私が機能として欲しいのは
あるURLに対して$http->requestを発行したときに相手側にcookieが送られるか何かして
認証を受けて$http->bodyでHTML本体が取得できるようにしたいのですが
$ENV{'HTTP_COOKIE'}に何か入れなければならないのでしょうか?
あと書き忘れましたがソースです
$http->reset();
$http->add_req_header("","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)");
$ret = $http->request(対象URL);
if($ret ne "200"){
### エラー時の処理
}
$list_body = $http->body();
お願いします。
002820
NGNGなんか勘違いしてた。
LCSって連続した共通部分が最も長いパターンを導出するのかと思ってたんだけど違うんだな。
ttp://lecture.ecc.u-tokyo.ac.jp/~yamaguch/pub/cp2-9/LCS.html
a b x b y c z p d q ←2番目にbを追加してみた
a b c a x b y c z
で返ってくるのが
x b y c zじゃdiffとして役に立たないし。
というわけで、Algorithm::Diff::LCSはおかしくない。
diffの結果一続きになってくれない理由は相変わらず不明だが、
そうしなければいけないわけでもないし。
とりあえずドキュメントが間違い&例が悪いに一票。
0031デフォルトの名無しさん
NGNGLWP::UserAgent
HTTP::Cookies
HTTP::Headers
この辺も調べれ
ここまでくると、WebProgの範疇だな。
003231
NGNGWebProg板で同じ質問すると、
「散々がいしゅつ」
「過去ログ見れ」
「ググれ!」
って言われるからな。
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG取り出したいんですがそんなことできますでしょうか?
イメージとしてはこんな感じなのですが↓
print STDIN "unko";
print <STDIN>; # unkoを表示
0036デフォルトの名無しさん
NGNGprint STDIN "unko";
print <STDOUT>;
できるか、ぼけ。
0037デフォルトの名無しさん
NGNGprint "abo-n\n";
print <STDIN>;
イメージとしてはこんな感じでないのかな?
0038デフォルトの名無しさん
NGNGメデタイな
0039デフォルトの名無しさん
NGNGprint <STDIN>;
↑ a.pl
# echo unko | perl a.pl
↓実行結果
unko
実行可能な例としてこんな感じなんですが、
このパイプで標準入力にデータをつっこむ作業をperlのなかでやりたいのです。
>>36 できねえのかよ!こんちくしょう!うわーん!
>>37 白いカーソルが点滅してうんともすんとも言わずにとまります。
0040デフォルトの名無しさん
NGNG意味あんのか?
0041デフォルトの名無しさん
NGNGでいいんでないの?
004235
NGNGCGIの軽い動作テストをするためCGI環境エミュレータがほしいのです
require "cgiemu.pl"; するとCGI用の環境変数とか設定されてCGIの環境ができる感じ
QUERY_STRINGなどを得るのにいちいちブラウザからアクセスしないといけないのが面倒なもんで
$ENVとかのデータは適当にデータを定義すれば用意出来るけど、
POST(標準入力)のデータは用意できないので困ってたんですよ
標準出力のためにコマンドラインからいちいちパイプするのは面倒だし
requireだけで済ませたいし。
でも、大した用途でもないからあきらめます
004335
NGNGこれでPOSTメソッドのテストができるよ。ありがとう!
*STDIN = *DATA;
print <STDIN>;
__END__
data1=aaa&data2=bbb&data3=ccc
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGパンティーが見えそうな位に短いスカート、ムチムチした足にルーズソックス。
私自身も大のセーラーフェチなんです。
そんな欲望を満たしてくれる動画だけを徹底的に集めました。
無料ムービーを観てください。
http://www.pinkschool.com/
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGどなたか作り方を教えていただけないでしょうか?
絵がぐるぐる動くようなものではなく、あるBBSのデータを
HTTPでGETしてきて、テキスト表示するようなものを
作りたいと思っております。
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGアクティブデスクトップで頑張れ
0054ハッカ飴
NGNGそうか、LCSのLが「最長」だから、てっきり連続しているものと思ってたが、細切れでもいいんだな。
例が悪いといえば、ドキュメントのこの部分は例を間違えているな。
| a.x.b.y.c.z.p.d.q
| a.b.c.a.x.b.y.c.z
|
| A naive approach might start by matching up the C<a> and C<b> that
| appear at the beginning of each sequence, like this:
|
| a.x.b.y.c.........z.p.d.q
| a...b...c.a.b.y.c.z
単純な方法でやると結果がどうなるかという例だけど、下の例(処理結果)で x が抜けている。
もし x があれば、この方法でもちゃんとLCSが見つかりそうだ(笑。
a...........x.b.y.c.z.p.d.q
a...b...c.a.x.b.y.c.z
----------
書き換え自由な板に利用しようかと思っていたが、書き込みの差分を求めるにはちょっと使いにくそうだ。
0055ハッカ飴
NGNGカーソルが出たままで止まっているのは、キーボードからの入力を待ってるんだよ。
標準入力とは具体的にはキーボードだから。
キーボードから何か打ち込んでCtrl+Zで入力できるよ。
----------
標準入力を実行中に変える方法は思いつかないけど、それ以前、つまり実行するときに
perl a.pl <post.txt
とすればテキストファイルの中身を標準入力として扱える。
もう1つ、やっぱり標準入力を実行中に変えるわけじゃないけど、PerlスクリプトからPerlスクリプトを実行してもできるんじゃないかな?
つまり、echo unko|perl a.pl をPerlスクリプトの中で実行するということ。
使ったことが無いんで、すぐにサンプルは思いつかないけど、Perlではパイプを使って好きなコマンドを実行できるらしい。
って>>43で解決してるのか(笑。
0056デフォルトの名無しさん
NGNGwhile ($sth->fetch) {
print "$row{region}: $row{sales}\n";
}
Perlの小技でみたのですが、どうしてこれで、
$row{region}
に値が入るのですか。@row{ ... }の部分のしくみがわからないです。。。
どなたか解説してくだされ。。。
(動かすのには成功しているのですが、@row{ ... }の部分をどう解釈するのがわからない。。。。)
0057デフォルトの名無しさん
NGNG配列スライスでググるか
Data::Dump::dumpで中身書き出せ
0058ハッカ飴
NGNG@row{...}は%rowの一部分だと思う。
ハッシュの一部だけを扱いたいときにそう書くことができるんだ。
さらに、これは左辺値としても使える。
例えば、一度に複数の値をハッシュに入れたいときはこうできる。
@hash{a,b,c} = qw(A B C);
(確認するにはこれを実行)
print "\$hash{$_}:$_\n" foreach keys %hash;
0060山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0061デフォルトの名無しさん
NGNG%aa=("hanako","12","tarou","20","ichirou","5");
となっているとします。
キーが名前で値が年齢なんですが、
年齢でソートし表示させる場合、
ichirou 5
hanako 12
tarou 20
とするにはどうすればいいのですか?
どうしてもうまくいかないのです。お願いします。
0062デフォルトの名無しさん
NGNGperldoc perlfunc
でsortを検索してください
そしたら↓みたいなのがのってます
#!/usr/bin/perl
%aa=("hanako","12","tarou","20","ichirou","5");
my @ageAV = sort { $age{$a}<=> $age{$b}} keys %aa;
foreach $i (reverse @ageAV){
print "$i $aa{$i}\n";
}
このスレには馬鹿しかこないから今度から
↓出来で聞いてね
Perl コーディング初心者質問コーナー Part27
http://pc2.2ch.net/test/read.cgi/php/1060808783/
0063デフォルトの名無しさん
NGNGなるほど。書いていただいたサンプルと、自分であれこれ試してみたらなんとなく
理解できたような気はします。ありがとうございました。
0064デフォルトの名無しさん
NGNG%aa=(
"hanako" => 12,
"tarou" => 20,
"ichirou" => 5
);
print join "\n" =>
map { "$_ $aa{$_}" }
sort { $aa{$a} <=> $aa{$b} }
keys %aa;
0065デフォルトの名無しさん
NGNG↑こんな構造の30KBほどのHTML(複数行)から20KBほどの文章を切り出すのに
$/ = undef
open(HTML, "tmp.html");
$_ = <HTML>;
close(HTML);
if(/<td class="iru">([\w\W]+?)<\/td>/im){ print $1; }
とやると
Error:Runtime Exception
と出てしまいます。小さいファイルだとエラーにならないのですが、
これは正規表現で大きな文字列をマッチさせてはいけないということなんでしょうか。
大きなファイルの特定の部分から特定の部分まで読み込む方法があればそれでいいんですが
自分の頭ではこんな方法しか思いつきませんでした。
Active Perl 5.005_03 (jperl)を使っています。
0066デフォルトの名無しさん
NGNG/<td class="iru">(.+)<\/td>/i
0067デフォルトの名無しさん
NGNG$/ = undef の後ろに ; が無いのは typo だとして、
ActivePerl Build522 on Win98SE で試したけど、
1MB のファイルでやっても無事終了。
>>66
それ等価じゃないよ。[\w\W] が気持ち悪いなら
m|<td class="iru">(.+?)</td>|is
0068デフォルトの名無しさん
NGNG失礼しました
007065
NGNGjperlをやめてperlでやったらOKでした(汗)
0071デフォルトの名無しさん
NGNG$i=~//
だとできんのだが
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGキタyo--------
そんな風に書くとはシランカッタ
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG$ perl -e 'print "\n" =~ /^$/, "\n"'
1
0078デフォルトの名無しさん
NGNG/\A\z/ ならOK?
0079デフォルトの名無しさん
NGNGXREA鯖でexecが使えないので代わりのコマンドみたいなのないでしょうか?
0080デフォルトの名無しさん
NGNGXREAではFile::Find は使えないのか?
0081デフォルトの名無しさん
NGNGつか、ディレクトリ開いて自前で処理すればいいと思われ。
0082デフォルトの名無しさん
NGNG#!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if $running_under_some_shell;
require "find.pl";
# Traverse desired filesystems
&find('$dat/');
exit;
sub wanted {
(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-f _ &&
(int(-A _) > $deldatdays) &&
(unlink($_) || warn "$name: $!\n");
}
0083デフォルトの名無しさん
NGNGxargsは?
0084デフォルトの名無しさん
NGNGOK
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGとしてキーボードから入力を得ているのですが、
キーボードからの入力がそのままコンソール上に表示されてしまいます。
これではパスワード等の入力に支障があるので入力した文字を * で表示するようにしたいのですが、
どうしたらよいでしょうか?
0087デフォルトの名無しさん
NGNGそれを行うには標準入出力を制御する必要あり。もっとも、簡単な方法として
ANSIエスケープシーケンスを使って、「非表示」にする方法があるけど、
これだと、画面のハードコピー取られるとハードコピー上には「非表示」に
したはずの文字データが入ってしまうという罠がある
プラットフォーム書いてないからこれ以上のアドバイスがしようがない…。
windows 系なら Win::Console 使えば、前述の標準入出力の制御ができる。
008886
NGNGプラットフォームによって別のコードになってしまうんですか。
そのまま別のプラットフォームへ持っていったりして使う予定だったので、
プラットフォーム依存になってしまうのは困ります。
何か、Perlでは無理そうなので諦める事にします。
ありがとうございました。
0089デフォルトの名無しさん
NGNGourの方は変数そのものはグローバルだけど、可視性はブロックスコープになる。
#!perl
use strict 'vars';
$our = 1; # compile error
$vars = 1; # compile error
{
our $our;
use vars qw($vars);
$our = 1; # ok
$vars = 1; # ok
}
$our = 1; # compile error
$vars = 1; # ok
0090デフォルトの名無しさん
NGNGそのようなことは可能でしょうか?
0091デフォルトの名無しさん
NGNGhttp://www.leap-yuki.com/r/u.htm
0092デフォルトの名無しさん
NGNG環境依存
0093デフォルトの名無しさん
NGNGキーボードはピアノの自動演奏みたい動くんですかね?
009490
NGNG調べてみたらWin32::Consoleでできるみたいですね。
しかしPerlは何でもできますね。失礼しました。
0097デフォルトの名無しさん
NGNG指定したフォルダ内を全削除するperlコードなら前作ったの(↓)がある。
あとはこれに削除条件でもつけれ。
sub rm{} の中の名前無し関数 sub{} の中身だけ直せばできるはず。
rm("./削除するフォルダ"); # 使用例
sub rm{
dirwalk( $_[0], sub{ (-d $_)?rmdir $_:unlink $_;} );
}
sub dirwalk {
my $path = $_[0];
my $func = $_[1];
my $file;
opendir( DIRWALK, $path ) or ( warn "Can't open $path.\n" and return 0 );
readdir( DIRWALK ); # . を破棄
readdir( DIRWALK ); # ..を破棄
foreach $file ( readdir( DIRWALK ) ){
&dirwalk( "$path/$file", $func ) if( -d "$path/$file" );
&$func($_="$path/$file");
}
closedir( DIRWALK );
}
0098デフォルトの名無しさん
NGNG多分、↓こんな感じかな?
File::Find があれば dirwalkなんて関数はいらないので置き換えてくれ
&sakujo( "/どこか", 5 );
sub sakujo{
$deldatdays = $_[1];
dirwalk( $_[0], sub{
(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-f $_ &&
(int(-A $_) > $deldatdays) &&
(unlink($_) || warn "$name: $!\n");
}
);
}
sub dirwalk {
:
:
010090
NGNGできないみたいですねぇ・・・
>>99
87は私じゃないですよー
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG/(*゚ー゚) /\
/| ̄∪∪ ̄|\/
| 汎用C |/
 ̄ ̄ ̄ ̄
__∧ ∧ アヒャー オレモツカエヨナ!!
/\ (*゚∀゚)\
\/| ̄∪∪ ̄|\
\| 字通Perl| ;;;;;;;,,,,
 ̄ ̄ ̄ ̄,,;;;;;;;;
;;;;;;;;;;;;;;;;;'''
0103デフォルトの名無しさん
NGNGマウスはないっぽいね。
大人しくWin32::API使うとか。
まぁAPIリファとかないときついと思うケド。
0104デフォルトの名無しさん
NGNGperl5.005_03へパッチ適用してjperlで使ってたんですが
それ以降の日本語対応ってどのようになってるんでしょうか?
perl5.8.0とか、いままでのperlプログラムがそのまま使えるんですか?
0105sage
NGNGM君のサーバーにアクセスしてきた人の中で、
K君のファイルにアクセスした人を、
アクセスログ解析して
グラフなり表なりになるものをperlで作るやりかたを教えて下さい。
お願い致します。
0106デフォルトの名無しさん
NGNGマルティ
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG( ノ∀`)ノチャー
0110デフォルトの名無しさん
NGNGPerlだけで事足りると思うのですが、、、
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG制服からしても現役女子高生なのでしょう.。
ペニスのしゃぶり方も非常にいやらしく、慣れています。
ビラビラは大きめでクリトリスは綺麗に剥けており丸見え。
出し惜しみのない本当に良い作品です。
フィニッシュは口内発射でまったく羨ましい限り。
無料画像を観てちょ。
http://members.j-girlmovie.com/main.html
0114104
NGNGありがとう
ほしかった情報そのものです。
■ このスレッドは過去ログ倉庫に格納されています