Perlについての質問箱 4箱目
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001Mr. Moonlight ◆r0zx1vMqaw
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のみに関係する質問を取り扱っていこうと思います。
0002デフォルトの名無しさん
NGNG0003Mr. Moonlight ◆r0zx1vMqaw
NGNG前スレ Perlについての質問箱 3箱目
http://pc2.2ch.net/test/read.cgi/tech/1041205885/
前々スレ 2箱目
http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
0004nobodyさん
NGNGスレたて乙
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/php/1047980851/l50
一応誘導用に張っておきます。
# 前スレの最後のほうに見苦しいやり取りがあったので..
0007デフォルトの名無しさん
NGNG↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
0008デフォルトの名無しさん
NGNGPerlの未来に幸あれ。
0009デフォルトの名無しさん
NGNG環境はWindowsでいいんだよな?
ここから落としてこいや。
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/
0010前スレ958
NGNGレスありがとうございます。
ダウンロードしてREADMEのとおりに
ppm > install DBD-ODBC.ppd
やってみたんですけどダメでした。
ppdファイルはC:\Perl\binの中に入れたんですけど
場所が違いますか?
0011デフォルトの名無しさん
NGNG2次元配列もどき(配列へのリファレンスの配列をコピーして渡したい場合は
逐一自前でコピーするしかないのかな?
0012デフォルトの名無しさん
NGNG普通に渡していいよ。
@array = ( [0,1,2], [3,4,5] );
&hoge(@array);
sub hoge {
print $_[1][0]; # 結果:3
}
0013デフォルトの名無しさん
NGNGsub hoge {
$_[1][0] = 0;
}
としてしまうと、サブルーチンから抜けたとき、データが破壊されてますよね?
サブルーチン内で変更するけど、抜けたら始めのデータと同じというようにしたいんです。
一番いいのは変更しないこと。配列のコピーは高くつくよ。
それでもやりたいならStorableモジュール(5.8より標準)を使う。
use Storable qw(dclone);
sub hoge{
my $arg = dclone \@_;
$arg->[1][0] = 0;
}
0015デフォルトの名無しさん
NGNGSolarisでGNUの/usr/local/bin/ldではなくOS付属
/usr/ccs/bin/ldを使ってしまうためld option invalidで
止まるというトラブルは/usr/ccs/bin/ldを一時的に別名にして
回避できました。しかし今度は
Term::ReadKeyなどの幾つかのmoduleは今度は別のエラー
で止まります.(installできるpackageもある。)曰く、
Running make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl "-Iblib/lib" "-Iblib/arch" -w test.pl
1 .. 8
*** Error code 139
make: Fatal error: Command failed for target `test_dynamic'
/usr/ccs/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
どうもtest_dynamicというtargetのtestでかなりのmoduleのinstall
がこけます.なにか糸口を思いつく人いますか.
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGここで質問しまつ。
正規表現を使って、次のような文字列から、"http://hoge.com"
だけを抜き出したいのでつ。
例1: <a href="http://hoge.com" target="_top">
例2: <a target="_top" href="http://hoge.com">
どのような記述になるでしょうか?
"m!<(a|A)\\s*(href|HREF)\\s*=\\s*\"\\s*([^\"]*)\"\\s*!"
っていう書き方では、例2が当然ながらひっかからないわけですが。。。
0018デフォルトの名無しさん
NGNG/<a\s+href="(.+?)">/i
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG冗談だよ。
0022デフォルトの名無しさん
NGNG正規表現スレは、webprog板にあるよ。
002317
NGNGクスコ。
それらを元に、この表現で落ち着いたヨカンでつ。
/<(a|A).+?(\s*)?(href|HREF)\s*=\s*"([^"]*)"/i
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG冗長と余計は意味が違うと思うぞ。
0026デフォルトの名無しさん
NGNGsingle quote や bare word を考慮しなくてよいのですか。
002723
NGNGW3Cの仕様と違うのでは、、、
(そのように書いてるサイトはありますけど)
0028デフォルトの名無しさん
NGNGちなみにWebProg板の正規表現スレを貼っておく
(テンプレ入りにしてもいいんじゃない?)
正規表現道場@2ch Part2
http://pc2.2ch.net/test/read.cgi/php/1038146241/
0029デフォルトの名無しさん
NGNGttp://www.din.or.jp/~ohzaki/regex.htm
Perlメモ
ttp://www.din.or.jp/~ohzaki/perl.htm
は必読。
0030デフォルトの名無しさん
NGNG(@a, @b) = &sub(@a, @b);
sub a {
my (@a, @b) = @_;
return @a, @b;
}
ってすると、@aだけになっちゃうんですけど。
リファレンス使う方法しかないかな?
0031デフォルトの名無しさん
NGNG> リファレンス使う方法しかないかな?
まあそれがベストだろうね。
0032デフォルトの名無しさん
NGNGサブルーチンに渡すだけならプロトタイプがある。
受け取る時は使えないが配列の長さが分かるならこんな手がある。
(@a[0 .. 3], @b[0 .. 3]) = &a;
0033有名だよな
NGNGreturn @_
}
0034DQN ◆POoODQNNNQ
NGNGNamazu の filter の sub filter ($$$$$) は具体的にどの様な処理を行っているんでしょうか?
また、この関数に適当な情報を与えてフィルターでこした情報をもらいたい場合、どんな感じ
にすればいいんでしょうか・・・・?
ちょっと場違いかもしれませんが暇な人教えてくだつぁい!!
0035デフォルトの名無しさん
NGNGその変数を呼ぶ時はスカラー変数5つ渡せって意味だな。
あいにくと Namazu の filter 関数の使い方は知らんがな。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGJAVAが分からんので、どういう動作をするものなのか解説してちょ。
0038デフォルトの名無しさん
NGNGそもそも厳密な方チェックを行わない言語にinterfaceとか必要ないわけで。
0040デフォルトの名無しさん
NGNGCPAN にこんなのあるようだが?
MRP::Interface
defines object interfaces
0041デフォルトの名無しさん
NGNGMS-dos プロンプトで
perl -v
と入力しても
コマンドまたはファイル名が正しくありません
と出てしまいます。
正しくやればperl のバージョンが表示されるはず
と本に書いてあるのですが何が間違っているのでしょう?
0042デフォルトの名無しさん
NGNGぱす
0043デフォルトの名無しさん
NGNG> パソコンとパールの初心者です
正直かなりきつくないか?
0044デフォルトの名無しさん
NGNGまずはお使いのOSの基本機能を極めてみてはどうでしょう?
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGここではそういうラベルの人はサポート対象外です。
とりあえず "Hello! World" が動くようになってからまた来てください。
0047デフォルトの名無しさん
NGNGって打ってたら笑うんだけどな。
0048デフォルトの名無しさん
NGNGたとえば
SELECT A FROM テーブル名 WHERE 〜
という文があったときにFROMからWHEREの間のテーブル名だけを
抜き出すときはどのようにするのでしょうか?
0049デフォルトの名無しさん
NGNG/FROM ([^\s]+) /;
print $1;
005048
NGNG回答ありがとうございます。
しかし処理がよくわからないのですが
FROM以降で空白以外の文字を抜き出しているのでしょうか?
あまりperlに慣れていないものでして申し訳ないです。
0051デフォルトの名無しさん
NGNGじゃあ、慣れてください。
0052デフォルトの名無しさん
NGNG[^〜]は、〜以外ってこと。
0053デフォルトの名無しさん
NGNG>空白以外の文字を抜き出しているのでしょうか
どう考えても彼はそれは理解していると思うが。
005448
NGNGFROM A,B WHERE C=1 AND D=1 ORDER BY
という文があったとしたら
FROM と WHERE の間にある文字列(A,B)、及び
WHERE と ORDER BY の間にある文字列(C=1 AND D=1)
を抽出することができるのかどうかということです。
ちなみにABCDはそれぞれ決まった値ではないです。
0055デフォルトの名無しさん
NGNG1行じゃ無理でしょ。何らかの解析処理が必要。しかし、SQLパーサを書くのはバカらしい。
って言うかクエリーから情報抜き出さなきゃいけない局面ってどんなのよ?
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG>>1嫁。理解できないならWebProg板に帰れ。
0058デフォルトの名無しさん
NGNGあっちにPerlのみのスレがあるよ?
0059デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/php/1030548610/
これら
0060デフォルトの名無しさん
NGNGSQLパーサくらいならどこかのマニアが正規表現化してそうだな(藁
0061デフォルトの名無しさん
NGNGCGIに依存しない…なら、向こうが板違いだろ。初心者スレとは重複してないし。
0062デフォルトの名無しさん
NGNG使ったことないけど
0063デフォルトの名無しさん
NGNGSQLあんまり知らないけど、WHEREとORDER BYは必ずあるの?
あるなら $query=~/FROM\s(.+?)\sWHERE\s(..+?)\sORDER BY/;
で$1と$2に入らないかな?
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGだったら楽なんだけどな。
0066デフォルトの名無しさん
NGNGperlではどのようにplatformの判別をするのでしょうか?
もしくは、汎用的に使えるパス区切り文字を持った変数などないのでしょうか?
0067デフォルトの名無しさん
NGNG>perlではどのようにplatformの判別をするのでしょうか?
LinuxのバイナリはWindowsでは動かんからなぁ。
0068デフォルトの名無しさん
NGNG性格悪いってよくいわれるでしょ?
0069デフォルトの名無しさん
NGNG悪いね。裏表の激しい人間なんだ。
0070デフォルトの名無しさん
NGNG$^OでOSの名前が得られる。
単にファイルパスの処理ならFile::Specモジュールで事足りるよ。
0072デフォルトの名無しさん
NGNGそういうことをやっているモジュールはいろいろあるから、
探してみそ。
007366
NGNGありがとうございます。
$path = File::Spec->catfile($a, $b);
で、できました。
それにしてもモジュールの多さにびっくりです。
初めてのPerlしか持ってないのですが、
これはリファレンス系の本が入りますね。
英語が読める人ならいらないんでしょうけど。。汗
0074デフォルトの名無しさん
NGNG日本語のリファレンスの本買ったってモジュールの話なんか書いてないぞ
(標準モジュールとかメジャーなヤツは別として)
perldoc 読めるようになった方が早い
英語読めなくてもPerlが読めれば意外と何とかなる、がんばれ
0075Mr. Moonlight ◆r0zx1vMqaw
NGNG凄いですからねー。(その割に日本語プログラミング言語はもの凄い勢いで叩かれたりするんだよな)
エラーメッセージとか、ちょっぴりくだけて書いてあるぐらいでもう全然ダメだったりして。
モジュールまわりを懇切丁寧に日本語で書いた本があったら結構売れるかもね。(ないのかな?)
0076デフォルトの名無しさん
NGNG貴方はまず日本語から勉強してください。
0077デフォルトの名無しさん
NGNGuse Tk;
$t=new MainWindow();
$c=$t->Canvas(-width=>600, -height=>480)->pack();
$c->createRectangle(100,200,400,100);
$c->update();
$c->postscript(-file=>"result.eps");
MainLoop;
を実行するとresult.epsができますが、gvで開くとError: /undefined in AdjustColor云々というエラーが出ます。
なぜでしょうか...。アドビイラストレータでも開けない..
0078デフォルトの名無しさん
NGNGDBI用でないかなー。そういうの。
0079デフォルトの名無しさん
NGNG特に新版にはたくさん追加されたと聞いたけど、どうなんだろう?
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNGクライアント(妻)の要望で数字は全角数字を使っているのですが、ソートすると1,100,2になっちゃうんです。
それを1,2,100にするために、いったん半角に変換してソートし、また全角に戻すってことをやっています。
しかもそれを
$data =~ s/0/0/g;
$data =~ s/1/1/g;
$data =~ s/2/2/g;
$data =~ s/3/3/g;
$data =~ s/4/4/g;
$data =~ s/5/5/g;
$data =~ s/6/6/g;
$data =~ s/7/7/g;
$data =~ s/8/8/g;
$data =~ s/9/9/g;
なんていう風に。
なんかもっとスマートに出来ませんか?
0082デフォルトの名無しさん
NGNG全角数字の配列が@dataに格納されてるとして、
%num = ('0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4,
'5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9, );
@data = sort { $temp{$a} <=> $temp{$b} }
map { ($temp{$_} = $_) =~ s/(0|1|2|3|4|5|6|7|8|9)/$num{$1}/g; $_; }
@data;
なんてのはどうです?
0083デフォルトの名無しさん
NGNGこんな感じかな。けど、比較の度に全角→半角を行うから多分遅い。
結局、全部半角に変換して比較して元に戻す方がよさそう。
@a = qw(1 200 3 123);
print join " ", sort num @a;
sub num {
@N=qw(0 1 2 3 4 5 6 7 8 9);
($A,$B)=($a,$b);
for($i=0;$i<10;++$i){
$A=~s/$N[$i]/$i/g;
$B=~s/$N[$i]/$i/g;
}
return $A<=>$B;
}
0086デフォルトの名無しさん
NGNG全角数字は、逆立ちしても文字列でしかないのでは? とりあえず素のperlでは。
内部的には数字であつかって、表示の際に変換するようにできるような
システムではないのかな?
ちなみに、Jcode.pmのtrとかいうのも使えるよ。
0087デフォルトの名無しさん
NGNG「文字列」の定義からだな。
EUCなシステムでのSJISはただバイトストリームでしかないわけで。
0088T女の竹田
NGNG@datas = sort { ('0' x ((30 - length $a) / 2). $a) cmp ('0' x ((30 - length $b) / 2). $b) } @datas;
…ごめん、一行でやってみたかっただけ。
比較の度に文字列操作するから、データ量が多いとめちゃくちゃ遅いはず。
0089T女の竹田
NGNGdataって、もともと複数形だった…
0090デフォルトの名無しさん
NGNG例えば
system ('ftp hogehoge.com');
みたいなことをして
この後ftpコマンドに対する入力はどうすれば出来るのでしょうか?
よろしくお願いします。
0091デフォルトの名無しさん
NGNGうまくいけば標準入力が使えるのでファイルをリダイレクトするとかパイプ使うとか。
そもそもそんなことせずにftpなモジュールでも使った方が良いと思うけれど。
009290
NGNGftpは例えばの話です。
ftpコマンドから帰ってくるメッセージを受け取って
使いたい時などはどうしたらよいのでしょうか?
0093デフォルトの名無しさん
NGNGバッククォート使うとかじゃだめ?
0094デフォルトの名無しさん
NGNGつまり、ftpの標準入力に書き込んで標準入力を読み込みたいと?
それは素のperlではデッドロックになりやすいからと意図的に外されていて、
使いたい場合は標準添付の IPC::Open2 か IPC::Open3 を使えとか。
けど、単に ftp を扱いたいだけなら >>91 に同意。
009590
NGNGメッセージを受けとる方法は理解できたのですが
渡す方法がよく解らなくて困っています。
>>91さんの方法ってどういうふうに
書けばいいのでしょうか?
0096デフォルトの名無しさん
NGNGopen(FILE,,"| ftp");
009790
NGNGバッククォートとパイプでがんばってみます。
ありがとうございました。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGc:\tool\ にある hoge.pl を、perl hoge.pl と
ファイル名のみで呼び出すにはどうすればいいですか?
たとえばJavaではWindowsの環境変数CLASSPATHにc:\toolを追加すれば
そのフォルダ内のclassファイルをファイル名のみで指定できますよね。
これと同じようなことをしたいんです。
0100デフォルトの名無しさん
NGNGC:\tool> perl hoge.pl
010199
NGNGどこのディレクトリからでもファイル名のみで
呼び出せる環境を作れると助かるんですが、無理ですか?
0102デフォルトの名無しさん
NGNG"C:\WINDOWS\"に置くとかじゃダメなの?
0103102
NGNG"hoge.bat"にすれば
> hoge
で実行できるけど。
0104デフォルトの名無しさん
NGNGpathが通った場所にhoge.plを置けば
C:\>hoge.pl
で呼び出せない?
0105デフォルトの名無しさん
NGNG01064
NGNGUnixのsuコマンドのパス入力などはキーボード叩いた文字が
画面に反映されませんが、あの様な画面に反映しない入力は
Perlで実現できないのでしょうか?
0107デフォルトの名無しさん
NGNG関連付けしてないと無理じゃない?
0108デフォルトの名無しさん
NGNGcursesとか使えないの?
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNGメモリ解放されなきゃ良いね。
0111109
NGNGそう、それが気になってます。
どんな仕様になってるんですか?
やっぱり、メモリの解放されちゃうんですか?
0112デフォルトの名無しさん
NGNG合ってる
0114デフォルトの名無しさん
NGNGhttp://216.239.39.101/search?q=cache:ZhAHQfTXFMAC:www.geocities.co.jp/SiliconValley-Oakland/1680/xperl/perl19.html+Perl+%E3%83%A1%E3%83%A2%E3%83%AA+%E3%82%B4%E3%83%9F&hl=ja&ie=UTF-8
これで疑問は解ける?
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117109
NGNG>>115
いいえ、レスありがとうございます。
一応、読ませてもらいますね。
考えてみると・・・
局所変数のアドレスがメモリに残ってたら、
そのサブルーチンを何度も呼び出していると、すごいメモリリークになるのかなぁ〜?
そうすると、やっぱ、メモリ解放されるのが普通なのかな〜と思うのですが・・・
自分でも調べたりしたのですが、あまり詳しく載ってる所がないので困ります・・・。
みんなは、容赦なく局所的に作られたアドレス返してるんですか???
0118デフォルトの名無しさん
NGNGPerl互換の正規表現エンジンをDelphiで使っているのですが
HTMLファイルから
<H1>
ほげほげ
</H1>
の’ほげほげ’の部分をマッチさせて取り出したいのですが、
<H1>ほげほげ</H1>
の場合、
m/<h[1-6]{1}[^>]*>(.+)<\/h[1-6]{1}>/i
でいけますが、前者の場合うまくマッチしてくれません。
どのような正規表現であればマッチするのでしょうか?
0120デフォルトの名無しさん
NGNG>そうすると、やっぱ、メモリ解放されるのが普通なのかな
使ってる奴は解放されないよ。解放されるのはどこからも参照されなくなったやつだけ。
ちゃんとした文献は見つけられなかったので、どうしてもキニナルなら
http://www.perldoc.com/perl5.6/pod/perl.html
で探してちょうだい。
0121デフォルトの名無しさん
NGNGデフォルトでは改行はマッチングされないよ。
PerlだったらMultiLine指定できるけど、embededは知らない。
\x0d,\x0aを加えてみてはいかが?
0122デフォルトの名無しさん
NGNGMultiLine指定が使える場合、正規表現は変わるのでしょうか?
0123118=122
NGNGMultiLine指定が使える場合、どんな正規表現に変えればマッチさせることが出来るのでしょうか?
の意味です。
あと追加で
> \x0d,\x0aを加えてみてはいかが?
は具体的にどうすればいいのでしょう?
0124デフォルトの名無しさん
NGNGこんなんかな。
まあ、\s使って
$ perl -e '$_="<H1>\nほげほげ\n</H1>"; print m/<h[1-6]{1}[^>]*>((?:.|\s)+)<\/h[1-6]{1}>/i;'
か(何か汚いな)
0125デフォルトの名無しさん
NGNGm/<h[1-6]{1}[^>]*>(.+)<\/h[1-6]{1}>/i
を
m/<h[1-6]{1}[^>]*>(.+)<\/h[1-6]{1}>/is
に替えればいいと思う。
0126118=122
NGNG結局、124氏の表現でうまくいきました。
うまくいったんですが、気になるのでついでに聞きます。
124氏の表現中の’?:.’はどういう意味があるんでしょう?
Perlは未だ触ったことがないので・・・。
でも、正規表現を扱ってみてPerlってテキスト処理にぴったりだと納得しました。
こんど暇を見つけて色々遊んでみようかと思います。
0127デフォルトの名無しさん
NGNG(?: ) … 参照しないカッコ
0128デフォルトの名無しさん
NGNG混乱中です。
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG?
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG>>99
環境変数pathにActivePerlのperl.exeの場所を記述する。
私は、d:\perl\bin\perl.exeという構成なので
PATH=d:\perl\bin;〜省略
としている。
ちなみにxp環境ではperl hoge.pl ではなく、hoge.pl だけで実行できるんですけど
これはなぜなんですかね。
よくわからない。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG質問内容がわかってない
0139デフォルトの名無しさん
NGNGWindowsの関連付けに従っているだけです。
私の場合*.plはエディタに関連付けてるので、同じ事をするとエディタが起動します。
0140デフォルトの名無しさん
NGNGこれはどうよ。
undef $/;
while(<>) {
s/\r\n?//g;
while (s|<H1>(.+?)</H1>||i) {
print $1, "\n";
}
}
0141デフォルトの名無しさん
NGNGイベントが発生するようにしたいんですけど、
どうすればいいですか?
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNGイベント?
こんなのでなくて?
foreach $b ($a =~ /(.)/g) {
# 何か実行
}
0144141
NGNGある正規表現にマッチしたら何かを処理。
文字列を最後まで調べ終わったらループを抜ける
ということをやりたいんですけど。
イメージ的には↓こんな感じ
while(???)
{
if($str=~m/AAA/g)
{
#何か実行
}
elsif($str=~m/BBB/g)
{
#何か実行
}
}
0145デフォルトの名無しさん
NGNGイベントが発生してないぞ。
0146デフォルトの名無しさん
NGNG0147141
NGNG$str='AAABBBCCCAAACCCBBBCCCAAA';
のようになっていたときに
$strを先頭から調べて
・AAAの文字列にマッチしたらAAA用の処理。
・BBBの文字列をマッチしたらBBB用の処理。
・CCCの文字列をマッチしたらCCC用の処理。
を順次実行していく。
文字列を最後まで調べ終わったら終了。
という感じなんですけど。
0148デフォルトの名無しさん
NGNGイベントは?
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGCan't locate XXXXX in @INC(......)
ってなってしまいます。どうやったら@INCの指定するパスを変更できるのでしょうか?
もしくは他の解決方法があるのでしょうか?
どなたかご教授ください。
0151デフォルトの名無しさん
NGNG$str='AAABBBCCCAAACCCBBBCCCAAA';
while ($str)
{
if ($str =~ /AAA/)
{
print "$&\n"; # 「$&」はマッチした部分の文字列
$str = $'; # 「$'」はマッチした部分より後ろにある文字列
}
if ($str =~ /BBB/)
{
print "$&\n"; # 「$&」はマッチした部分の文字列
$str = $'; # 「$'」はマッチした部分より後ろにある文字列
}
}
こんなん?
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGuse lib
0155151
NGNGgc修飾子を使った場合はこうかな?
俺は>>151の「$'」使うやつのほうが分かりやすい。
$str='AAABBBCCCAAACCCBBBCCCAAA';
while ($str =~ //gc)
{
if ($str =~ /AAA/gc)
{
print "$&\n"; # 「$&」はマッチした部分の文字列
}
if ($str =~ /BBB/gc)
{
print "$&\n"; # 「$&」はマッチした部分の文字列
}
if ($str =~ /CCC/gc)
{
print "$&\n"; # 「$&」はマッチした部分の文字列
}
}
0156デフォルトの名無しさん
NGNGイベントが発生してないから間違い
0158デフォルトの名無しさん
NGNGイベントの意味を理解しているのかねぇ。
0159デフォルトの名無しさん
NGNGイベントクラスとコールバックルーチン作るんじゃないのか?
0160デフォルトの名無しさん
NGNGイベントの意味が分からないなら黙ってた方がいいんじゃない?
0161デフォルトの名無しさん
NGNGクラスを継承してそのとき呼び出されるメソッドをオーバーライドしたりとかな。
0162デフォルトの名無しさん
NGNGsub Callback($)
{
print @_,"\n";
}
$str='AAABBBCCCAAACCCBBBCCCAAA';
$func = \&Callback;
while($str=~//gc) {
if ($str=~/AAA/gc) {
&$func($&);
}
if ($str=~/BBB/gc) {
&$func($&);
}
if ($str=~/CCC/gc) {
&$func($&);
}
}
0163デフォルトの名無しさん
NGNG>>162は文字列しか渡してないけどあとは自力でできるだろ>>>141
0164デフォルトの名無しさん
NGNGかちゅでぽっぷうぷした時にきれいだからいいよ。
全角スペースか、
として欲しい。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG(?:(AAA)(?{print 'unko', $1, "\n";}))|
(?:(BBB)(?{print 'unko', $2, "\n";}))|
(?:(CCC)(?{print 'unko', $3, "\n";}))/gx;
0167デフォルトの名無しさん
NGNG0168141
NGNGイメージ的にはHTML_Parserみたいなものを作ろうとしてたんですが、
説明が分かりにくかったですね。
あとは自分でがんばってみます。
0169デフォルトの名無しさん
NGNGsub BBB{print 'thinpo',$_[0],"\n";}
sub CCC{print 'mamuko',$_[0],"\n";}
while('AAABBBCCCAAACCCBBB'=~/AAA|BBB|CCC/g){&{$&}($&);}
0170デフォルトの名無しさん
NGNGsub AAA{print "__CHINPO__$_[0]\n";}
sub BBB{print "__MAMUKO__$_[0]\n";}
sub CCC{print "__UNKO__$_[0]\n";}
my %subs=(AAA=>\&AAA,BBB=>\&BBB,CCC=>\&CCC);
while('AAABBBCCCAAACCCBBB'=~/AAA|BBB|CCC/g){&{ $subs{$&}}($&);}
0171151
NGNGあ、偶然。
俺もIEやNN用に書かれた汚いHTMLも解析できるパーサを書いたから、
>>147を見て、「ああ、こりゃ俺と同じでHTML解析したいんだな」って思ったよ。
がんばれ。
それから、俺は正直、IEやNNが処理するユルユルHTMLの完全な仕様が知りたい。
下は俺が調べた結果の一部なんだけど…
●IEやNNは、「< p>」のように「<」の後に空白文字があるとそれをcontentと解釈する。
●IEやNNは、「<p>if (i<10)</p>」や「<p>if (j<-10)</p>」の、「<10」や「<-10」をp要素のcontentと解釈する。
●IEやNNは、「<」の直後が[a-zA-Z/!]ならタグ、それ以外はcontentと解釈する。
●IEやNNは、コメント(こんなの「<!-- -->」)を、SGMLのルール通りには解釈しない。
●「<!-- >」のみだと、これが全てコメントになります。
しかし、「<!-- > -->」だと、「-->」までコメントになります。
しかし、「<!-- > -- >」だと、最初の「<!-- >」までがコメントになります。
まだまだ続く…
こんなことを全部調べた人や、専用のサイトを知ってる人はいますか?
0172デフォルトの名無しさん
NGNGIE は地道にサンプル html を与えて、結果を解析していくことになるのかな。
パーサを書くんだったら yacc と bison ですか。使ったこと無いけど。
0173デフォルトの名無しさん
NGNG微妙に書き換えてやれ。
sub AAA{print "__CHINPO__$_[0]\n";}
sub BBB{print "__MAMUKO__$_[0]\n";}
sub CCC{print "__UNKO__$_[0]\n";}
my %subs=(AAA=>\&AAA,BBB=>\&BBB,CCC=>\&CCC);
my $m = join('|', keys %subs);
my $str='AAABBBCCCAAACCCBBB';
&{$subs{$&}}($&) while($str=~/$m/g);
0174デフォルトの名無しさん
NGNG$comment =~ s/([#]|^)(# [^<]*)/$1/g;
これではダメでした…
どなたかお願いします。
0175デフォルトの名無しさん
NGNG先頭にある#を何に置換したいの?
0176175
NGNG0178デフォルトで774KB...
NGNG応用で、このようにやっても動きませんでしたよ。
$comment =~ s/^#(.*)/$1<font color=\"$refcol\">$2<\/font>/g;
0179aaa
NGNGhttp://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/279026/pack/win95/game/table/pachinko/sikisai.lzh
0180デフォルトの名無しさん
NGNGやってる意味がまったくわかりません
$1とか$2が何かわかってるのか?
0181デフォルトの名無しさん
NGNG$2 はどこから来るのか考えてみたかい?
0182デフォルトの名無しさん
NGNG俺は動いたが
$_ = "#hoge";
print $_ . "\n";
s/^#(.*)/$1<font color="#000000">$2<\/font>/g;
print $_ . "\n";
#hoge
hoge<font color="#000000"></font>
0184デフォルトの名無しさん
NGNGまずはmオプションつけろ。
0185デフォルトの名無しさん
NGNGファイルサイズが大きいので、メモリに全部読み込むことはしたくない。
考えたやり方としてファイルの行数を取得し、
$#@_-3回空回しして、最後の3回だけ値を取得する。
このときの、ファイル行数取得っていい方法ありますかね。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG@last3 = ();
$i = 0;
while (<>) {
$last3[$i] = $_;
$i = ($i + 1) % 3;
}
push(@last3, splice(@last3, 0, $i)) if $i;
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG自分の書いたコードがなんなのか忘れた。
sub Mainloop {
/(.+)/;
$url = $1;
これ、どういう意味ですか?
マジでわからない。C言語はなんとか覚えてるけどperlはほんとすぐに忘れる。
0191デフォルトの名無しさん
NGNG/(.+)/;
$url = $1;
($url eq "") && next;
@urlparts = &GetUrlParts($url);
#make storing directory name
$a_storedir = $storedirT.$storedir;
$ldir = "";
for($i = 1; $i <= $dirlinks; $i++) {
$ldir = $urlparts[$i].$ldir;
}
$a_storedir .= $ldir.$storedirE;
"Url=$url\n",
"Folder=$a_storedir\\\n",
"Date=$date $time\n",
"ID=0\n\n";
}
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG$url = $1;
↑改行をカットしようとしてるのかな?
0195デフォルトの名無しさん
NGNGつーか、use strict時には正規表現のコメントを義務化してくれ>らりー
0196デフォルトの名無しさん
NGNGだと思う。
わざわざ読めないコード書いてPerlのせいにするのイクナイ(・A・)
0197デフォルトの名無しさん
NGNGマルチポストお許しください。
perlで指定したサーバーが稼動しているか倒れているか調べる関数か何かありますか?
自鯖構築に利用したいのですが、独自ドメインからWebサーバーに飛ばして、
そこで、perlが処理するのですが、
if ($自鯖稼動状態 == 1) {
print "Location: $ZISABAurl\n\n";
} else {
print "Loaction: $WEBSABAurl\n\n";
}
みたいにしたいのですが。
0198デフォルトの名無しさん
NGNG1. サーバって何?Webサーバの稼動確認だけでいいの?
2. どっちのサーバの稼動確認をしたいの?
3. LocationってことはCGIだろうけど>>1読んだ?
0199デフォルトの名無しさん
NGNG$a = "ー";
/$a/ && do {print "★";};
こういうの書くと
Unmatched [ before HERE mark in regex m/ー << HERE / at test.pl line 4.
とエラーが出てしまうんですが、日本語に対応してないコンパイラなんでしょうか?
OSはwindowsでactivePerlとかいうのをインストールした記憶があります。
0200デフォルトの名無しさん
NGNG0201199
NGNGとにかく、うまくいきました。あり。
0202デフォルトの名無しさん
NGNGLocationがでてきてるのであって、perlの話題だからokでしょう。
NET::pingでping打つのはどうかな?
0203
NGNG取得できればと思い、いろいろ調べてみたんですが、いい方法が
ないんですよねぇ〜、JAVAでもJAVAScriptでもだめ、CやVBなら
出来るようなんですけどVBScriptでは無理っぽいし・・・。
Perlでアクセスしてきたクライアントを一意に特定するいい方法って
何かありませんか・・・?
0204203
NGNGクッキー・・・・クッキーを削除されたら無効なので駄目
ということで上記以外の方法で、何かないでしょうか?
0205デフォルトの名無しさん
NGNGコンピュータは稼働中でも、ウェブサーバが生きているとはかぎらない。
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGCやVBでどうやってできるんだ?無理だろ
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGバカ?
0210デフォルトの名無しさん
NGNG送られたデータのCRCでも取得して比較すりゃいいじゃん
0211デフォルトの名無しさん
NGNGCRCだと違う文章を同一文章と間違える確率はどのくらいなんだろ?
0212デフォルトの名無しさん
NGNG32bit CRCなら、すべての文書のCRCが、均一に分布するとすれば、
異なる2つのもののCRCが一致する確率は、1/2**32ではないか?
心配なら、MD5とかSHA-1とか強力なやつを使えばいい。
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG何を狙って言ったのか知らないけどperl -d
環境変数を再現したいって意味合いで言ったなら、
スクリプト先頭で予め代入しておくとか。
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGおなじIPから同じバイト数の時に発生するらしい。
同じことすればいいんじゃないの?
故意に「荒らす」ようなことを防ぐためなら、知らんが。
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGある処理を行いたいのですが、どうやるのでしょうか?
0219デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGrequireで読み出されているファイルをリンクしてコンパイルするには
どうすればよいのでしょうか?
どなたかご教授願います。
0224デフォルトの名無しさん
NGNGrequireでできないならpmになおせばいい
なおし方は難しくないだろ
勉強で試すぐらいにしかperlccは役にはたたんよ、
実行ファイルはでかいし、まともにコンパイルできない
0225デフォルトの名無しさん
NGNGPerl5.6.1対応ならCygwin用のバイナリが転がっているのを見たことがあるが
Perl5.8.0 (最近のcygwinはこれを入れてしまう) には対応していなかった。
そこで CPAN からソースを拾ってきて make しようとしたが
途中で windows.h がないといって怒られた。
お前らの中で cygwin にソースからコンパイルしてインスコした香具師はいますか?
0226デフォルトの名無しさん
NGNGActiveperl5.8ではデふぉでtK入ってるし、、、
windows.h は普通 include/w32api/
に入ってるし
0227デフォルトの名無しさん
NGNGのXSには互換性がない対応してないのはあたりまえ
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG無理でつか?
0232デフォルトの名無しさん
NGNG去年まで金無し君だったけど、オンラインカジノとパチンコで
二年で350万貯めた。一度やってみなよ。
初回のみだけど、1ドル以上のチップを買えば30ドル(4000円くらい)貰える。
もらうだけもらってプレイせずに換金することもできるし、ルーレットで赤か黒に
思い切って賭けてしまえば50パーセントで二倍になる。
金なきゃオフラインでゲームすればいいだけ。暇つぶしになる。
ビデオポーカーとかスロとか色々あるのでマジでお勧め。
http://www.imperialcasino.com/~1kl5/japanese/
0233デフォルトの名無しさん
NGNGいまいち意味がわからないけど
STDINとかを使いたいってこと?
0234あぼーん
NGNGhttp://muryou.gasuki.com/moe/hankaku10.html
http://muryou.gasuki.com/moe/hankaku09.html
http://muryou.gasuki.com/moe/hankaku08.html
http://muryou.gasuki.com/moe/hankaku07.html
http://muryou.gasuki.com/moe/hankaku06.html
http://muryou.gasuki.com/moe/hankaku05.html
http://muryou.gasuki.com/moe/hankaku04.html
http://muryou.gasuki.com/moe/hankaku03.html
http://muryou.gasuki.com/moe/hankaku02.html
http://muryou.gasuki.com/moe/hankaku01.html
C++でいうところのstd::stringstreamということかな?
Perl5.8.0以上ならPerlIO::scalarが、古いバージョンならIO::Scalarが使えるよ。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGってどっか置いてない?
0238デフォルトの名無しさん
NGNG>>235
ありがとう参考なりますた。
use IO::Scalar;
my $s;
tie *STDOUT , 'IO::Scalar', \$s;
print "OK\n" ;
print STDERR "### $s" ;
untie *STDOUT ;
結果
### OK
こんな感じでSTDOUT奪えました。
ただ、IO::Scalarって標準モジュールじゃないんすね、
クライアント先で動くかが、不安なところ・・・
でも助かりました、感謝!
0239デフォルトの名無しさん
NGNGCPANいけよ(w
0240デフォルトの名無しさん
NGNG大根
ってどっか置いてない?
239 デフォルトの名無しさん 03/04/09 00:59
>>237
八百屋いけよ(w
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG勝手にModuleインスコすることが、まかりならぬ場合もあるのよね・・・。
国から金出してもらってる団体のサーバとか、こういう構成で使う
って提出しているので、それ以外に使うと国に金返せっていわれる。
そのせいで、sh 以外の入っていないUNIX触ったこともあるです。
馬鹿な話だとは思うけど。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG関係ない話だもん。
0245237
NGNG, '"  ̄ ヽ
ル)"ノノルλ . .
ルil ゚∀゚ノリ ミ.:;∧∧
#####++⊂⊂[| ) ∵'( ゚д゚)>>244
ゞ ミ /_ 〉〈 ゝ 彡 /U /つ
し'ノ ( ノ ノ
いやCPANにないのよXML::RSS
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG激しく間抜けだな(w
0249238
NGNGさっきの質問に関連するんですが、
多重にtieした場合、untieで復元出来ずに困ってます。
次のコードなんですが、
use IO::Scalar;
sub main
{
my $buf = "" ;
tie *STDOUT , 'IO::Scalar', \$buf ;
my $buf2 = "" ;
tie *STDOUT , 'IO::Scalar', \$buf2 ;
print "OK\n" ;
untie *STDOUT ;
print "1 $buf2" ;
untie *STDOUT ;
print "2 $buf" ;
}
main() ;
実行結果は次の様になってしまいます、
1 OK
2
untieできちんと復元できれば、
1 OK
2 1 OK
となるはずなんですが・・・
回避方法ご存知ないでつか?
0250あぼーん
NGNG0251デフォルトの名無しさん
NGNGrootでない人が勝手に/usr/libにモジュールをインスコしちゃいけないです。
テストしたいから/home/kikyoshaにインスコしたい場合もあります。
Perlクックブックのp424-426には
PERL5LIB環境変数を設定する
-I スイッチを使う
use lib プラグマを使う
といったソリューションが書いてありますた。
0252デフォルトの名無しさん
NGNG> rootでない人が勝手に/usr/libにモジュールをインスコしちゃいけないです。
勝手にもクソもそもそもできないでしょ。
それはそういう仕様です。
tie()を複数回行っても、効果は上書きされるだけ。
そういう場合はスタックでも使うんだね。
use IO::Scalar;
my @ios = (\*STDOUT);
my $buf;
my $buf2;
push @ios, IO::Scalar->new(\$buf);
push @ios, IO::Scalar->new(\$buf2);
print {$ios[-1]} "OK\n";
pop @ios;
print {$ios[-1]} "1 $buf2";
pop @ios;
print {$ios[-1]} "2 $buf";
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256238
NGNGレスどうもです。
参考になりますた。
サンプルで示して頂いたように、
標準出力をtieするのを辞めました。
ありがと御座いました、感謝してます。
0257デフォルトの名無しさん
NGNGFile::Spec->rel2abs()を試してみたのですが
perl -e 'use File::Spec; $p="../bin/file"; print File::Spec->rel2abs( $p, "/a/b/c/" ) . "\n";'
-> /a/b/c/../bin/file
・・とそのまま連結して返します。
これは仕様でしょうか?解決方法、もしくは別の方法がありましたらご教授下さい。
0258デフォルトの名無しさん
NGNG1 while s![^/]+/\.\./!!;
こんなんでどうでしょ。
ちゃんと動くかどうかはわからないですが。
0259名無し☆ごんべ
NGNGそこにプログラム入れてるけど呼び出せへん。
関連ついてない?
だれかおしえれ 意味不明
0260デフォルトの名無しさん
NGNGIISの設定をしていないだけだろ。
0261デフォルトの名無しさん
NGNG0262名無し☆ごんべ
NGNG0263デフォルトの名無しさん
NGNGそれだとこうなっちゃう。
"../../b" -> "b"
"/a/./../b" -> "/a/b"
"/a/../../../../b" -> "/../b"
こんなとこかねぇ。
1 while s<(^|/)(?!\.\.?)[^/]+/\.\./><\1>g;
0264デフォルトの名無しさん
NGNG以前cygwinのPerl 5.8を試した時は use encoding 'shift_jis';
しても2バイトめが 5CH のsjis文字列が通らなかった。ActivePerlはOK。
configure か何かまちがってる?
0265258
NGNG/../xx や /./ についてはSpecの方で対処してたからいいと思ったケド、
/a/../../b については不備だったかな。
まぁそもそもディレ指定が間違ってるから対処外だと思うんだが。
正規はイマイチ弱いので、参考にさせて頂きます。
0266デフォルトの名無しさん
NGNG未だ解決してないのでもう一度書き込みします。
install XXXでインスコできなくて、
searcch XXXでもみつからないので、
↓ここのzipファイルをダウンロードして
いろいろやってみたのですが、インスコされませんでした。
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/
具体的にどこにppdファイルを置いて
どのようなコマンドを打てばいいのか教えていただけると
ありがたいです。
↓河合さんのページも参考にしたんですけどできませんでした。
http://member.nifty.ne.jp/hippo2000/perltips/ppm.htm
環境は、WindowsXP、ActivePerl5.8.0です。
0269226
NGNGもういろいろな書式でインストールを試みたけどできません。
つーか色々な書式があるのは何で???
(サイトによって書式が微妙に違うし。)
ppm install Inline
ppm install /location d:\Inline Inline
ppm install --location d:\Inline Inline
ppm install --location=d:\Inline Inline
あー
0271デフォルトの名無しさん
NGNGttp://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/の
Inline.zipは中身、空に等しい。CPANからソース取ってきてインストールするよろし。
って優香、Inline.ppdの中見てないのか?見てもわからんのか?
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGそっか。
1 while s<(^|/)(?!\.\.?/)[^/]+/\.\./><\1>g;
0274デフォルトの名無しさん
NGNGcygwinのなら環境変数PERLIOに設定すればOKでしたが
ActivePerlだと↑の方法もopenプラグマでも�_でした。
0275デフォルトの名無しさん
NGNG文字列がマッチしたらhelloと表示するプログラムを作りたいのですが
以下のコードでうまく動きません。
何を入力してもhelloと表示されても良さそうなきがするんだけど何を入力しても
helloとは表示されないです。何か間違ってますか?
#!/usr/bin/perl
$i=0;
while ($line=<STDIN>){
chop($line);
if ($line=~/.*/) {
print hello;
};
}
0276デフォルトの名無しさん
NGNGprint "hello"ですた氏にまつ
0277デフォルトの名無しさん
NGNG何を入力してもhelloと表示されましたが、何か?
0278275
NGNGperl -e "print hello"もダメっす
そういえば変数には$を付けないとダメだし
なんで表示されないんだろ
不思議なこともあるもんだ
0279デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGなんかうぜぇやつだな。
use strict; つけて perl -cw しろ。
0282デフォルトの名無しさん
NGNG×せめてエラーメッセージ位出してくれたらいいのに。。。
○もしエラーメッセージが出せるなら、それを出してくれるようにする方法はありませんか?
ちゃんと警告メッセージ出してくれる。
Unquoted string "hello" may clash with future reserved word at hoge.pl line 8.
Name "main::hello" used only once: possible typo at hoge.pl line 8.
0284275
NGNGuse strict;
は求めていたものです。助かります
0285デフォルトの名無しさん
NGNG裸のワードは基本的に受け付けないし、変数名には$がいるのがperlってもんだ。
そんな基本的な事も調べずここで不思議がってるとは不思議な奴だ(笑
ちなみに、裸のワードは昔は受け付けていたとかで、
今でも配列のキーとか=>演算子の左とかなら使える。
0286名無し☆ごんべ
NGNG(C)Copyright Microsoft Corp 1981-1998.
C:\My Documents\Perl>perl -v
This is perl, v5.8.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -v for more detail)
Copylight 1987-2002, Larry Wall
Binary build 805 provided by ActiveState Corp. http://www.ActiveState.com
Built 18:08:02 Fed 4 2003
Perl may be copied only under the terms of either the Artistic License of the
GNU General Public License, Which may be found in the Perl 5 source kit.
Complete documentation for Perl,including FAQ lists, should be found on
this System using 'man perl'or'perldoc perl'. If you have access to the
Internet,point your browser at http://www.perl.com/ , the Perl Home Page.
0287275
NGNG今更遅いが
意図したことと違うことを書いてしまいますたスマソ
$を付けるのは知ってます。
不思議と思ったのは
実行自体は通るけど何も表示されない。
空っぽの変数みたいだけど
perl -e '$hello = 5 ; print hello;'は実行はされるけども
5とは表示されずになにも表示されないんで
helloは'hello'でも$helloでも無いのにエラーもでないんで
そんときは不思議ですた
0288デフォルトの名無しさん
NGNGきっとおまいさんは
$hoge = 5; print @hoge;
で5が出なかったら騒ぐんだろうな
0289275
NGNG$hoge と@hogeはさすがに別物だとわかりますけどね
騒いでもいいけど。
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGprint STDOUT hello; だった。
0292デフォルトの名無しさん
NGNG頼む!、もうスレ汚すの止めてくれ。
君には、こっちがぴったりだよ。
Perl 初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/l50
0293デフォルトの名無しさん
NGNGprint q nippon; --> ippo を表示
0294デフォルトの名無しさん
NGNGprint nippon . "";
nippon
0295226
NGNG自前でインストールすることにしました。
コンパイラは、borlandのbcc32.exe、makeはdmakeをインストールし、
それに合せてConfig.pmを
cc='cl'→ cc='bcc32'
make='nmake'→make='dmake'
のように書き換えました。(いいのかな?)
が、「dmake test」で以下のようなエラーがでました。
「エラー E2075: コマンドライン オプションの間違い : -Gf」
0296266
NGNGConfig.pmの
ccflags='-nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX'
の部分が引っかかってるみたいなんですが。
これはWin版Perlの設定でデフォルトのコンパイラであるcl.exe用の
コマンドラインオプションだからbcc32.exeではエラーが出るという
ことなんでしょうか?
0297デフォルトの名無しさん
NGNG上手い!!
0298デフォルトの名無しさん
NGNG>これはWin版Perlの設定でデフォルトのコンパイラであるcl.exe用の
>コマンドラインオプションだからbcc32.exeではエラーが出るという
>ことなんでしょうか?
だと思う。
これを回避するには、
1)MSVCを入手する。
2)bcc32+dmakeでperl自体をコンパイルする。
3)perl sourceのwin32/makefile.mkを見てccflagsをCFLAGSに合わせる。
という方法ががある。3)はうまく逝くかどうかは保障できないが試して味噌。
0299デフォルトの名無しさん
NGNGmy $a = 'abcdef';#欲しいのは$a='cdef'。
substr($a, 0, 2);
print $a;
結果
'abcdef'
となってしまいます…
何か良い方法ありますか?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG292へどうぞ。
0302デフォルトの名無しさん
NGNGmy $a = 'abcdef';
$a = substr($a,2);
print $a;
これで分からなかったら >>292 行け
0304デフォルトの名無しさん
NGNGそういう時は、先に「○○へ行きます」と断っておいてから、
○○の方へ書かないとマルチで叩かれるよ。答えてもらえる確率が減るから気をつけた方がいい。
0305デフォルトの名無しさん
NGNG板が違うんだから、ここにも初心者スレ作りやがれ!
ム板内で完結しやがれってんだ。
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNGCGI関係だからでFA?
0308デフォルトの名無しさん
NGNG裸のワードはハッシュのキー以外の場合はサブルーチンとみなされる。つまり、
print hello;
は、サブルーチン hello の返り値を print するという意味。
0309299
NGNG書くのが遅れましたが適切なスレに誘導して頂き有難うございました。
0310デフォルトの名無しさん
NGNGWindows: ActivePerl v5.6.0 build 618 と v5.8.0 build 805
Linux: perl v5.6.0 built for i386-linux
ActivePerlでは、open()で改行コードがCRLFなファイルと開くと、
$_に入ってきた時点で、CR部分が抜け落ちているような…。
CRLFなファイルだと、改行部分は "0D 0A"と表示されるはずなんですが、
open(IN, $file);
while(<IN>){
s/([\x00-\xFF])/sprintf(" %02X", unpack("C",$1))/ge;
print $_ . "\n";
}
close(IN);
ActivePerlでは、"0A"になり、CRが落ちてしまいますが、
Linuxだとちゃんと "0D 0A"になります。
当然の事ながらファイルをバイナリエディタで開くとCRLFな部分は、
"0D 0A"になってます。
回避方法や何が悪いか、わかる方いません?
0311nobodyさん
NGNG元データがLFだけなんじゃないですか?
open(IN, $file);
binmode(IN);
while(<IN>){
s/([\x00-\xFF])/sprintf(" %02X", unpack("C",$1))/ge;
print $_ . "\n";
}
close(IN);
でもやって、データを確認してみれば?
…これはuse strictの元でもエラーにはならないので注意。
# use warnings FATAL => 'unopened'; で実行時例外を出すことは可能だけど
>>310
binmode()
0315デフォルトの名無しさん
NGNGがあったので質問させてください。
for($w=0;$w<10;$w++){
$f=&k($w);
print"$f\n";
}
sub k{
local($d)=@_;
my($w);
$w=$d*$d;
return($w);
}
というものがあるのですが、2行目の$wには1行目のfor()で決定される数字が
入るのでしょうか?それともreturnでの返り値が入るのでしょうか?
もし前者の場合は返り値はどこにはいるのでしょうか?&k($w)自体に入るのでし
ょうか?
もしも後者の場合は関数kには式だけあって数字がなくなってしまう気がしますが
どこから数字をもってきているのでしょうか?
かなり初歩的な質問でしょうが、教えていただけると幸いです。
よろしくおねがいします。
0316315
NGNGそっちにいきます、スレ汚し申し訳ありませんでした。
0317デフォルトの名無しさん
NGNGそう
>もし前者の場合は返り値はどこにはいるのでしょうか?
>&k($w)自体に入るのでしょうか?
そう。結果として$fにはいる。
0318デフォルトの名無しさん
NGNG移動するって言ってんのに答えるなよ。
0319デフォルトの名無しさん
NGNGオブジェクトのプロパティが先に死んでるコトはありえるんでしょうか?
環状リファレンスなども開放されることを考えると、
参照カウント法が機能せずにガベージされると思うんですが、どうでしょう。
また、これを防ぐ方法(END { undef $obj }のような)を
モジュール側から行うコトは不可能でしょうか?
というか、モジュール側から行えないとしたら、
DESTROYがイマイチ使いにくいと思うので(^^;
どなたか、わかる方いらっしゃいましたら、ヨロシクお願い致します。
0320デフォルトの名無しさん
NGNGなんでそんなに必死なんですか?(w
0321デフォルトの名無しさん
NGNG0322274
NGNG実際の\n変換モードの対応をメモしておきます。
(テスト方法: perl -e 'print "\n"'|dump)
[ActivePerl v5.8.0 build805]
(なし) :crlf
:crlf :crlf
:unix :crlf
:stdio :crlf
:perlio 無変換
:crlf :crlf
[cygwin v5.8.0-2]
(なし) :crlf
:unix 無変換
:stdio 無変換
:perlio 無変換
:crlf :crlf
…なんかActivePerlってものすごく曲者?
0323デフォルトの名無しさん
NGNGunix と stdio と perlio は呼びだす(Cの)関数の違いにすぎないはずだから,
それで動作が変わる方がおかしいのでは?
0324デフォルトの名無しさん
NGNGなんかに激しく依存するよ。いろいろ試してみるしかないと
思われ。tellなんかがからむともう悪夢。
0325デフォルトの名無しさん
NGNG昨日、Webデザイナーの友達からCGI/Perlの仕事を受けて、
KENTのCGIを改良したものを更に改良するってことだったんだけど、
ま〜ソースの汚さに愕然とした。解析するのに一苦労。
これが「Perl=ソース」が汚いと言われる原因かなーと
今更ながらに思いました。
ヒアドキュメントは便利だけど、HTMLをそのまま埋め込むのはやめれ。
テンプレートを使えよと言いたい。
0326デフォルトの名無しさん
NGNG板違いです。
0327デフォルトの名無しさん
NGNGその質問にどういう答えを期待しているのでしょうか?
質問は回答者のためにも自分のためにも要点が分かるように書きましょう。
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNG愚痴と捉えるならマ板。
CGIにおけるデザインとロジックの分離と捉えるならWebProgか制作板。
もしそうだとしてもPerlが汚いと言われる原因はそれじゃない。
0330デフォルトの名無しさん
NGNGどれ?
0332237
NGNG>>>>>>>>>>>>>>>>>>>>>> forth >>>>>>>>>>>>>>>>>>>>>> awk >>>>>>>>>>>>
>>>>>>>>>>> sed >>>>>>>>>>>>>>>>>>>>>>> ed >>>>>>>>>>>>>>>>>> vi
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> perl
0333デフォルトの名無しさん
NGNG「代表的なCGIのソースが汚いから、Perl=汚いと言われる」と言う事?
どっちにしても、KENTのCGIに文句言いたいならWebProgだろ。
Perlはシェルスクリプト,awkc,,java辺りから構文をかき集めてるような所ががあるから、
汚いソースも書けてしまうのだが、
実力のある人が書くとcやjavaよりも見通しがいいんだよな、これが。
0334デフォルトの名無しさん
NGNG人に見せるものは、冗長だとしてもきれいに書く
while(<>) {
chomp;
print if (/hoge/)
}
while ($line = <STDIN>) {
chomp $line;
if ($line =~ /hoge/ ) {
print $line;
}
}
こんな感じ?
CとかJavaに無い構文使わなければ、Perl分からない奴に見せても何とかなる
<>と<STDIN>じゃ意味違うし、chompもあまり役に立ってないが(w
0335デフォルトの名無しさん
NGNGただ、慣れてない人からは確かに読みにくいかも。
そういう慣用句とかエレガントな表現を学んで行くのも
Perlの面白さだと思ってるんだけど、どうかな。
0336325
NGNGPerlのソースが汚いって言われてるのは、KENTに限らず
素人が作ったCGIがネットでばら撒かれてるからかなーと思い、
脊髄反射的に書き込んでしまい、結果スレを汚してしまったのは
正直すまんかった。
KENTのCGIがどうこう言うつもりはないよ。
(KENTのCGIを改良したものなので100%KENTのコードではないし)
Perlに関しては知識が浅いし、他の言語も極めるほどやってないので
よく分からないのだが、よかったらPerlのコードが汚いと言われる理由を
教えてもらえまいか?
0337デフォルトの名無しさん
NGNGchomp $str;
print $str;
よりも
chomp($str);
print($str);
という感じで書くようにしてるんですけど
問題ありますかね?
0338デフォルトの名無しさん
NGNGバグを防止する意味ではむしろ好ましいのでは?
自分は時と場合によって適当に書き分けてるけどね。
(こういう事ができるのがPerlが汚くなりがちな原因の一つ)
0339デフォルトの名無しさん
NGNG正規表現
0340デフォルトの名無しさん
NGNGそれは思いっきり勘違いだと思うが。
それは正規表現の汚さであってPerlの汚さではないが。
0341デフォルトの名無しさん
NGNGそれも違うだろ。
正規表現も空白やコメントを駆使すればずっと読みやすくなる。
問題はそれをさぼるプログラマが多いと言う事だ。
0342デフォルトの名無しさん
NGNG>問題はそれをさぼるプログラマが多いと言う事だ。
それがPerlのせい、と?
他の正規表現を扱う言語では汚くならないと?
0343デフォルトの名無しさん
NGNGただそれは正規表現のせいじゃないだろ、と。
Javaで java.util.regex 使ったら汚くなるのか?
0344341
NGNG誤解されてるな。
言いたいのはPerlの正規表現は見通しよく書くこともできるし、
そのように書くべきだって事の方だ。
他の言語でも正規表現使えば同じってのは同意だし、
正規表現の代わりにif文の山を作ったらそれこそ見通しが悪い。
0345339
NGNG正規表現を知らない奴が、正規表現を使って書かれているコードを見たときに
「わけわかんねぇ、*Perlは*汚いな」
と思う事が多いってこと
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGデータファイルの管理用に、こうchdirコマンドで
ディレクトリを登ったり降りたりしながらファイル情報を集める
スクリプトを作ってたんですよ。
今までWin98+Cygwinで使えてたんですが、最近WinXPに変えてですね、
Cygwinのperlもインストールし直したら、chmod("..")が失敗するように
なっちまったんですよ。
なんででしょう?代替方法はあるんでしょうか?
「..」を排除するとしたら、フルパスを取る方法が必要ですよね・・・。
0349nobodyさん
NGNG0350266
NGNGBorland C++ Compiler 5.5とdmakeでActivePerl5.8.0のソースを
コンパイルすることにしました。
http://www.kt.rim.or.jp/~kbk/perl5.doc/perlwin32.html
↑のサイトを参考にwin32/makefile.mkを書き換え
「dmake」すると
エラー E2450 C:\Perl\lib\COREthrdvar.h 85: 未定義の構造体 '_stati64'
エラー E2450 C:\Perl\lib\COREthrdvar.h 86: 未定義の構造体 '_stati64'
というエラーがでます。
対処法分かる方いますか?
0352デフォルトの名無しさん
NGNG_stati64の定義があるヘッダをインクルードせよ。どこにあるかとか聞くなよ。grep
0353デフォルトの名無しさん
NGNGsys/stat.h
にstati64ってのならあるけど_stati64はわかんねーや
0354デフォルトの名無しさん
NGNGall grepしてもなければstati64使ってもいいんじゃない?
dosish.hの82行目あたり:
#if defined(WIN64) || defined(USE_LARGE_FILES)
このテストが偽になるようにする。
私はとりあえずそれで上手く行っているよ。
USE_LARGE_FILESは#undefしてしまっていいのかもしれないね。
0356デフォルトの名無しさん
NGNGフォーマット文かと思っちまった。
0357デフォルトの名無しさん
NGNG> データファイルの管理用に、こう*chdirコマンド*で
> Cygwinのperlもインストールし直したら、*chmod("..")が失敗*するように
少しもちつけ
0358デフォルトの名無しさん
NGNG意外と便利よね、フォーマット
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNGテキストでフォーマットすることがなくなtt
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNGレコードの繰り返しを吐き出すときは便利
見た目もそこそこフォーマットしてくれる
短所:
CSVとかで吐いて別処理した方が良い場合が多い
システム管理系スクリプトでリポート吐き出す時とかは便利だよ
よく、軽くフォーマットしてメール飛ばしてる
0364デフォルトの名無しさん
NGNG長所:別途モジュール必要としない
短所:もっと優れたモジュールが沢山ある
0365デフォルトの名無しさん
NGNGその優れたモジュールを、一言コメント付で紹介せよ。
0366デフォルトの名無しさん
NGNG回答:
無理
0367デフォルトの名無しさん
NGNG普通にcsvを加工するのに比べてどのくらいパフォーマン落ちますか?
0368367
NGNG0369デフォルトの名無しさん
NGNGで,具体的には不等式の左辺と右辺を取り出したい。
たとえば,
$statement = q["abc de" > 123 or abcde = "zz zz"];
だと,"abc de"とabcdeが左辺,123と"zz zz"が右辺。
これを解析するために
$operand = '(?:<=|>=|>|<|=)';
$var = '(?:\w+|"[^"]*")';
$statement =~ s/($var)\s*$operand\s*($var)/(left) $1 (right) $2/g;
print $statement;
とかすると
(left) "abc de" (right) 123 or (left) abcde (right) "zz zz"
という出力が得られる。
さて,
0370デフォルトの名無しさん
NGNG$statement = q["abc de" > 123 or abcde = 'zz zz'];
の場合に
(left) "abc de" (right) 123 or (left) abcde (right) 'zz zz'
としたい。
$operand = '(?:<=|>=|>|<|=)';
$var = q!(?:\w+|("|')[^\1]*\1)!; #ここを変えた
$statement = q["abc de" >123 or abcde = 'zz zz'];
$statement =~ s/($var)\s*$operand\s*($var)/(left) $1 (right) $2/g;
print $statement;
だとまったく解析が成功しない。どうして?
0371デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/php/1038146241/ に逝ってきます。
0372デフォルトの名無しさん
NGNGそっちに逝くよりも、まず言語理論の本でも読め。
0373367
NGNGベンチ取るまでもなく体感で分かる遅さ。
(モジュールを使わずにgrepで処理して見た場合と比べて)
0374デフォルトの名無しさん
NGNG$b='abcde';
$b=~ s/$ac/999/o;
print $b;
結果
999abcde
となるのはなぜ?
s/($a)c/999なら999deになるのはわかる。
999が先頭に追加されているということは置換成功しているの?
詳しい人教えてください
0375デフォルトの名無しさん
NGNG$a='ab';
$ac = '';
$b='abcde';
$b=~ s/$ac/999/o;
print $b;
0376374
NGNGthx
未定義の$acにマッチしていたということですね
そりゃま、DBD::CSVは実務で使う為というよりも、
「他のDBDに簡単に移行できる」というのが売りのプロトタイプ用DBDだからね。
とうぜんパフォーマンスは良くないです。
0378デフォルトの名無しさん
NGNGあるサブルーチン(&HOGE)の中でのみ利用したいサブルーチン(&FUGA)があります。
その$FUGAの中で&HOGEのローカル変数($alpha,$bravo,$charilie,$delta)を使い
たいのですが、以下のように記載しても上手く動かないのです。
どなたか解決策を教えて頂けますでしょうか。
# それともこんなことはできない?^^;;
sub HOGE {
my $alpha = a;
my $bravo = b;
my $charlie = c;
my $delta = d;
sub FUGA {
"$alpha == $bravo == $charlie == $delta\n"
}
print (
"content-type: text/plain\n\n" .
FUGA()
);
exit;
}
0379nobodyさん
NGNG構造的にはコレ。
sub HOGE {
my $alpha = a;
my $bravo = b;
my $charlie = c;
my $delta = d;
print (
"content-type: text/plain\n\n" .
&FUGA($alpha,$bravo,$charlie,$delta)
);
exit;
}
sub FUGA {
return("$_[0] == $_[1] == $_[2] == $_[3]\n");
}
0380デフォルトの名無しさん
NGNG"a"だったとかいうオチは置いといて__
sub HOGE {
local $alpha = "a";
local $bravo = "b";
local $charlie = "c";
local $delta = "d";
print FUGA();
}
sub FUGA {
"$alpha == $bravo == $charlie == $delta\n"
}
こんなんかな。やりたいコトがよくわからんケド。
0381378
NGNG>>379
今のところそのように書いているのですが、&FUGAと言うサブルーチンは、
&HOGEしか使わないので、&HOGEの中に書いてスッキリさせてしまおうと
思い立ったのが元々なのです。
>>380
ぁぁ、言葉足らずで申し訳ない。
use strict;
されている事が前提なのです。
なのでlocalは私の頭から外れておりました。
と言うことはstrictせずにlocalを使えばできるよ、と言うことなのかな..
なにか方法があるような気もするのでもう少しぐぐってみます。
0382デフォルトの名無しさん
NGNGuse strict;
sub hoge {
my($al, $br, $ch, $de) = qw(1 4 7 10);
my $fuga = sub { $_++ for @_ };
$fuga->($al, $br, $ch, $de);
$fuga->($al, $br, $ch, $de);
return "al = $al br = $br ch = $ch de = $de\n";
}
print hoge();
0384nobodyさん
NGNG&HOGEの中に&FYGAをかいても外に書こうが中に書こうが、スコープはグローバルだったから無意味だったような気がしますが・・・?
この場合は、無名のサブルーチン定義するのが正攻法なきがする・・・
0385デフォルトの名無しさん
NGNGわざわざそこまでしてローカルにしなくても、という気がしますが(^^;
「&HOGEからしか使わない」のであって「&HOGEからしか使わせたくない」のでないなら、
普通に書いてしまっても良いのでは?
「スッキリさせてしまおう」という目的なら、余計に読みにくくなる気がします。
0387デフォルトの名無しさん
NGNGDBD::CSVのあの異常な遅さってText::CSVを使ってるくらいだから
CSVを厳密に解析してるからだと思うんですけど、
BBSとかApacheのログ程度のCSVに対して使う場合に特化した
実用に耐えるDBDってないですかねぇ。
誰かDBD::Logとか作ってくれー。
CSV云々もそうだろうけど、SQLのパースにかかる時間も馬鹿にならないかと。
まぁPurePerlのDBDという時点で速度は期待できないと思うよ。
0389デフォルトの名無しさん
NGNGSQL::Statementもかなり遅いってことかー。
うーん。↓俺の今したいこと。
・PurePerlで
・DBDで
・CSVをSQLで処理
0390デフォルトの名無しさん
NGNGニュースサイトから指定範囲内の記事をタグを解析して取得したいのですが、
Perlで書くにはどんな感じになるんでしょうか。
0391デフォルトの名無しさん
NGNG具体例をだしてもらえないと。
0393デフォルトの名無しさん
NGNG1:
2:sub subr {
3: my($a) = "bcd";
4: print $a;
5:}
こういう状態で 4行目でグローバル変数の$a、
つまり"abc"を表示させるにはどうしたらいいですか?
0395デフォルトの名無しさん
NGNGパッケージを明示すればできる。
print $main::a;
ただ、分かりにくくバグの元になるので、やはり変数名を見直すべき。
0396デフォルトの名無しさん
NGNG$letter = $1;
print "$letter\n";
}
これで $1が取得できない理由はなぜでしょうか。
if文の条件にはマッチしてトラップされているのですが、$letterの中身は
ヌルなのです。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNGそりゃ正規表現を使ってないんだから当然だ。
0399デフォルトの名無しさん
NGNGqq を使うと正規表現が利かなくなるとか、そういうことですか?
0400デフォルトの名無しさん
NGNGそうじゃなくて、そもそも if文の中に書いてあるのは「ただの文字列」。
正規表現でもなんでもない。
if文が実行されるのはマッチしてるからではなく、単に文字列が評価された結果、
真になったので実行されてるだけ。
もう一度、基礎から勉強し直してきてください。
0401デフォルトの名無しさん
NGNG結果として判定部分に $_ =~ を追加することで目的は達せられました。
ありがとうございます。
$_ に対しての正規表現は「$_ =~」の省略が可能という認識だったので
そう表記したんですが・・・
0402はしのえみ好きー
NGNG$letter = $1;
print "$letter\n";
}
0403デフォルトの名無しさん
NGNG> $_ に対しての正規表現は「$_ =~」の省略が可能という認識だったので
m//を使う場合のみ'm'の省略が可能だったはず。
m!!とかm##とかm{}とかの場合は省略できない。
ていうか俺は見にくくなるから常にmは付けているわけだが。
0404デフォルトの名無しさん
NGNGなるほど、どうやら省略できる部分を勘違いしていたようです。
勉強になりました。ありがとうございます。
0405山崎渉
NGNG0406デフォルトの名無しさん
NGNG名前はありますか?(@@演算子とか)
あと、この「<>」って「\n」毎に一行づつ読み込みますけど
任意の文字列までの文字を読み込むとかできますか?
0407デフォルトの名無しさん
NGNG行入力演算子 (line input operator)
デリミタは $/ で変更
0409デフォルトの名無しさん
NGNG1 and {
print "1 ";
print "2\n";
};
このようなスクリプトで、「1 2」という出力を期待していたんですが、シンタックスエラーが発生してしまいます。
1 and {
print "ok\n"
};
ではちゃんと出力されました。なぜ上のスクリプトではエラーが出るのでしょうか
0410デフォルトの名無しさん
NGNG1 and do{
print "1 ";
print "2\n";
};
下の例が大丈夫なのは文が1つしかないから。
上の奴も,でつなげば文法的には大丈夫だが・・・
0411デフォルトの名無しさん
NGNGありがとうございます。do{ 〜; 〜;}を使えばよかったのですね。
ところで、「,」で区切る方もやってみたのですが
1 and {
print "a",
print "b"
}
とすると「ba1」が出力されます。この「1」はどっから出てきたものなんでしょうか?
0412410
NGNGprint ("a", print "b");
"a"が評価され、次にprint "b"が評価されます。
この時に"b"がprintされ、それが成功したとき、
print "b" は 1を返します。
そして、print ("a", 1) を実行し、"a1"と表示します。
0413デフォルトの名無しさん
NGNGなるほど。ありがとうございました。
0414デフォルトの名無しさん
NGNGこれって結局Hash作ってるんだよね?
0415デフォルトの名無しさん
NGNGハァ?
0416デフォルトの名無しさん
NGNGdoじゃない場合はhash作ってるかと。
作ったあとすぐ消されるんだろうケド。
0417デフォルトの名無しさん
NGNG$str =~s/こ/ぽ/;
∧_∧
( ´∀`)<$str
0418デフォルトの名無しさん
NGNG今時、吉牛コピペを出すくらい
ナンセンス。
0419デフォルトの名無しさん
NGNG∧__∧
( ´∀`)< undef
0420デフォルトの名無しさん
NGNG.NetSDK2じゃ使えん、なんとかならない?
0421■□■週間アイドル盗撮ランキング【4月】■□■
NGNGhttp://rental.serikura.jp/~shop/nt/ans.jpg
加護○依 盗撮ランキング2位
http://sagisou.sakura.ne.jp/~deai2/cgi/rank.cgi?arifish
松浦○や 盗撮ランキング3位
http://pakopako.misty.ne.jp/enter.cgi?id=arifish
深田●子 盗撮ランキング4位
http://friends.rank.ne.jp/in.cgi?account=arifish
藤本●貴 盗撮ランキング5位
http://www.all-mode.net/jrank/in.php?id=arifish
浜崎あ○み 盗撮ランキング6位
http://it.sakura.ne.jp/~www/www/ranklink.cgi?id=arifish
先週のランキングベスト1はこの人!!!
http://friends.rank.ne.jp/in.cgi?account=arifish
0422デフォルトの名無しさん
NGNGこの $fugahoge の先頭 1 文字を削除したいのですが、
どのようにすれば安全かつ効率的に行えるでしょうか?
0423デフォルトの名無しさん
NGNG$fugahoge = "fugahogestring";
$fugahoge =~s/^.//;
print $fugahoge;
0424デフォルトの名無しさん
NGNGまじめに恋愛を考える、真剣なあなたのためにこのサイトを作りました。
http://www.h5.dion.ne.jp/~psysys/index.html
0425デフォルトの名無しさん
NGNG$fugahoge = substr($fugahoge, 1);
0426デフォルトの名無しさん
NGNG変数に大きなデータが入っている場合は、どちらが高速ですか?
0427デフォルトの名無しさん
NGNG百兆回繰り返して自分で体感しろ。
0428DQN
NGNG"undefined sub routine"(だっけ?)をデバッグ段階で調べる
方法はないでせうか? 関数名を typo してしまったときに痛いです。
# モジュールとかありそうですけどねぇ。
0429デフォルトの名無しさん
NGNGPerl for Win32 Build 316(v5.003_07?)から、ActivePerl v5.8.0に乗り換えたのですが、
処理の仕方が変わったようで困っています。
時間のかかる処理をするときに、プログレスバーのようなものを表示していたのですが、
ActivePerl v5.8.0では、最後にまとめて表示されるようになってしまいました。
プログレスバーを表示させる、うまい手はないでしょうか?
よろしくお願いします。
for ($i=0 ; $i<5000 ; $i++) {
if ($i%100 == 0) { print "*"; }
for ($j=0 ; $j<1000 ; $j++) {}
}
0430デフォルトの名無しさん
NGNG$| はセットしてる?
残念ながら、実行時まで待つしかないよ。
ここがPerlの苦しい所だが…その代わりにeval()やAUTOLOADという恩恵があるので我慢するしかないね。
0433山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0435山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0436デフォルトの名無しさん
NGNGuse CGI
$q=new CGI
を使ってフォームからのデータを取る場合
何個もあるデータを表示するならどうすればいいのですか?
キーワード 'pass'から取るとすれば分かるのですが。。。
$pass = $q->param('pass');
0437デフォルトの名無しさん
NGNGWEBプログラミング板 http://pc2.2ch.net/php/ 逝け
0438デフォルトの名無しさん
NGNG次のようなサンプル作ったんですけど、
--- test.pl ---
#!/usr/bin/perl
use test2 ;
my $g_test = "exist!" ;
test2::test2() ;
---- test2.pm ----
package test2 ;
use vars qw( $g_test ) ;
sub test2
{
print STDOUT "run test2.pm\n" ;
print STDOUT "\$g_test=$g_test\n"
}
1;
-----------------
うまく行くと、
「$g_test=exist!」と表示されるはずなんですが、期待したとおりに動いてくれません
で、質問なんですが?
1.グローバル変数の宣言、定義は合ってますか?
2.packageからのグローバル変数の参照は合ってますか?
3.Perlのオブジェクト指向的なコーティングに参考になるURLを教えてください。
以上です、また正しい記述をご存知でしたら、教えてくださいませ。
0439デフォルトの名無しさん
NGNGOOPの前にmyの勉強しる
0440438
NGNG--- test.pl ---
#!/usr/bin/perl
use test2 ;
#my $g_test = "exist!" ;
use vars qw( $g_test ) ;
$g_test = "exist!" ;
test2::test2() ;
ん〜、やっぱりこうすべきでしょうか?
グローバル変数を定義するのに、use vars qw( $g_test ) ;の記述が気持ち悪くて、
$main::g_testって意味なら、myで行けるかも?と思ったんですけど。
とりあえず、この記述でこれで合ってますかね?
何方か、具体的な例示してもらえませんでしょうか、オナガイシマス。
0441デフォルトの名無しさん
NGNGour $g_test;
0442438
NGNGレスどうもです、参考になりますた。
ググって調べて
http://books-support.softbank.co.jp/pn/special04-1.html
ここ見つけてナットクしますた。
0443デフォルトの名無しさん
NGNG0444438
NGNGん〜、一応分って使ってるつもりだけど、
これでも、C/C++、Javaのプログラマとして飯食ってるんで。
因みに、グローバル変数の使用用途はシステム全体の
動作状態を示すのに使う予定。
0445デフォルトの名無しさん
NGNG恐怖! 血も凍る恐怖!!
0446デフォルトの名無しさん
NGNG全体の設定を書きたいなら、せめて全部をオブジェト試行で書いて、
すべての親クラスの_initメソッドで、
$self->config(Confit::Tiny->read('./system.ini'));
とかやってください。
メソッド内部ではクラス変数にアクセスするようにしておいて、
子クラスからは
$self->config->{foo}->{bar};
って感じで自然にアクセスできるようにしましょう。
どうか邪悪なソースを書かないでください。お願いします。
0447kasu
NGNGいろいろ書いています。一瞬上手くいったように見えたんですが、やっぱり
$ans->is_successを見ると失敗しています。
FreeBSD上で動かしているのですが、「tcpdump port http」を走らせて見ていると、
どうも外にパケットが出ていないようです。
perlでネットワーク越しにデータを投げようとするとき、以下のようなスクリプトでは
なにか問題有りますか? もし、他の点でも動かない原因がありましたら教えて頂けると幸いです。
よろしくおねがいします。
-------------------------
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
my($url, $post_data, $browser, $rq, $ans, $tmp);
############## user define ################
$url = 'http://www.hoehoe.com/hoehoe';
$post_data = 'user_id=nnn&user_pass=mmm';
############## user define ################
$browser = new LWP::UserAgent;
$browser->agent('Mozilla/4.0');
$rq = HTTP::Request->new(POST => "$url");
$rq->content_type('application/x-www-form-urlencoded');
$rq->content("$post_data");
$rq->content_length(length($post_data));
$ans = $browser->request($rq);
if($ans->is_success) print " SUCCESS\n";
0448_
NGNGhttp://www.freeweb2.kakiko.com/tama/moe/hankaku06.html
http://freeweb2.kakiko.com/tama/moe/hankaku05.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku04.html
http://freeweb2.kakiko.com/tama/moe/hankaku03.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku08.html
http://freeweb2.kakiko.com/tama/moe/hankaku07.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku01.html
http://freeweb2.kakiko.com/tama/moe/hankaku02.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku10.html
http://freeweb2.kakiko.com/tama/moe/hankaku09.html
0449nobodyさん
NGNG@data = split(/,/,$data);
これで、\,をエスケープ文字として処理したいんだけど
/,/の部分で一発で書くうまい方法ってない物かなぁ?
0450デフォルトの名無しさん
NGNGhttp://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
0452デフォルトの名無しさん
NGNGexecとかsystemとかありますけど、
実行した外部のプログラムの戻り値を受け取るようなことを
したいんですけど良い方法はないでしょうか?
0453デフォルトの名無しさん
NGNG何を「戻り値」と呼んでいるかによって答えは変わる。
0454デフォルトの名無しさん
NGNGabが存在するかつcdが存在するかつefが存在しないかつghが存在しない
という条件を書きたいとき
論理積などを使わず正規表現一発で現すにはどうしたらいいでしょう。
というかperlっぽい書き方はどんな感じなんでしょう。教えてください
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG$|=1;
これ先頭に入れるのは無し?
0457456
NGNG0458デフォルトの名無しさん
NGNG`` とか qx{} だとか。
>>454
Perlっぽいのは
/ab/ and /cd/ and not /ef/ and not /gh/
だと思うケド。
0459デフォルトの名無しさん
NGNG/(?<!\\),/
>>454
/^(?=.*?ab)(?=.*?cd)(?!.*?ef)(?!.*?gh)/
0460デフォルトの名無しさん
NGNG順番固定じゃないの?
0463デフォルトの名無しさん
NGNG所々に sleep(1); とか書いても駄目でしょうか?
「レンタルサーバでのCGI利用時の制限」
Perl の1プロセスあたりのサーバリソース占有量として、以下の数値を超過する
処理を行う場合はその処理はサーバ側にて中断され、以降の処理は行われません。
「CPU 使用時間…30秒 メモリ使用量…10Mb」
ちなみに cron で1日1回動かしている perl プログラムです。
0464デフォルトの名無しさん
NGNG$SIG{'XCPU'}='IGNORE'; してみ。
0465デフォルトの名無しさん
NGNGそのレンタルサーバに聞くしかないじゃないの
判断するのはあっちなんだから。
0466デフォルトの名無しさん
NGNG1: cronを使わない方法を考える。
2: cronの使える鯖に移転する。
どっちかというとphp板の話題だろうな
xreaだろうが2研のアクティブスレッドランキングとかどうやってんだろうな
0468デフォルトの名無しさん
NGNGcronは関係ないだろ
0469デフォルトの名無しさん
NGNGcronからCGIにアクセスさせてるのか?
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGプロンプト上で
入力 ppm install Tk
結果 Error installing package 'tk': Could not locate a PPM binary of 'tk' for this platform
searchしてみたら、普通のTkが見あたらず、、
で、http://www.activestate.com/packages/zipsからTk.zipをダウンロード
d:\tempに解凍した中身をおく
D:\temp
+Tk.ppd
+README
+x86
+
という形
プロンプト上で
入力 ppm search /location d:\temp
結果 Tk [800.022] Tk - a Graphical User Interface Toolkit
入力 ppm install /location d:\temp Tk
結果 Error installing package 'tk': Could not locate a PPM binary of 'tk' for this platform
といった形でインストールできません。
バージョンはv5.6.0 built for MSWin32-x86-multi-threadです。
どなたか、インストールする方法を教えていただけないでしょうか?
宜しくお願いいたします。
0472デフォルトの名無しさん
NGNGHTML::Parser
0473デフォルトの名無しさん
NGNGActivePerlv5.8.0を入れてください
標準で入ってます
0475デフォルトの名無しさん
NGNGPerlCRT.dllがない、というエラーで失敗します。
何度アンインスト→インストやりなおしをやっても、PerlCRT.dllが存在しない……
どなたか対処法をご存じないですか?
CPANからPerlCRT.dll単体を引っ張ってきたら、一般保護エラーで終了しました(;´Д`)
0478475
NGNGActive Perl v5.6.1 build 635
Windows2000 です。
0479454
NGNGとても参考になりました。
webprog板のperlスレで同じ質問したら煽られまくって凹んでしまい
返事遅れてすいません。
こっちのスレは雰囲気よくていいですね。
0482デフォルトの名無しさん
NGNGuse IO::File;
$saveout = IO::File->new_from_fd(STDOUT, ">");
STDOUT->open('>log.txt');
STDOUT->print("Yippey yie yay!\n");
STDOUT->fdopen($saveout, ">");
実行すると、
Can't locate object method "open" via package "IO::Handle" (perhaps you forgot to load "IO::Handle"?) at test21.pl line 3.
というエラーがでてしまいます。
Linux+Perl5.6.1and 5.8.0,Windows98+activeperl5.6.1、別のPC上のLinux+Perl5.6.1など
いろいろ試したのですが全て同じ結果でした。
これはPerlとして正しい動作なのでしょうか?
本のサンプルコードでエラーがでるというのは気持ちが悪いのですが。。。
open関数を提供するIO::Handleがロードされてません、痴呆ですか?
ってメッセージ。(標準関数のopenでない)
英語読めないということは小学生がPerlの学習か、
偉いな。
use IO::Handle;
を書き込めばいいんだよ
それで失敗したらしらないな
本のサンプルもときどきまちえるので、本(ほん)のかいしゃのWEB(うぇ〜ぶ)で
正誤表(せいごひょう)をみるんだよ。
0484デフォルトの名無しさん
NGNGこらっ、田吾作、いい加減なこと書くでねぇ。かあちゃんがあれほど口を酸っぱくいってるのに。
/lib/IO/File.pmのuse IO::Seekable;の前にuse IO::Handle;を書き込むだ。
英語が読めりゃいいってもんでもねぇぞ。馬鹿はいくつになっても馬鹿だな、かあちゃん、さみしいぞ。
0485デフォルトの名無しさん
NGNG>use IO::Handle;
もちろん確認済みです。
そもそも、IO::FIleはIO::Handleを継承しているとあるので、
本来use IO::Handle;はいらないはずではないかと思うのですが。
原書のnetwork programming with perlのerrataも確認しましたが、
それらしい記述はありませんでした。
それでどうしてもすっきりしないので、困って質問させてもらったのです。
0486デフォルトの名無しさん
NGNG助言ありがとうございます!
本当に助かります。
今から試してみて、結果はのちほど報告しますね。
0487デフォルトの名無しさん
NGNGだったら
use IO::Handle;
use IO::File;
でいけないかい?
0488486
NGNGSTDOUT->printや
STDOUT->fdopen
などは初めからuse IO::File;を加えることによって問題なく動作するのですが。。
みなさんの環境ではどうなのでしょうか?
STDOUT(*STDOUT{IO})は"IO::Handle"オブジェクトであって"IO::File"オブジェクトではない。
そして、openメソッドはIO::Fileクラスで定義されている。
したがって、STDOUT->open()は失敗するのは当然だね。
多分その本は、テストをIO::FileモジュールではなくFileHandleモジュールで行ったのだろう。
IO::FileをFileHandleで置き換えれば動くと思うよ。
0490486
NGNG>STDOUT(*STDOUT{IO})は"IO::Handle"オブジェクトであって"IO::File"オブジェクトではない。
>そして、openメソッドはIO::Fileクラスで定義されている。
それで、IO::Handleオブジェクトにはそんなメソッドはないよ、
というエラーメッセージになっていたのですね。
File.pm, Handle.pmを覗いたところ、
おっしゃられるようにopenメソッドはIO::Fileで定義されていて、
IO::Handleには定義されていませんでした。
それから、use FileHandle;を使ったら問題なく動作することも確認しました。
とてもわかりやすい解説で、納得がいきました。
昨日の夜から気になって仕方なかったもので^^;
ありがとうございました。
0491takeP
NGNGPerlの超基本的な事を勉強したいので、
初心者が読むのに、お勧めなHPなどがありましたら
教えてください。(一般的な書籍でも構いません)
最終的にやりたい事なんですが、
英語の辞書(コウビルド)を無理やりテキスト化した物(作成済み)を、
PDIC等で読み込める形式にレイアウトを変更する為に、
膨大な量のテキスト置換を行ないたいのです。
(3万5千語の見出しがあって、1語に付き5〜6回の置換作業)
エディタで置換してると、1回の置換作業で
1時間くらい返事が帰って来ない状態になるし、
おまけに、へんてこな結果になったりして、困り果ててます。
ほぼ同様の目的で、以前の辞書のバージョン用のPerlのプログラムを書いて
公開して下さっている方がおられ、いい所まで変換する出来たので、
最終レイアウトを考えて、少し変更するだけで済みそう??
なんじゃないかと、皮算用してます。
(参考)
ttp://neo.pharm.hiroshima-u.ac.jp/faq/cobuild.html
上に書いてる、Perlのプログラムを公開されている場所です。
誘導、宜しくお願いします。
宿題、研究、仕事は自分でやれボケ
馬鹿がム板にperlスレ立てるからこういう痴呆がまぎれこむんだよ
0493Mr. Moonlight ◆r0zx1vMqaw
NGNGこういうスクリプトを書いてくれ、っていう「発注」でもないし、
そんなに目くじら立てなくてもイイのでは?
(まあでも、この板にPerlスレがあるのは確かにちょっと場違いなのかもしれません)
>>491さんが気づいてないのは、それなりに筋のいい人はその程度のことは
自分で何とかしてしまうので、わざわざ経験のない超初心者向けの「HP」とか書籍を
読んだりはしないということですね。(だからなにを薦めていいかもわからないし)
>>492さんが嫌がってるのは、そういう情報を持っている元超初心者とかが
たかってきて超初心者向けの情報交換サロンになったらウザいなあ、
といったところでしょうか。
大昔の月刊ASCIIにはawkとかsedの連載があったりしたけど、
エンドユーザーがこういう類のテキスト処理するニーズっていうのは
結構あると思うんですけどねえ。。なんかいい本とかないんすかね。
0494デフォルトの名無しさん
NGNG>(まあでも、この板にPerlスレがあるのは確かにちょっと場違いなのかもしれません)
何故?理由がわからない
0495デフォルトの名無しさん
NGNGPerlの使い方をCGI以外に知らないからでしょ。
0496デフォルトの名無しさん
NGNGWeb板ならいいのか?
Perl = Web作成用言語かよ
0497デフォルトの名無しさん
NGNGム板にあったら「WebProg板へ逝け」ってことか。
どっちやねん。
0498Mr. Moonlight ◆r0zx1vMqaw
NGNG結局のところPerlって片手間にやるものなんじゃないか、って
気がするんです。自分のわかる範囲で安楽に使ってりゃいいわけで。
わざわざ人に質問してまで使うもんかな、って感じですかね。
Perlごときで人に質問しなきゃならないような人って・・・みたいな。
さらに>>492みたいに、素人がム板に出入りするんじゃねえ、みたいな
スタンスで来られたら、なおさらPerlの出る幕じゃないですよね。
別に、CGI用だから板違い、とかいう話ではないです。
0499デフォルトの名無しさん
NGNG消えろ。
0500デフォルトの名無しさん
NGNGPerlが素人の道具?ほんとにCGIしか知らない臭え。
マジレスすれば、どっちかっつーと玄人好みだぞ。
0501Mr. Moonlight ◆r0zx1vMqaw
NGNG>>482が何かの用事があって仕事を片付けるためにスクリプトを書いてる最中
だったとしたら、そんな質問するより、他の楽珍な書き方を考えたほうがいいわけです。
凝ったことも色々出来るわけですが、それは、
「凝ったことが好きで、凝ったことが出来る能力がある人」が
勝手にやってればいいわけで。(人に質問してまでやらなくても、みたいな)
>>500
「玄人」っていうと、俺のイメージだと、そういう人はこういうスレで質問しないです。
(聞くまでもなくなんとかできちゃいそうです)
0502デフォルトの名無しさん
NGNG失せろよ。あんたはここを見なくてもいいだろうが。
荒らすのが目的か?
0503nobodyさん
NGNG丸投げするやつを助ける義理はないわな・・・
0504デフォルトの名無しさん
NGNG>>503
禿げ同。このスレに限らずム板でも、2ちゃん以外の掲示板・ML・現実社会でも同じだわな。
まあ(人間的に)頭の悪い奴にはわからんだろうが。あ、人間じゃないかw
0505Mr. Moonlight ◆r0zx1vMqaw
NGNGという話なのです。
でも、>>492の気持ちもちょっとわかる気がする、って感じです。
>>491にはオライリーの初めてのPerlを薦めたいが、
http://www.oreilly.co.jp/BOOK/lperl2/
ちょっと難しいかもしれない。
CGIの本じゃないPerlの本で覚えてるのこれしかないので。
0506デフォルトの名無しさん
NGNG俺が色々書いてるのは>>492に対してサルみたいな反応する必要があるのか?
という話なのです。
お前自分の文章読み返してみろ。あほみたいだぞ。
お前のレス全部まとめると「>>492さん、言い過ぎじゃないでしょうか?」の一文しか内容が無いよう。
0507Mr. Moonlight ◆r0zx1vMqaw
NGNG全くおっしゃるとおりでございます。失礼しました。
「>>492さん、言い過ぎじゃないでしょうか?」で逆に
初心者の皆さん、ウェルカムっていうスレの流れにしてしまっても
板住人の皆さんにご迷惑かと思いましたもので。
0508nobodyさん
NGNG聞いてない事に内容を展開する必要はないわなってこったね・・・
んで、漏れは本など使ってPerlを勉強したことがないのだが、資料っていうのなら駱駝本あればいいんじゃないの?
0509デフォルトの名無しさん
NGNG3600円
5月に出るなり。
0510デフォルトの名無しさん
NGNG(ひそひそ)駱駝本、2冊あわせて10000円ですよ!!
0511動画直リン
NGNG0512デフォルトの名無しさん
NGNGhttp://www.pro.or.jp/~fuji/computerbooks/perl/perl.welcome.html
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNG半分以上はリファレンスだから、必要なときに読めばいいんじゃない?
0516デフォルトの名無しさん
NGNGいるんだよ、「読むこと」自体を目的化させてしまっている倒錯者たちが。
そして、ばりばりPerlのプログラムを書いているPerlハッカーに向かって、
「君はPerlのプログラムを書くのがうまいかもしれないが、わたしは駱駝本を
全部読んだので、Perlについては君より偉いんだぜ」と威張ったりするのだ。
そして、100行の下手くそなプログラムを半年もかけて書いて、「これが本物の
Perlの天才が書いたプログラムだ」と見せてまわったりするの。
0517デフォルトの名無しさん
NGNG抱腹絶倒の実例晒キボンヌ。
0518デフォルトの名無しさん
NGNG半年かけた100行ってどんなだろ・・・
よっぽどトリッキーな書き方なのか・・・
それとも、ただ遅いだけなのか・・・
しかし、遅いにしても半年で100行は遅すぎる・・・
ビシバシ一行で書いていってるのかなぁ〜・・・
気になるなぁ〜・・・見てみたい。
0519デフォルトの名無しさん
NGNG#
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG仕様書が見たいです。
0522デフォルトの名無しさん
NGNG強いて言うなら腕が疲れるのだけは頂けないな
0523デフォルトの名無しさん
NGNG苦な人は苦でしょう。
知っていることを延々と説明されて、下らないオヤジギャグブチかまされて。
迷惑極まりない!!!
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGOK。買え。
0526へ?
NGNGこれにリファラーチェックをつけて特定のページからでないと
表示できないようにしたいのですが。
たとえば『http://ike-ike.net/index1.htm』からでないと表示できないように
したのですが・・・
どの辺をいじったらいいのでしょうか?
ソースはこちら
http://www.ike-ike.net/bbsking.txt
アドバイスお願いします。(゜゜)(。。)ペコリ
0527デフォルトの名無しさん
NGNGCGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc2.2ch.net/php/ )
0528デフォルトの名無しさん
NGNGあの本でずっとハァハァしてる香具師はかなり珍しい。
0529デフォルトの名無しさん
NGNGのサンプルありますか?
もう誰か作っている気がするので。。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG技術者なら本屋の店員の言葉を真に受けるな
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535bloom
NGNG0536デフォルトの名無しさん
NGNG著作権法違反。
0537デフォルトの名無しさん
NGNGっていうのがあるらしいのですが、使われた事ある方いらっしゃいますか?
0538デフォルトの名無しさん
NGNGユーザーがリターンを押す前にキー入力を得る方法を教えてください。
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNG思い切りスレ違い
0541デフォルトの名無しさん
NGNG最近 use strict してプログラムを書くことが多くなってきたのですが、
# 綺麗に掛けるのでstrictが気に入りました^^
グローバル変数として利用したい変数はどのように定義するのが王道と
いうか、正道というか、美しいというか、良いのでしょうか。
例1:
use strict;
my $hoge = 'hage';
main()
sub main {
print($hoge);
exit;
}
例2:
use strict;
$::hoge = 'hage';
main();
sub main {
print($::hoge);
exit;
}
私はモジュールの中でも使いやすいように、例2を使っているのですが、
そんなんは邪道だ!とか、この方が良い、などありましたら教えて頂け
ますでしょうか。
>>540
どこから来たんだ。。。
0542デフォルトの名無しさん
NGNGour $hoge = 'hoge';
0543nobodyさん
NGNG私なら例1か・・・
この場合、$::hoge って $main::hoge の省略形だし
中途半端っぽく見えるかもっていう個人的心象の範囲の問題。
(見りゃわかるからいいけどね)
0545541
NGNG弄り倒してきます。
0546デフォルトの名無しさん
NGNGrequireするようなファイルの中だけで使うならmyのがいいかな。
0547デフォルトの名無しさん
NGNG上達のコツは、とにかくPGを組むこと!ってよく言いますよね?
でも、変な癖がつくとなかなか直らないものです。
読むだけで勉強になる
読むだけで綺麗に書くコツがつかめるかも
っていうソースを紹介してくれませんか?
0548デフォルトの名無しさん
NGNGいやその。
色々なソースを見て、綺麗だのそうじゃないだの判断がつく
目を自力で持たないと。
0549デフォルトの名無しさん
NGNGのび太君がドラえもんに頼み事してるみたいだな
0550nobodyさん
NGNG理解出来る程度に自分で作れなければ何処がいいのか解らんという・・・
0551デフォルトの名無しさん
NGNGTerm::GetKey
0552初心者以前
NGNG$nに任意の物を入力してもらってそれが整数かどうか判定するのに
$n=<>;
until($n=~/^[0-9]+$/){整数じゃないぞ、もう一度入れ直せと意味の文とその入力}
としました、なぜuntilの条件文の演算子はeqではいけないんでしょうか?eqと=~の違いがよく(教科書を読んでも)わかりませんでした
eqとした場合parl内部ではどう言う判定になるのでしょうか?
ちなみに実数の入力じゃないと、とか拡張したいのですがこの方法では非常に面倒になりそうです、簡単なものはありませんか?
長くなってすいません、おひまありましたらご教授願います
0553デフォルトの名無しさん
NGNGparlって何?とか、"perlの勉強を始めたばかりの者"って逆撫でしたくて書いてるの?とか、
なんだか疑問点が沢山あるわけですが。
とりあえず eq は 左右が文字列的に等しい場合に真を返します。
正規表現は評価されません。(つかどう評価されるか私は知りません)
0554nobodyさん
NGNG質問のケースでは、 数値を比較するため、 eq を使うことはできません。
$n = 1;
until($n eq 1){ ... }
等と特定の一条件を示すことはできても、$nが1以外の場合条件が成立しません。
んで、正規表現を使う必要があるのですが、 =~ もしくは !~といった ~を使った識別子となります。
あと、
until($n =~ /^\d+$/)
は
if($n !~ /^\d+$/)
と一緒。記述方法の問題。もうちょっとperlの演算子と正規表現を調べてみるとよいかと
0555初心者以前
NGNG本人に馬鹿にするだとか、そういった意図は有りません
御二方とも返事ありがとうございます
つまりeqを使った場合/^[0-9]+$/と言う文字列と真偽を比べてて
本来表したかった、0-9までの文字でできた一字以上の文字列と言う意味を
失うってことのようですね。
演算子と精気表現頑張って勉強します、ありがとうございました
0556デフォルトの名無しさん
NGNGuntilとunlessがごっちゃになってない?
0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNGワラタ
制御構造調べてみるとよいかと
0559554
NGNGミスっておった。
0560デフォルトの名無しさん
NGNGourはPerl5.6から。最新版にしる。
ところでPerlに慣れ親しみすぎたせいで、
C言語でやることがめんどくさくてちっとも覚えられません。
C言語を駆使したスーパーハカーになるにはどしたらよいですか。
ああPerlって簡単で素敵。。。
0561デフォルトの名無しさん
NGNGデバドラでも書いてみれ
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGlocal *FH; とか use Symbol; して my $fh = gensym(); とか。
0564デフォルトの名無しさん
NGNGところで最近とある記事を読んだら「ネストしたtryはメモリリークするよん」とか
書かれているではありませんか!
理由を読んでも渡しにはサパーリなんですが...
tryブロックの中で「tryを使ってる関数」を呼び出してもメモリリークって
起きちゃうんでしょうか!?
どなたかErrorモジュール使われてる方います?
ちなみにとある記事は以下っす。
ttp://bulknews.net/lib/doc-ja/etoys.ja.html
0565デフォルトの名無しさん
NGNG0566564
NGNGね、そう思うんだけどさ。。。
ただ、環状リストや自己参照作っちゃった場合はあり得るって話は聞いたことあるよ。
プロセス終了すればOSが解放するんだろうけど
長いプロセスの場合は問題になるって。
0567デフォルトの名無しさん
NGNG0568564
NGNG長いプロセス組まなきゃいいってこと?
解決!?
0569nobodyさん
NGNGWindows版のPerl5.6の時はメモリーリーク発生しておった。
ガベージコレクトの動作が緩慢っぽい・・・
んで、Perl5.8では問題解決したっぽいけど、perl56.dll経由すると起こるっぽい
0570デフォルトの名無しさん
NGNG0571569
NGNGコレはモジュールだから別問題か
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG仕事で使うとなると、そうも言ってられないので。
0574564
NGNG記事にはtryの実装が下の$subref達に相当するクロージャなので
my $foo;
$subref1 = sub {
$subref2 = sub {
$foo++;
};
};
のような書き方で$fooを使うとリークするってあるんだけど
これってプログラム終われば全部の変数は解放されるよねぇ?
記事自体がmod_perlを前提にした話だったからなのかな?
べつにPerl自身の問題やモジュールのバグとかそういうことじゃないらしいです。
0575デフォルトの名無しさん
NGNGあのコードが実行されるたびに変数のコピーを作って、
いつかメモリを食い尽くすって事?
あとは、そのコードのケースなら、最後に$fooをundefすればリークは起こらないみたい。(って当然か)
tryの中でtryを使う関数を呼び出す分には何の問題もないよ。
0577564
NGNGそうです。それです。
Error.pmのtry-catch文は
my $foo;
try {
# some stuff...
try {
$foo++;
# more stuff...
} catch Error with {
# handle error
};
} catch Error with {
# handle other error
};
のように書くのだけど
tryは$fooへのクロージャになってて、
tryするたび$fooのコピーができるからいずれメモリが尽きるって話です。
(URLは http://bulknews.net/lib/doc-ja/etoys.ja.html)
ただ、mod_perlみたいな常駐プロセスじゃなければ関係ないよね?
っても思うし、どうなんだろうと思ってたわけです。
0578デフォルトの名無しさん
NGNG…と言ってみると当然の事のような気がしてきた。
0579デフォルトの名無しさん
NGNGよく理解できてないんだけど、some stuff のところで
ループの記述があると、(つまり、内側の try を何度も
呼び出すと) $foo のコピーがループのたびに作り出されて
メモリリークになるってこと?
0580564
NGNGたぶんそう。
「$fooの宣言より内側のスコープにループ作ってて
そこでtryした場合は」ってことでしょう。
いや、ちがうか。
tryの実装がグローバルスコープのクロージャならば
$fooへの参照はずっと残るから、
$fooの宣言より外側でループしててもリークすんのか?
ただ、そう考えるとtryをネストするとかしないとかいう話は関係なくなる。
ややこしくて俺もようわからんです。スマソ。
0581564
NGNGいや、リファレンスカウント式のGCとしては
Perlは完璧なんじゃない?(レスによるとWin版ではバグがあるみたいですが…)
ただ、この場合その限界が露呈してくるというか
576さんの言うように(レスサンクスです)、
DESTORYメソッドに相当することを自分でやる必要があるんでしょうね。
0582デフォルトの名無しさん
NGNGperlの eval をそのまま利用するモジュール作った方が良いと思うが
eval{
...
if (わざと例外を発生させる場合) EX->throw(...);
...
};
if (EX->catch(...)){
...
}
EX->throw(...)は内部で die を呼び、EX->catch(...)は$@をチェックして
catchできる場合は真値を返し、できない場合はさらにdieすればよい。
開発時のEXモジュールはcatch, throw内で詳細なスタックトレースを出力させて、
運用時はEXモジュールを簡単なヤツに入れ替えるなんてのはどう?
0583デフォルトの名無しさん
NGNG既に同じモジュールのバージョン違いがインストールされている場合、
カレントディレクトリの方を優先して使う場合はどうすればいいですか?
0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGラクダ本に eval -> if($@) のWrapper乗ってたよ
tryとcatchにしただけ
0586デフォルトの名無しさん
NGNGユーザーがリターンを押す前にキー入力を得る方法を教えてください。
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG538デフォルトの名無しさんsage03/04/25 12:24
<>ではリターンをユーザーが入力するまで、キー入力が読み込めません。
ユーザーがリターンを押す前にキー入力を得る方法を教えてください。
551デフォルトの名無しさん03/04/25 21:43
>>538
Term::GetKey
0589デフォルトの名無しさん
NGNGgetcを使えばSTDINから1文字読み取るが、
基本的にバッファリングされるので復帰文字を入力するまで値が帰ってこない。
バッファリングを無効にする方法はプラットフォームによって異なる。
後は自分で調べろ
0590デフォルトの名無しさん
NGNG:こんな感じのことしたいんですが、何か方法はないでしょうか
:つまり複数行にわたる文字列をサラッと書いて変数にいれたいわけです。
:eot
:
:print $a;
こんな感じのことしたいんですが、何か方法はないでしょうか
つまり複数行にわたる文字列をサラッと書いて変数にいれたいわけです。
0591590
NGNG$a = << 'eot';
こんな感じのことしたいんですが、何か方法はないでしょうか
つまり複数行にわたる文字列をサラッと書いて変数にいれたいわけです。
eot
print $a;
0592デフォルトの名無しさん
NGNGわけわかんねえよ!!
0593デフォルトの名無しさん
NGNGmy $a;
$a = <<'EOT';
これで、
いいんで
ないかい?
EOT
print $a;
0594_
NGNGhttp://www.yamazaki.90.kg/hankaku/hankaku02.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku07html
http://yamazaki.90.kg/hankaku/hankaku01.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0595デフォルトの名無しさん
NGNGprint <DATA>;
__DATA__
こういう
方法も
あるでよ。
0596デフォルトの名無しさん
NGNG$a = '
ぶっちゃけ
これでも
いい
';
0597デフォルトの名無しさん
NGNG*.cgi?a
とかありますよね?
このように、?aならαという処理をする、?bならβという処理をする
というふうにするにはどうすればいいのでしょうか?
あと、これってGET,POST関係ありますよね?
トクトクです。動作可能かもお願いします
0598デフォルトの名無しさん
NGNGCGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc2.2ch.net/php/ )
0599デフォルトの名無しさん
NGNG>CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
>CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
>(WEBプログラミング板 http://pc2.2ch.net/php/ )
0600デフォルトの名無しさん
NGNGめでたいなお前らw
0601デフォルトの名無しさん
NGNGプログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
0602デフォルトの名無しさん
NGNGすいません。間違ってました。巣で間違ってたよ。。
なんでこっち来たのかな・・・
0603602
NGNG○素
0604デフォルトの名無しさん
NGNGQUERY_STRING(GET)
0605デフォルトの名無しさん
NGNGなんだよ、答えがあるじゃないか。
ただ、入力された文字列の出コードくらいやっとけ。
0607デフォルトの名無しさん
NGNGGETとPOSTの違いは$ENV{REQUEST_METHOD}を調べれば分かるよ。
ところで動作可能とはどういう意味ですか?
0608デフォルトの名無しさん
NGNGデコード云々の前に$ENV{QUERY_STRING}の意味分かってるか?
0610デフォルトの名無しさん
NGNGそれが分かってんだったら
if ($ENV{QUERY_STRING} eq 'a') {
α
} elsif ($ENV{QUERY_STRING} eq 'b')
β
}
でいいだろが。
0612デフォルトの名無しさん
NGNGだれかが、.cgi?あいうえお でアクセスしてくる可能性を考えんのか?
別にいいけど。
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGs/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
が使われますが、なぜ早そうな
s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1 )/eg;
を使わないんですか?
0616デフォルトの名無しさん
NGNGKENTがそうしてるからです
0617デフォルトの名無しさん
NGNG早くないからです
0618デフォルトの名無しさん
NGNGいや、後者のほうがタイプ数少ないから「早い」んだろう。
0619nobodyさん
NGNG/*
Benchmark: timing 5000 iterations of a, b...
a: 3 wallclock secs ( 3.24 usr + 0.00 sys = 3.24 CPU) <- pack()
b: 6 wallclock secs ( 5.19 usr + 0.00 sys = 5.19 CPU) <- hex()+pack()
*/
引用
ttp://www.mikeneko.ne.jp/~lab/perl/numerical_transform/
0620デフォルトの名無しさん
NGNGKENTって誰?
>>619
実際のところそんなにループすることないので、
どっちでもいいじゃんと思った
0621デフォルトの名無しさん
NGNGKENT=おいどん
0622デフォルトの名無しさん
NGNG汚いソースばら撒いて、Perlは醜いという間違った認識を人々に与えつづける悪の元凶
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNG例えば、
> ./hogehoge
123 ABC 456
というコマンドの時に、Perl内で変数に 123 と ABC と 456 を取得したいのです。
教えてください。
0625デフォルトの名無しさん
NGNGset sedfile=c:\sedscrip\
set awkpath=c:\awkscrip\
なんて感じでスクリプトが存在するパスを指定できるのですが,
Perl にはこういうものはないのでしょうか?
0626デフォルトの名無しさん
NGNGuse lib '/home/aki/lib';
とか?
0627sage
NGNG@ECHO OFF
set sedfile=c:\sedscrip\
PERL -x C:\hogehoge.bat
GOTO END
#!/usr/local/bin/perl
$sedfile = $ENV{'sedfile'};
print $sedfile;
__END__
:END
0628デフォルトの名無しさん
NGNGopen (PIPE, "ls |");
@ls = <PIPE>;
close (PIPE);
print @ls;
0629624
NGNGうまくできました。
ありがとうございました。
0630デフォルトの名無しさん
NGNGTemp.= 0.0, 0.0, 0.0; Rot.= 6136, 51923, 25961
Vcore = 1.71, 1.49; Volt. = 3.38, 5.16, 11.31, -3.39, -6.14
という文字列が代入されているのですが、この内容を取得したいのですがうまくいきません。
($temp1, $temp2, $temp3, $vcode1, $vcore2, $volt1, $volt2, $volt3, $volt4, $volt5) = ($buf =~ /(\d+\.\d+)/g)
ではダメなのでしょうか?
0631デフォルトの名無しさん
NGNGまた、ソフトウェアはコードよりも保守とサポートが重要だと実証した人でもある。
0632デフォルトの名無しさん
NGNG「どううまくいかないか」を書け。
気づいた点
・$vcode1 って変数名ミスタイプ?
・マイナスの値は符号がとれちゃうけど良いの?
0633デフォルトの名無しさん
NGNGとりあえずuse strictしてからもう一度書き込もう
聞く側の最低限のマナーだ
0634630
NGNG変数名はtypoです。符号は取れてもかまいません。
>633
すいません…
0635デフォルトの名無しさん
NGNG余計な詮索しなきゃいけなくなるだろ。
何でエディタからコピペしないんだよ。
0636デフォルトの名無しさん
NGNGGoogleで探してもめぼしいのがないもので、、、
0637デフォルトの名無しさん
NGNG今コボルのCSV形式がいまいちで "(ダブルコート) を一度perlで[@ダブル] とかに置き換え、
さらにこの変換後のファイルをコボルCSV形式で読み込み、
コボルよりperlを呼び出しこの[@ダブル]を " に置き換えるというようなことをしたいのですが。
0638デフォルトの名無しさん
NGNGhippo2000氏の超訳サイトあたりにいい解説があったきがする。
0639デフォルトの名無しさん
NGNGperldoc DB_File とか見てもらうとわかるんだけど、-> が > になっちゃってます。
これって仕様ですか? ちなみにpod2htmlとかだと大丈夫。
0640デフォルトの名無しさん
NGNGCOBOLって置換もできないの?
0641デフォルトの名無しさん
NGNG$a = `./hogehoge`;
じゃだめなの?
0642デフォルトの名無しさん
NGNG多分オープン系のCOBOLと推測しますが、perlからCOBOLのプログラムを呼ぶなら
systemを使えばいいのですが、逆はCOBOLの側でどういう作法でやるかを
調べるしかないのでは?(ちなみに私は知りませぬ)
普通のプログラムと同じようにPerlで書いたスクリプトが呼べるかどうかと言う意味では、
OSと呼ぶ側の言語によって差異がありますが、呼べることは呼べますね。
あと、[@ダブル] をダブルクォーテーションに置き換えるだけならそのままCOBOLでやった
ほうが早い&速いのでは?まあ、コボルCSV形式というものがどんなものかわからないのと、
COBOLはよくわからないのでなんともいえませんが。
0643デフォルトの名無しさん
NGNG最初に言うべきでしたな
0644デフォルトの名無しさん
NGNGこういうふうに書いてるんですが
for(0..(@a-1)) {
$a[$_] ++;
print $a[$_]." ";
}
もっとスマートにかける方法ありませんか?
0645644
NGNGこの条件の部分です→ for(0..(@a-1)) {
0646デフォルトの名無しさん
NGNG$_++;
print $_." ";
}
0647デフォルトの名無しさん
NGNG個人的にはforとforeachは使い分けたい。(内部的には一緒とはいえ)
0648nobodyさん
NGNGfor(0..$#a) {;
$a[$]
print ++$a[$_]." ";
}
あとこんなんとか・・・
foreach(@a) {
print ++$_." ";
}
0649nobodyさん
NGNGfor(0..$#a) {;
print ++$a[$_]." ";
}
>>647 ループカウンターの値が必要でなければforeach使いますわなぁ・・・
0650デフォルトの名無しさん
NGNGこんなん書いたらぶっ飛ばされるわな。
0651デフォルトの名無しさん
NGNGgrep { local $\ = " "; print ++$_; } @a;
なんか効率が悪そうだが…
スマートと言えばスマートか?
0652デフォルトの名無しさん
NGNGみじかけりゃスマートってもんじゃない。
0654デフォルトの名無しさん
NGNG$_++;
}
と
$_++ while(shift @a);
ってどっちが速いかのぉ
0656デフォルトの名無しさん
NGNG$_++;
print $a[$_];
}
>>654
一緒じゃないの?
Perlも、コンパイルする時、多少の最適化があると思うけど?
0657656
NGNG$a[$i] だな。
0658デフォルトの名無しさん
NGNG黙って foreach (@a) にしとけ、>>644 見た感じ速度は問題じゃないっぽいし
0659デフォルトの名無しさん
NGNGmapで値変える上に戻り値ナシは邪道すぎ。
0660デフォルトの名無しさん
NGNGその外部コマンドのリターンステータスを得るにはどうしたらよいのでしょうか?
0661デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq8.html#How_can_I_capture_STDERR_from_an
0662デフォルトの名無しさん
NGNGなんかこのスレその手の質問多いね。
過去200くらいに2,3回答があると思われ。
0663デフォルトの名無しさん
NGNG別のpc上のoracleに対してアクセスしたいのですが
モジュール等で簡単に行うことは可能でしょうか。
自分の環境にoracleは入っていない前提です。
DBIモジュール等はローカルにoracleがないと無理なんですよね。
0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGどっかにOracleクライアントインストールして DBI::Proxy でアクセス
できたっけ?
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGのうしろの"\n"で改行できるんだけど、printって引数ひとつじゃないの?
print $a, $b, $c, $d, "\n"; みたいなことはできないし。
どういうこと?
0668デフォルトの名無しさん
NGNGひとつとはかぎらない。
print FH "string";
0669デフォルトの名無しさん
NGNG> print $a, $b, $c, $d, "\n"; みたいなことはできないし。
できるが。
0670デフォルトの名無しさん
NGNGprint ファイルハンドル リスト
perldoc -f print をどうぞ。
0671デフォルトの名無しさん
NGNG以前作ってSolaris+Apacheで動かしてたときは、hoge.dirとhoge.pagができ
たんですが、今度、RedHat Linux 7.3+Apache1.3で同じのを動かしたら、
hoge.ndbm.dbという1ファイルしかできず、検索が効かなくなってしまいまし
た。
hoge.ndbm.dbの場合、検索は、以下のじゃだめなんでしょうか。(長すぎる
行があるって出るので改行してます。)
tie (%yoyaku, NDBM_File, "/var/www/html/yoyaku/yoyaku.ndbm", O_RDONLY, 0644)
or die "$!\n";
foreach (sort keys %yoyaku) {
if ($_ >= $today) {
@data = split(/\t/,$yoyaku{$_});
print "<tr><td>$data[0]年$data[1]月$data[2]日($data[10])</td><td>$data[3]時$data[4]分</td><td>$data[5]時$data[6]分</td>
<td>$data[7]</td><td>$data[8]</td><td>$data[9]</td></tr>";
}
}
untie %yoyaku;
0672671
NGNGデータベースファイル名をyoyaku.ndbmにしていたのがいけなかった
ようです。.dir、.pagの場合は、ドットが2つあってもいい
(yoyaku.ndbm.dir、yoyaku.ndbm.pagを読んでくれる)が、
.dbの場合は、だめなんですね。データベースファイル名をyoyakuに
して解決しますた。
0673デフォルトの名無しさん
NGNGflockに関してなのですが、ファイルをロックする時その対象は「ファイルハンドル」になると聞きました。
別々のCGIスクリプトから同一のファイルをopenし、その時それぞれのスクリプトで違うハンドルをつけていたらどうなるのでしょうか。
具体的には以下のような感じです。
#===CGI 1===
open(FILE, "+< ./file.dat");
flock(FILE, 2);
truncate(FILE, 0);
seek(FILE, 0, 0);
print FILE "あいうえお";
close(FILE);
#===CGI 2===
open(DATA, "+< ./file.dat");
flock(DATA, 2);
truncate(DATA, 0);
seek(DATA, 0, 0);
print DATA "かきくけこ";
close(DATA);
まあ例えば上記のような2つのスクリプトがあって、これがほぼ同時に実行された場合ですね。
これだとファイルハンドルが違うから、きちんとロックされないことになるんでしょうか。
それともファイルハンドルは関係なく、対象になるファイルはロックされるんでしょうか。
よろしくお願いします。
0674デフォルトの名無しさん
NGNG試せ
0675デフォルトの名無しさん
NGNG>>673
ファイルハンドルは関係ない。
sub a($){ $fuga = @_; print $fuga }
$hoge=0;
a($hoge);
と同じ。
0676673
NGNG0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG休日を取るにはどうすればいいのでしょうか?
0681デフォルトの名無しさん
NGNG存在しますか?
0682デフォルトの名無しさん
NGNG>休日を取るにはどうすればいいのでしょうか?
仮病を使う、とか。
0683デフォルトの名無しさん
NGNGなかなかやるな・・・。
0684デフォルトの名無しさん
NGNGDate::Japanese::Holiday
0686デフォルトの名無しさん
NGNG試せ
0687デフォルトの名無しさん
NGNG休日って?
土日と日本の祝日?
0688デフォルトの名無しさん
NGNGどの程度コーディングスタイルを決めてますか?
ウチはいい加減だけど大体こんな感じです。
・サブルーチンの引数を取るときの作法
× my $引数1 = shift; my 引数2 = shift;
○ my($引数1, $引数2) = @_;
・引数は必ず ( と ) でくくる。ただし、 print だけは例外。
・@_や$_を省略できるケースでも省略しない。
・@_や$_は、よほど単純な処理でない限り、きちんと命名した変数に代入してから使用する。
・条件判定は必ず先に書く。
× &サブルーチン(...) if (条件);
○ (条件) && &サブルーチン(...);
・名前空間の汚染は可能な限り拒否。
× $x = encode_base64(...);
○ $x = MIME::Base64::encode_base64(...);
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG&& や || の代わりに and や or を使う
if (条件){ &サブルーチン(...); } にする
どれが好み? >>689
0691デフォルトの名無しさん
NGNG場合によりけりだけど、&& || は使わないで and orにするよ
簡潔に書ける場合は 〜 and 〜;
条件よりも処理が大事なら 〜 if(〜)
実行文多いなら普通に if(条件){ブロック}
幾つかの方法を使うからといって統一が無いわけじゃなくて
何が大事か とか、コード書いたヤツがなに考えてたか が見て分かるから
(無駄なコメントなんかよりもずっと)
Perl使える人だけなら、下手にC風に書くよりもずっと見通しがいいよ
不幸にもPerl分かんない人が含まれてるなら、涙を飲んでC風にするけど
0692デフォルトの名無しさん
NGNG省略できるケースは省略した方がいいと思うが。
例えばwhile中のchompなど。
まぁとりあえずperlstyleを読め、と。
0693デフォルトの名無しさん
NGNG次第にモジュールが大きくなってくると、省略のメリットよりデメリットのほうが大きくなる。
そして、なにより
use strict -w
に怒られる。
0694689
NGNGウチの場合は、「 〜 if(〜) 」の表記でデバッグ中に後ろの条件を見落として
悩むケースが多発するので、先に条件を書くように統一してしまいました。
ちなみに && || は少数派のようで、記号文字だとぱっと見たときに目立つから
いうのが個人的な理由だけど、多数派は and or を愛する模様。
最近では、if(条件){ブロック} の代わりに
{
(条件A) || last;
...
(条件B) || last;
...
}
なんて書き方にしてしまうことがよくあります。
後で条件や処理が追加されてもネストが深くならないので。
>>692
どこで変数の中身をいじったかを調べたるときに見落としなくgrepできるのが、
@_や$_を省略しないとか命名した変数に代入するとかの理由です。
(命名した変数に代入は絶対ではなく、スピードが重要な場合は例外あり)
0696デフォルトの名無しさん
NGNG優先順位で誤作動が起きる可能性が少ないと理由で and or を選んでる
0697692
NGNGgrepを考えると確かに$_は不便かも。
私もブロックが長くなるときには for my $hoge みたいにしてるかな。
ブロック内が短い時(5行まで?)は省略しちゃいます。
&& || については and or で統一してます。
&& || はそれこそ値についての評価の場合に限定して使用。
$foo ||= "xxx"; だとか デフォルト値を設定する場合とか。
まぁそれ以前にand orをあんまり使わないでifを使うコトが多いかな。
(条件) and 動作; にするか 動作 if 条件; にするかは今も迷ってる気。
条件が後ろに来ると読みにくい、には一理ありかと。
0698デフォルトの名無しさん
NGNGはよくつかう。
0699デフォルトの名無しさん
NGNG>× &サブルーチン(...) if (条件);
>○ (条件) && &サブルーチン(...);
この場合は
if(条件){&サブルーチン;}
とやるけど、それ以外はすべて同じ感じ。
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG言いたい事は分かるが微妙に突っ込まれそうな表現が嫌チック
0703デフォルトの名無しさん
NGNG当然このスレの住人たちはおのおのの「綺麗さ」をめざしてコーディングしてるんだろうけど、
どんなことに気を使ってるのか熱烈に語ってたも。
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGそのためのOOだしパッケージであるわけで・・・
0707デフォルトの名無しさん
NGNGPerl的か否かというこったな。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG配列やハッシュのタイ関数でSTOREとかFETCHとかいろいろありますが、
スカラーコンテキストで評価する際の挙動に該当するタイ関数ってあります?
0710デフォルトの名無しさん
NGNG教えて(perl
perldoc perltie
perldoc Tie::Array
STORESIZEがそれにあたるかな。
0712デフォルトの名無しさん
NGNGhttp://search.cpan.org/search?query=Font&mode=all
探して無かったら諦めるか作れ。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNGCを知らずにPerlをやるのは全然まずくない
が、一番初めにPerlに触るのはまずいかもしれない
0715デフォルトの名無しさん
NGNGTNX
0716デフォルトの名無しさん
NGNGそうなんだ…。そういえば記述の仕方が特殊ってどこかで聞いたことがあるような。
Perlを始める前に覚えておくと良い言語って何かあります?
暇な時にでも教えてくださると助かりますです。
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGPerlは変態的ですから、慣れると離れられなくなります。
0719デフォルトの名無しさん
NGNG記述の仕方が特殊というか、柔軟、冗長。
個人的に最初からPerlでもいいと思う。
冗長性が高いだけに、よいコードを書くために覚える事は多いけどね。
>>717
あると聞いたことがある。けど、多分、使うべきじゃない。
0720714
NGNGPerlのスタイルに染まる前に普通(?)のスタイルを身に着けた方が良いと思うんだ
その意味では >>718に同意
プログラミングの入門としては、Perlは受け入れやすい言語だとは思う
ただ、そのお気楽さ加減に染まりきってしまうと、他の言語を使うときに少々苦労するかもしれない
上記は、間違った方法でPerlを覚えた場合に当てはまる事で
真っ当にPerlを覚えるなら何も問題は無いよ
その辺に転がってる書き散らしのスクリプトとか、
目を覆いたくなるようなCGIのソースでPerlを覚えると、多分将来苦労する。
まずは、ラマ本、ラクダ本あたりで正当な(?)Perlを覚えるべし
# とかいいつつ、俺は汚いコードを書き散らしてるわけだが
0721デフォルトの名無しさん
NGNGけど、Cから入るくらいならPerlのがましと思わんか?
まあ、多数派に従えと言われたらそれまでだが。
らくだ本等のきれいなコードで覚えるべきってのは全く同意。
0722デフォルトの名無しさん
NGNGで、巷に流れている汚いソースに汚染されるんだ罠。
0723デフォルトの名無しさん
NGNG汚いコード書いても別にいいと思うけどな。
0724デフォルトの名無しさん
NGNGハッシュの場合、STORESIZEにあたるタイ関数って無いみたいなんですけど、やっぱ無いの?
perldoc perltie
perldoc Tie::Hash
は見たけどないっぽい。
デフォルトでは「レコード数/バケット数」を返すみたいなんだけど、それを変更したいのです。
0725デフォルトの名無しさん
NGNGとりあえずラマ本で
ああ、ハッシュは無いね。
多分、ハッシュをスカラーコンテキストで評価した値はデバッグ(ないし最適化)にしか使えないからでしょ。
TieHashの実装によってはレコードやバケットという概念は無意味だし、
本当に必要だとしても、tied(%h)->method()と呼び出すただのメソッドでいいんじゃない?
0727デフォルトの名無しさん
NGNGすげー楽しみにしてるのに。
0728デフォルトの名無しさん
NGNGPerlccを使って、バイナリファイルを出力しようとしたのですが、
いろんなファイルが足りないらしく、エラーが出てコンパイルできませんでした・・・。
Perlだけをインストールしただけでは、perlccは使えないのでしょうか?
Perlのバージョンは、5.8.0を使ってます。
OSはWin2kです。
よろしくお願いします。
0729デフォルトの名無しさん
NGNGCのソースを吐くオプションがあるし。
だからCコンパイラが必要だと思う。
0730728
NGNGはい。Cソースを吐くオプションをつけて出力してみました。
・・・で、bcc32でコンパイルしようとしたら・・・
びっくりするほどエラーが出て、自分がわかる範囲で修正したのですが、
それでもエラーが出ます・・・
bcc32ではコンパイルできないのでしょうか・・・?
clコマンドを使ってる所を見ると、デフォルトではVC++のようですが・・・
0731デフォルトの名無しさん
NGNGVS.Netでコンパイルしてみたら
C:\test>perlcc test.pl
cl : コマンド ライン warning D4002 : 不明なオプション '-nodefaultlib' を無視しま
した。
cl : コマンド ライン warning D4002 : 不明なオプション '-debug' を無視しました。
cl : コマンド ライン warning D4002 : 不明なオプション '-libpath:C:\Perl\lib\CORE
' を無視しました。
cl : コマンド ライン warning D4002 : 不明なオプション '-machine:x86' を無視しま
した。
pcc73hwa.c
LINK : fatal error LNK1104: コンパイラは、ファイル 'pt:ref,icf.exe' を開くことが
できません。
ってでて出来ませんでした。まあ一応報告…
0732デフォルトの名無しさん
NGNGバッチファイルを少し書き換えただけで通った。
環境は>>728と同じ
0733728
NGNGやっぱ、Perlccで吐くCソースをコンパイルするのは難しいらしいです・・・
VC++がデフォルトらしく、コンパイルは通るが実行すると落ちるらしいです。
bcc32で、コンパイルを無理に通してできた実行ファイルも、ワトソン博士に怒られるらしいです。
素直にCで組み直します・・・
ありがとうございました。
0734728
NGNGありがとうございます。
>>731
Vs.Netでは、コンパイル通らないんですね・・・。
結構あっちこっち書き換えないとコンパイル通らないらしいですよ。
>>732
その実行ファイル・・・
実行すると、落ちませんか?
0735デフォルトの名無しさん
NGNG落ちない。
一行表示するだけだしな。
0736728
NGNGそうですか。
俺の調べでは、VC++で出来た実行ファイルでも落ちるってありましたが・・・
古い記事だったので、Perlのバージョンアップで修正されたのかもしれませんね。
なんだか、ちょっと望みが出てきました。
俺も、bcc32でコンパイルできるよう、もうちょっとがんばってみます。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGVCってwindowsじゃん。
0739デフォルトの名無しさん
NGNGこれがらくだ本ってヤツですか?
0740デフォルトの名無しさん
NGNGそれはキリン本
0741デフォルトの名無しさん
NGNGhttp://www.oreilly.co.jp/BOOK/lperl3/
http://www.oreilly.co.jp/BOOK/pperl3v1/
http://www.oreilly.co.jp/BOOK/pperl3v2/
>>740
キリン本が何だったか思い出せなくて気になるじゃないか。(w
0742デフォルトの名無しさん
NGNGで数値を出力するとき、マイナスだと自動で -30.5 とか出力されるけど
プラスのとき自動で +30.5 と出力することは出来ますか?
自分で0以上か調べて+を先に出力するしかないですか?
0743デフォルトの名無しさん
NGNGprintf('%+d', 30);
printf('%+d', -30);
0744デフォルトの名無しさん
NGNG一応探したのだがなかなかいいのがなくて。
あとたとえば掲示板作るとき、セキュリティホールって考慮するの?するか・・・
アクセスカウンターはしなくていいよね?そりゃそうか・・・
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGよくよく考えたら誤爆でした。須磨祖
0747デフォルトの名無しさん
NGNG掲示板作る時、自らのプログラムの欠陥は当然のごとく考慮するよ。
perlのセキュリティーホールは、そんなもん考えてなんになるの?
ってか、プログラム自体にセキュリティは必要ないのでホールとやらもありません。
0748デフォルトの名無しさん
NGNG参加は無料なので参加してみるだけ参加してください。
また私のように紹介すると紹介者の利益の10%も貰えます。
http://www.adultshoping.com/addclickport.cgi?pid=1052120506
0749デフォルトの名無しさん
NGNGいやどっかのサイトにセキュリティホールがこれこれしかしかと書いてあったので。
心配で、CGI作れねぇって思っていたところです。
なんかCGIからメール送信するときに危ないとかなんとか・・・・。
ってかないの?ホームページと違って訳分からん。吊って来ます
0750デフォルトの名無しさん
NGNGそれ通信のセキュリティーじゃねえの?
取り敢えずCGIとperlをごっちゃにするな。
あ、もしかしたら文字化け事件かな?
大丈夫。多分キミはそんな事気にするようなレベルじゃないと思う。
0751デフォルトの名無しさん
NGNG$buf = $ENV{QUERY_STRING}
open("$buf.dat")
とかしてたとするとき
count.cgi?hoge%0|cat%20hogehoge
とか書かれたら
0752デフォルトの名無しさん
NGNGサンクスコンタンボンバー焼肉
0753デフォルトの名無しさん
NGNG誰か解説よろしこ
0754デフォルトの名無しさん
NGNGcgiの穴であれば、Javascriptやeval、systemが問題だのぉ・・・
XSSでぐぐって見ればいいんじゃない?
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0.5足してint
0758デフォルトの名無しさん
NGNG華道家元の安達瞳子(高1まで)大島智子(42) 原かおり(39)
岩本さつき(37)山形テレビ 三上智恵(37)MBS
加藤ゆずか(36)岩手放送 山崎温子静岡第1TV椎名桜子(35)
上野ゆい(35) 水原恵理(35)テレ東 児島未散(34)宝田明の子
樫本(黒田)知永子 ×岩崎宏美・良美栗原はるみ(短大)
花田美恵子(若乃花夫人) 雨宮塔子(31) ドラ永井美奈子(36)
鈴木保奈美(35)鶴田真由(31) 宇都理恵(30)
藤村さおり28歳フジテレビ 中村奈央子(28)
伊藤裕子(27) 木村佳乃(25)山口もえ(24) 矢口倫子(24)
松藤あつこ(20) 峠恵子松田麻未 細田阿也(19)寺田はるひ(AV)
加藤一郎(初等学校から旧制高校成城学園→東京帝国大学法学部・
元東大総長・東大名誉教授・成城学園名誉園長)
柳谷謙介(旧制高校→東大法学部・元外務官僚・成城学園理事長)
鯵坂二夫(旧制高校→京大・京大名誉教授)
小尾信弥(中学校から旧制高校まで成城学園→東京帝国大学理学部・
東大名誉教授)
吉田秀和(旧制高校→東大フランス文学・音楽評論)
小澤征爾(中学校から高校1年まで成城学園、音楽を志し桐朋学園へ・
指揮者・成城学園理事)
堤 清二(旧制高校→東大経済学部・実業家・ペンネ−ム‘辻井 喬’
作家・成城学園理事)
羽田 孜(成城学園高校→成城大学経済学部・元首相・成城学園理事)
大岡昇平(青山学院中学から成城学園中学へ移り旧制高校→京大
フランス文学・作家)
大林宣彦 辻仁成 徳大寺有恒 黒沢久雄・優 赤木圭一郎
田村亮(55)・田村正和(58)丹羽義隆(46)松澤一之(46) 金田賢一
高嶋政宏 高嶋政伸 石黒賢(35) 田邊晋太郎
篠原俊晴 小倉淳 安藤弘樹 なべやかん 小坂一也(66) 及川光博
小宮山雄飛(ホフ・デュラン) 松尾雄治(高校まで)
0759デフォルトの名無しさん
NGNGいや、違うだろ。
if($aaa < 0){$aaa = int($aaa - 0.5)}
else{$aaa = int($aaa + 0.5)}
こうじゃないのか?
0760デフォルトの名無しさん
NGNG負の数の四捨五入の意味を間違えてたらごめんなさい。
いいんだよな?これで。
0761デフォルトの名無しさん
NGNGまぁPerlは全く関係ないんだが。
0762デフォルトの名無しさん
NGNGp d f な ん か 開 き た く な い
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG普通四捨五入って言ったらどうなりますか?
0を起点に絶対値で四捨五入して、符号を戻すことでしょうか?
0765デフォルトの名無しさん
NGNGこまったなぁ
0766デフォルトの名無しさん
NGNG負の数の場合、絶対値を5社6乳して符号を戻すといいのではないかと思います
0767デフォルトの名無しさん
NGNG>>712+Metricsで探しても何も見つからんか?
0768デフォルトの名無しさん
NGNGuse関数で呼び出したモジュールは、一度呼び出すと、それ以上呼び出さないとありますが、
違うパッケージ内で、同じモジュールを呼び出しルーチンを輸入した時、
それは、2度呼び出されてる事になってるのでしょうか?
そうなると、やっぱり処理速度に影響してくるのでしょうか?
0769716
NGNG無駄の無いきれいなコードを目指して頑張ります。
#理由はよく分からないけど正規表現にはまってしまった。
0770デフォルトの名無しさん
NGNGチェックが終わったらコメントアウトしておくべき?
0771動画直リン
NGNG0772デフォルトの名無しさん
NGNG頑張れ、Perlは楽しいぞ
慣れて来たらぐちゃぐちゃなコード書くのも楽しい
# と悪の道へ誘ってみるテスト
>>770
なんで?
0773デフォルトの名無しさん
NGNG余計な処理が(ry
0774デフォルトの名無しさん
NGNGおれはそうしてる。
0775デフォルトの名無しさん
NGNGあるいは、こういうふうに記述できる言語とか、プリプロセッサとか
@a = (
目玉
手足
はらわた
);
print $a[0];
>目玉
0776デフォルトの名無しさん
NGNG0777できました tnx
NGNG目玉
手足
はらわた
);
print $a[0];
0778デフォルトの名無しさん
NGNG@a = (
"目玉",
"手足",
"はらわた",
);
↑これじゃダメなの???
俺は、qwは嫌いな人なので、あまり使わない。
0779デフォルトの名無しさん
NGNGqwの方が追加削除が楽じゃん。
0780デフォルトの名無しさん
NGNGいや、別にダブルクォーテーションとコンマくらい、そんなに手間じゃないし。
削除も、一行削除で簡単だし。
Perlだけなら、なんて違和感ないんだろうけど・・・
他の言語とかもしてると、qwでの配列は違和感ある・・・
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNGdon't
"Hey!"
);
単にダブルクオーテーションとコンマが無いってわけじゃない。
0783デフォルトの名無しさん
NGNG最大の違和感は、スペースで区切るって所。
何か間違ってる気がする。
>>782
そんな時は、シングルクォーテーション使います。
とにかく、俺は違和感あるから嫌いってだけの話で・・・
こんな話でスレが伸びていくのも違和感ある。
と、言うことで、次回からいままで通り質問どぞ。
0784デフォルトの名無しさん
NGNGスペース? あぁ、空白文字の事かい
シングルクォートじゃ don't ダメだろ
混在させる? そりゃすっきりして気持ちがいいねぇ
気分でケチつける前に構文上の理由考えような
0785デフォルトの名無しさん
NGNGもういいって・・・しぶといな。
俺が違和感あって、それで嫌ってるだけだって。
無理に、qwを使うなって推奨してる訳じゃないし、
ただ、そう思うって言ってるだけで、qw使ってるヤツにケチつけるつもりもない。
俺は、qwが嫌い。それだけ。
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG>>786
if($hoge){ use "hogehoge"; }
if($hoge{ require "hogehoge"; }
なんてしたときに、useはどんな時でも読み込まれる
requireが、実行中にrequire文にたどり着いたら評価されるのに対して
useはとりあえず一番最初に処理されるはず
useにしとけば、実行途中にエラー吐くことは無い(最初にチェックされるから)
use でimport呼び出さない方法もあったよね、なんだっけ
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGあ、そんな違いもあったんですか。
所でちょっと長くなるんですが・・・
# ------------------------------------------------------------
[ test.pl ]
use strict;
use Test2;
print test->msg. "\n";
print test->number. "\n";
print test->change("こんにちわ世界2","")->msg. "\n";
print test->change("", "その2")->number. "\n";
exit (0);
↓つづく
0791デフォルトの名無しさん
NGNGんじゃ、
if($hoge{ require "hogehoge"; }
elsif($hage{ require "hagehage"; }
elsif($hige{ require "higehige"; }
こんな場合はrequireの方が負荷少ないかもしれないって事ですか?
0792デフォルトの名無しさん
NGNG[ Test2.pm ]
package Test;
use strict;
sub new {
my $class = shift;
my $data = {
msg => "こんにちわ世界",
number => "その1",
};
bless $data, $class;
}
sub ::test { return Test->new() };
sub change {
my $pkg = shift;
my $new_msg = shift;
my $new_number = shift;
if ($new_msg) { $pkg->{msg} = $new_msg; }
if ($new_number) { $pkg->{number} = $new_number; }
return $pkg;
}
sub msg { return $_[0]->{msg}; }
sub number { return $_[0]->{number}; }
1;
# ------------------------------------------------------------
上記のスクリプトで[test.pl]のTest2.pmをuseで呼び出すとうまく動くのですが、
requireで呼び出すと、エラーがでます・・・
これは、なぜなのでしょうか?
ちなみに、上記のソースは見やすいようにタブ部分に全角スペースを入れてます。
0793デフォルトの名無しさん
NGNG割り込んでスマン =■●_
0795デフォルトの名無しさん
NGNGprint test()->msg. "\n";にすれば桶。
requireは実行時に評価されるから、
testがサブルーチンじゃなくてパッケージ名だと思われてるっぽ。
0796790&792
NGNGなるほど!
エラー出ずにちゃんと動きました!
勉強になりました。 ありがとうございます。
0797デフォルトの名無しさん
NGNGそれこそ慣用的には
use module qw();
だね
0798デフォルトの名無しさん
NGNGどうやって記述すればいいでしょ?
0799768
NGNGどなたか、>>768の質問をお答えできる人いませんか・・・?
よろしくお願いします。
0800デフォルトの名無しさん
NGNGカキコ少ないね。
気にしなくていいよ。どうしても気になるなら自分でベンチマークとって見ればいい。
あと、ラクダ本は少々値は張るが買う価値はあると思うよ。
0802デフォルトの名無しさん
NGNG-----test.dat-----
木立(こだち)のなかに(夏目弱石)
山の上の芋粥(いもがゆ)(芥川蛇の介)
----------------
上のデータから最後の括弧から括弧までを取り除きたいです。
括弧はずべて全角です。
while(<>) {
chomp;
s/(.+?)$//;
print "$_\n";
}
ですとうまくいきません。s/\Q(\E.+?\Q)\E$//;もだめですた。
perl5.6で、文字コードはeucです。
よろしくお願いします。
0803デフォルトの名無しさん
NGNGあっちに書いたのでダメか?
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG上手くいかない、の意味を明確にしろ。
どういう結果を望んで、どういう結果になってしまったかをきちんと説明しる。
WebProg板のやりとりでそれくらい学ばなかったのか。
0806デフォルトの名無しさん
NGNGソースと変換しようとしてるテキストの文字コードが違ってました。
・・・で、問題解決なら、核発動。
0807デフォルトの名無しさん
NGNG●どういう結果を望んで:
-----test.dat-----
木立(こだち)のなかに(夏目弱石)
山の上の芋粥(いもがゆ)(芥川蛇の介)
----------------
上のデータから最後の括弧から括弧までを取り除きたいです。
●どういう結果になってしまったか:
まったくマッチせず、出力がない。
ところで、unix板の正規表現スレで解決しつつあります。
お騒がせしてすみませんでした。
0808デフォルトの名無しさん
NGNG初心者ぽいから、perl5.6じゃなく、jperlを使う。
0809デフォルトの名無しさん
NGNGおかしいな
おれんとこでは
木立
山の上の芋粥
という結果が返ってきたが
0810デフォルトの名無しさん
NGNG誘導された後に質問繰り返してんじゃねーよ(´д`;)
そんな訳で、俺は>>807に振り回された訳だが・・・
0811デフォルトの名無しさん
NGNGこれでどうだ?
0812811
NGNGs/(.*((.*))*.*)(.+)$/$1/;
0813デフォルトの名無しさん
NGNGこーだろうが・・・
0814デフォルトの名無しさん
NGNGこれでも行けました。
unix板の正規表現スレで教えてもらった
s/(.+)(.+)$//;
でも行けました。最初、最長一致だからだめかと思ったけど。
3つの板・スレでお世話になりました。m(__)m
あ、あれまたお助けが・・・
>>813
あれ、これだと、削除したい著者名だけが残っちゃう。寝た?
0815813
NGNGカッコからカッコつーから・・・
0816813
NGNGs/((?:(?!)).)*)\s*$//;
0817デフォルトの名無しさん
NGNG>まったくマッチせず、出力がない。
だとしたら、正規表現の問題じゃないな。
>802のソースでなら、例えマッチがなくても「変換されないままの原文」が出力されるはずだ。
test.datの読み込みが失敗してるんじゃないか?
0818デフォルトの名無しさん
NGNGすまソ。s/(.+)(.+)$/$1/;ですた。
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNGああ、間違えました。「変換されないままの原文」が出力
されるのでした。すみません。
でも、「最短一致はマッチングの位置を後ろにずらしてくれない」
ということが分からないのは同じですが。
0821デフォルトの名無しさん
NGNGPerl初心者スレでは解決しないので断った上でunix板の正規表現スレに
行ったんですよ。そしたら、Perlの問題なので、このスレがいいと言わ
れたんですよ。その内、いろんなところでレスが付き始めて、とっくに
解決しているんですが、礼儀だと思って、お礼を言ったり、レスしてる
んです。では、もう書きません。
0823デフォルトの名無しさん
NGNG・・・結果、マルチポストになってるだろ。
そんな、スネられたような反応されてもねー・・・
_, ._
( ゚ Д゚)
と二\/ |Vつ
\/) .|V
0824デフォルトの名無しさん
NGNG>>814で書いたんですが。
おれいを書かなかったからいけないのかな。ありがとうございました〜。
0825デフォルトの名無しさん
NGNG突然の初心者の来訪に扱い方がわからなかったんだろう
まあ、許してやれや
そして何事もなかったかのように次の質問をどうぞ↓
0826デフォルトの名無しさん
NGNG@a = `ls` とか @b = `cat hgoe` を多用しちゃうんですが、邪道ですか?
後々使うようなら Dirhandle とか openでちゃんと書くんだけど。
と、毒にも薬にもならない話題を振ってみる
0827デフォルトの名無しさん
NGNG0828デフォルトの名無しさん
NGNGもともとそういう言語。
がちがちに書くやつはcgiから入った口だと思う。
0830デフォルトの名無しさん
NGNG使い捨てPerlはバッククォートを多用するんじゃないだろうか。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGUNIXにない機能だからWinでも実装されてないとか・・・
0833デフォルトの名無しさん
NGNG0834832
NGNGWin32::File::GetAttributes(ファイル名, 戻り値);
こうもモジュールが増えてくると本無しでは苦しいなぁ。
0835デフォルトの名無しさん
NGNGどういう意味かわからんけど、CPAN網羅してる本はないと思うよw
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG鬱
0838832
NGNGPerl使いではないんで、どういうモジュールがあるかよく知らなくて
ほとんど自作してたもんで。(特にCGIとネットワーク周り)
せめて、一覧と概要くらい把握しとかないと無駄な労力になるなぁと思って。
0839デフォルトの名無しさん
NGNG最弱者である自分には甘いの?
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGhttp://search.cpan.org/
もし本当に一覧が欲しいと思ってるなら
http://cpan.org/modules/01modules.index.html
なんてのもあるが、結局Ctrl+Fを押すんじゃないかと。
0842832=838
NGNGさんくす。でも、探してるのとはちと違うかなぁ・・・
「FTPはこれ、ODBCはこれ、使い方は自分で調べてね」くらいでいいんだ。
あと、CPANでなくても jcode.pl cgi-lib.pl gif-cat.pl みたいなのとか。
まぁ、普段perl使わない人間なんで もちっと勉強してきます。
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNGお、おれはやらねーぞ
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGhttpでHTMLで普通にダウンロード。みたいな。
0848デフォルトの名無しさん
NGNGいちおうこんなのはある。
http://www.perldoc.jp/
他にも個人サイトでドキュメントの日本語化をしてくれて
いる人は少なからずいる。
googleで検索する技術を身につけるのが一番かもな。
>httpでHTMLで普通にダウンロード。みたいな。
ん?httpでダウンロードできるだろ?
http://www.cpan.org のことではなくて?
0849デフォルトの名無しさん
NGNG>FTPはこれ、ODBCはこれ、使い方は自分で調べてね
言っていることがわからない。
cpan searchで、ftp, odbcで検索するのと何が違う?
おれはむしろ使い方つーか、各モジュールの相互関係がよくわからないことがある。
でも、それを解説しようとするとxml本みたいに結局本の分量になっちゃうんでないの?
0850843
NGNGでもさ、CPANでFTP探すと大量に出て来るぜ?
ODBCもそう(ついでにDBI知らなきゃ、リスト大量に出ても全く理解できんな)
そこからどれを使うかは、慣れとか経験が無いと辛いんじゃないかな
普通にFTPするなら Net::FTP
ODBC使いたいならDBD::ODBC WindowsならWin32::ODBC
みたいな、定番だけのリストがあった方が良いのかもしれないと俺は思う
0851デフォルトの名無しさん
NGNG何をもって定番つーのかも不明だったりするのも真理
0852デフォルトの名無しさん
NGNG(大変良い) 迅速なバグとり、ありがとうございます。これからも、
このモジュール利用させていただきます(はぁと
(最低) インターフェイス考えろ!!使いずらくて、しょうがねぇ!!糞が!!
0853$_
NGNG<IMG>タグで表示されているIMGファイルを削除する方法を教えて下さい。
../2003/images/img.gif
宜しくお願いします。
0854デフォルトの名無しさん
NGNGunlink
0855デフォルトの名無しさん
NGNGモジュール紹介とサンプルコード寄稿システムみたいなもんかな?
コメント数/評価でソートすりゃ自然に定番が分かると
で、誰が作るの?
0856デフォルトの名無しさん
NGNG安定Perl5.5系
開発Perl5.8系
将来Perl6系
で、ぜんぜん作法が違うんだもんな。
0857デフォルトの名無しさん
NGNG0858デフォルトの名無しさん
NGNG安定Perl5.6系じゃねえ?
0859デフォルトの名無しさん
NGNGそれ。俺も気になってたけどやっぱそうだったか。w
誰か5.6と5.8の違いを日本語で書いてあるページ知ってる?
今から検索かけてみるけど、すでに知ってる人いたら書いといて。
0860デフォルトの名無しさん
NGNGあんま(全然)読んでないけど。↓
http://digit.que.ne.jp/work/index.cgi?PerlCE5%2e8%2e0README
しっかり寝て頭がスッキリしたから探しに行こう。。。
0861デフォルトの名無しさん
NGNG三項演算子を使ってパターンを切替えようとして、以下のようなコード
を書きました。(1〜4は切替えて使用)
--
$str = "aaa";
$zero = 0;
$one = 1;
$str =~ ($zero ? s/aaa/${zero}0/ : s/aaa/0/); #(1)
$str =~ ($one ? s/aaa/${one}0/ : s/aaa/0/); #(2)
$str =~ (0 ? s/aaa/${zero}0/ : s/aaa/0/); #(3)
$str =~ (1 ? s/aaa/${one}0/ : s/aaa/0/); #(4)
print $str;
--
結果、(3), (4)は期待通り置換が行われたのですが、
(1), (2)はダメでした。まずカッコの中を評価してその結果に
拘束演算子を適用するというようには解釈されないのでしょうか?
あと、定数と変数で動作が違うのも納得いきません。
0862デフォルトの名無しさん
NGNG演算子とか関数とかありませんか?
0863デフォルトの名無しさん
NGNG変数に文字が入ってるか、数値が入ってるか調べる
演算子とか関数とかありませんか?
0864デフォルトの名無しさん
NGNG正規表現じゃダメ?
0865デフォルトの名無しさん
NGNG同一人物?
とりあえず、(1)と(2)は変数が文字列として解釈されているから
第一項(っていうのか?)が偽になることは無いと思うぜ
あと、定数と変数を云々する前に
Perlでの変数内の文字列と数値の扱い方に気をやってみると良いぞ
0866デフォルトの名無しさん
NGNGopen(shohin,"+>shohinq_master.csv");
flock(shohin,2);
@shohin=<shohin>;
unshift(@shohin,$csv);
print shohin @shohin;
close(shohin);
flock(shohin,8);
・・だとうまくいきません。一番上の行が上書きされてしまうだけです。
flockをコメントアウトしても同じなので、flockは問題ないですよね?
下だとうまくいきます。
open(shohin,"<shohinq_master.csv");
@shohin=<shohin>;
close(rank);
unshift(@shohin,$csv);
open(shohin,">shohinq_master.csv");
print shohin @shohin;
close(shohin);
なにがいけないのでしょうか?おねがいします。
0867デフォルトの名無しさん
NGNG0868866
NGNG下の、close(rank); となってるのはclose(shohin);の間違えでした。とりあえず動いてましたが。
どなたかわかる方、解答お願いします。
0869デフォルトの名無しさん
NGNGopen (FILEHANDLE, +<EXPR);
open (FILEHANDLE, +>EXPR);
はどう違うのでしょうか?
調べてみても両方とも「読み書き両用でopenする」としか書いてありませんでした
0870681
NGNG>とりあえず、(1)と(2)は変数が文字列として解釈されているから
>第一項(っていうのか?)が偽になることは無いと思うぜ
(1), (2)の結果は両方とも "aaa" がプリントされるので置換自体が行われ
ません。もし、真になることが確定していても置換が行われていれば、
(1)は "00" , (2)は "10" がプリントされるはずですよね?
(あと関係ないけど、文字列 "0" は偽と評価されるはずなので(1)は "0" が
プリントされる事を期待してます)
0871デフォルトの名無しさん
NGNG>>869
"+>"は、最初にファイルを空にする。よって、>>866 は "+>" でなく、
"+<"を使うべき。
>>You can put a '+' in front of the '>' or '<' to indicate that you
>> want both read and write access to the file; thus '+<' is almost always preferred for read/write
>> updates--the '+>' mode would clobber the file first.
0872デフォルトの名無しさん
NGNG普通はこうじゃない?これなら $one でもうまくいくと思う
$zero ? $str =~ s/aaa/${zero}0/ : $str =~ s/aaa/0/; #(1)
0873デフォルトの名無しさん
NGNG>866にseekやtruncateを教えてはやらんのん?
0874681
NGNG今はそうしてます。ただ、演算子(=~)の評価の仕方がよく分からなかったので。
$str =~ ($zero ? s/aaa/${zero}0/ : s/aaa/0/); #(1)
1, $zeroを評価
2, カッコの値が s/aaa/0/ となる
3, $str =~ s/aaa/0/ を評価
って、順番で評価すると思ってたんだけど…
で、定数リテラルだとおそらく期待した通りになってるとおもう。
0875デフォルトの名無しさん
NGNG$_ = "aaabbb";
$one = 'aaaccc';
$str = "aaa";
$str =~ ($one ? s/aaa/xx0/ : s/aaa/0/);
print "$str $one $_<br>\n";
$_ = "aaabbb";
$one = 'aaaccc';
$str = "aaa";
$str =~ (1 ? s/aaa/xx0/ : s/aaa/0/);
print "$str $one $_<br>\n";
この二つを実行してみれば、なんとなくわかると思われ。
あと、お前さんは681じゃなくて861だろ?
0876デフォルトの名無しさん
NGNGに変更することはできるのでしょうか?
たとえば
open (OUT, "x.txt")
のようになっているときに
print OUT "abc"
ではなく
print "abc"
で、x.txt に出力されるようにしたいわけですが。
0877デフォルトの名無しさん
NGNGselect(OUT)とかだったような気がする
0878876
NGNG0879デフォルトの名無しさん
NGNG>873
レスありがとうございました。
seekは、なんとなくピンと来るものがあって調べてみたら、わかりました。
0880デフォルトの名無しさん
NGNG板 : プログラマー
↑のような書式で書かれたトファイルがあります。
これを:(全角)を区切り文字として
デフォルト名無しさん,プログラマー,
のような結果を得たいと思っております。
しかし、
でふぉると名無しさん
,
プログラマー
,
というような結果になってしまいます。
while (IN) {
@array=split(/:/, $_);
print "$array[1],";
}
アドバイスお願いします。
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0883880
NGNGとやればいいんですか、それとも
$hoge=chomp($array[1]);
とやるのでしょうか?Perlは2バイト文字でも大丈夫ですか?
0884デフォルトの名無しさん
NGNG心配ならEUC-JPを使えば。
0885880
NGNG変換してからやればいいのか。
どうも
0886デフォルトの名無しさん
NGNGハァ?
0887デフォルトの名無しさん
NGNG最後の文字が日本語で2バイト目が\nだったらchompした時切られるでしょ?
0888デフォルトの名無しさん
NGNGwhile(IN){
chomp;
0889デフォルトの名無しさん
NGNG制御コードは文字集合のところに入らないんじゃないかな
JISでもSJISでもEUCでも。
\(0x5c)はSJISの2バイトに来るんで、SJISは氏ね、とおもう
0890デフォルトの名無しさん
NGNGコードの範囲調べてみれ
0892880
NGNG目から鱗。
0893デフォルトの名無しさん
NGNG最新の active perl をインストールした状態で検索かけてみましたが
存在しません。
仮に(実際確認はしてないので)古い active perl には同梱されているとして、
古い active perl を使わないと jperl は使えないのか、それとも perlcrt.dll
だけどこかからゲットできるのでしょうか?
0894デフォルトの名無しさん
NGNGハッシュはただの実装手段だと思うんですが・・・
0895デフォルトの名無しさん
NGNGassociated array よりも hash の方が名前短いから
0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNGarrayと混同するから、って聞いたことあるけど。
0898デフォルトの名無しさん
NGNGttp://homepage2.nifty.com/kipp/perl/jperl/index.htmlにあるjperlなら
ActivePerl build522をインストールしなきゃいけない。build522のperlを
使いたくないならPATHからそのperlのあるディレクトリを外せばいい。
PerlCRT.dllだけが欲しいならttp://theoryx5.uwinnipeg.ca/CPAN/cpan-search.htmlで
CPAN file nameでPerlCRT.dllを検索汁
0899デフォルトの名無しさん
NGNG何を言ってるんだ?
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNGマルチバイト対応のfgets()と普通のfgets()が別個に必要になってしまうってことだろう。
0902デフォルトの名無しさん
NGNG途中重い処理があり、httpdのタイムアウトにひっかかり、
再試行もしくはサーバエラーが発生してしまいます。
forkして重い処理を別ファイル、別pidで動かしたいのですが、
親プロセスが子プロセスの終了まで待ってしまい、
結局タイムアウトが発生して困っています。
if ( $pid = fork() ) {
print "Location: $url\n\n";
exit;
} else {
system("./hoge.pl");
}
先生方何卒お力を・・・(’д’)
0903デフォルトの名無しさん
NGNGelseでSTDIN/STDOUT/STDOUTをまず閉じちゃえば?
0904デフォルトの名無しさん
NGNGfork()ではなくて、標準出力をクローズするってのはだめ?
0905デフォルトの名無しさん
NGNG>>902
有難うございました。
if ( $pid = fork() ) {
print "Location: $url\n\n";
exit;
} else {
close(STDOUT); #←修正点
system("./hoge.pl");
}
あっさり解決しました。
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNG参考になるか分からないけどPerl5.8 under cygwin で Perl/TK を
動かすためのパッチをハケーン
http://www.xray.mpe.mpg.de/mailing-lists/ptk/2002-03/msg00045.html
0909デフォルトの名無しさん
NGNG流行るといいなぁ
0910デフォルトの名無しさん
NGNGああ、分かった。
>\nと同じ文字があったら一行読み込む時にいろいろと不都合なことがあるか。
の後に「だから、\nと同じ文字は無いんだな」ってのが省略されてるのか。了解
0911デフォルトの名無しさん
NGNG構わないんじゃ?作ったら神。
>>903
この手、頂きます。
0912デフォルトの名無しさん
NGNGつーかrubyがそれにあたらんか?
0913デフォルトの名無しさん
NGNG問題はないはずだが。
0914デフォルトの名無しさん
NGNG> >>903
> この手、頂きます。
STDINは/dev/null、STDOUT,STDERRは同じくnullかファイルにリダイレクトし
た方がいいかもしれん。
使わないことが確実ならいいけど。
0915デフォルトの名無しさん
NGNG@aa = split(/\n/, << "eot");
000
111
222
eot
@aa2 = split(/\n/, << "eot");
aaa
bbb
ccc
eot
&getArray($ss,@aa,@aa2);
sub getArray($@@) {
my($s, @a, @a2) = @_;
print $s."\n";
print $a[0]."\n";
print $a[1]."\n";
print $a2[0]."\n";
print $a2[1]."\n";
}
型宣言もしてるので、このままでも動いてくれていいようにも思うのですが、
これ、@a に @aa2 の中身も全部もっていかれてしまい、aaa, bbb とは表示されません。
サブルーチンで配列を正しく渡すにはどうしたらいいでしょうか?
ポインタを使うのかな?
0916デフォルトの名無しさん
NGNG@は、後ろ全部を飲み込んじゃうよ
ポインタつか、リファレンスを使えばOK
&getArray($ss,\@aa,\@aa2);
sub getArray($@@) {
my($s, $a_ref,$a2_ref) = @_;
@a = @{$a_ref};
@a2 = @{$a2_ref};
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNGscalar関数使うのが一番手っ取りばやいですかね
つまり、サブルーチン内で
@array = (1, 2, 3, 4);
$ref = \@array;
print scalar(@$ref);
普通の配列みたいな $# で要素数を取れるような
やり方はないでしょうか
0919デフォルトの名無しさん
NGNGprint $#{$ref};
わかってると思うが、scalar(@array) と $#array の値は
1異なるので注意してな。
0920918
NGNGなるほど、そういうことか
1異なるのはわかっておりまつ、ありがとう
0921デフォルトの名無しさん
NGNGrequireって同一ファイルは一度しか読み込まないみたいなんだけど、
これを回避する方法無いですか?
複数のパッケージで、同じファイルをrequireする必要あるもんで、
オナガイシマス。
0922デフォルトの名無しさん
NGNGrequireするファイルの中身を丸ごとサブルーチンに入れて、
サブルーチンで呼び出せば?
0923デフォルトの名無しさん
NGNGにすればいいのでは。
0924デフォルトの名無しさん
NGNG%INC
0925enter
NGNG問題が出てきたのでおしえてください。
($str) = @ARGV;
&jcode'convert(\$str,'euc');
$str = substr($str,0,50);
このように、日本語(どのコードかは不定なので、
ECUに変換する)を50文字でカットして、
DBに追加しようとしているのですが、
追加の際に、たまに、EUCではないコードが発見
されたとして、エラーがでます。
エラーは↓のようなものです。
DBD::Pg::st execute failed: ERROR: Invalid EUC_JP character sequence found (0xbf00)
おそらく、最後の文字が2バイトだったときに
半分にちぎれてしまっているのだと思います。
いろいろ試したのですが解決できません。
なにかよい方法はありませんでしょうか?
上記のエラーがでたときは、DBに文字が追加されないのですが、
強引に追加する方法でもかまいません。
環境
perl5.6.0
DB:postgresql
OS:RedHatLinux7.2
0926デフォルトの名無しさん
NGNGDB 側で文字数の制限をかけるか、
マルチバイト文字の境界を正しく判定して文字を切りつめるかのどちらか。
後者については大崎さんの Perl メモとかが参考になるんじゃないかな。
0927enter
NGNGありがとうございます。db側では、例えばこのような場合、
varchar(51) のようにしています。
それより大きな長さの文字を入れようとしてもエラーがでるので
substrでカットしようとしたところでした。
大崎さんの Perl メモを参考にさせていただこうと思います。
s///で最後の文字を削除のようにしたらなってくれればいいのですが・・・
0928デフォルトの名無しさん
NGNG最後の1byteを削ればいいんでは。
0929enter
NGNGありがとうございます。Perlメモのところに
最後がとぎれているかを調べる正規表現がありましたので、
そちらでしらべ、途切れていたら1byte削除というほうほうで、
回避することができました(^^
今回は1ファイルから1行ずつよみこみ、変換し、変数に追加し、
DBにいれるという状況なのですが、
1行ずつ処理しているときに、たまに変換がうまくいかないという
こともあるようでした。それも、できるだけ対応しました。
今は、なぜが、chomp や s/\s//g をやっても
削除されない改行コードをどうやって削除するかに
苦戦しています。
0930デフォルトの名無しさん
NGNGs/\r\n$// でもいいけど
一度、文字コードと改行コードをまともに調べた方が後の苦労が無いと思うよ
0931enter
NGNGどうもありがとうございます。
どうやら、読み込んだファイルの中に\nという記述があり、
それが悪さをしていたようでした。
なので、s/\\n/gとして取り除くことで、それは
削除できました。
次は、perl実行中にsegmentation faultが起こる理由がわからず
苦戦中です。
必ず同じところで発生するので、何らかの理由があると
思うのですが・・
0932デフォルトの名無しさん
NGNG先頭が「-」ハイフンから始まるメールアドレスに、どうしてもメールが送信できません。
メールアドレスを直接、UNIXのmailコマンドに送ってメール送信をしていますが、
コマンドを起動する前に、
$mailaddr = qq|”\\\\\\\\|.$mailaddr.”\”” if ($mailaddr =~ /^\-/);
と処理しています。(もちろん上記の全角部分も半角で記述しています。)
上の方法じゃだめなんでしょうか?
(というか、「-」から始まるメアド、DoCoMoとか野放しなのがいけないんだぁ!!^^;)
0933デフォルトの名無しさん
NGNGちなみに、¥の数は合っているはず。^^;;
0934デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNG(´-`).。oO(なぜ、docomoの肩持つんだろ・・・社員?)
0936enter
NGNG@FIND = `/usr/bin/find ./$directory -type -f`;
のところで出ていました。
しかし、いろいろなディレクトリにおいて実行するのですが、
特定のディレクトリのときのみです。
その中身は10くらいのファイルがあるだけで、
変な文字があるというわけでもありません。
テストスクリプトにその部分だけかけば記述されるし、
苦戦しています
0937デフォルトの名無しさん
NGNG0938enter
NGNGgpc ./Main.pl
としてもエラーがでます。
普通に実行したときにコアファイルもはきだしません。
0939デフォルトの名無しさん
NGNG0940enter
NGNGしかし、普通にオープンしているだけだし、
s-jisで読み込んでeucに変換しますし、
ファイルサイズが大きいわけでもないし・・
0941デフォルトの名無しさん
NGNG[EUC始まり]■○□△[EUC終わり]
みたいにはじめと終わりに制御コードが付いてるんじゃなかったっけ?
だとしたら途中で切っちゃっていいの?
0942デフォルトの名無しさん
NGNGそれ、jisだと思ふ。
0943デフォルトの名無しさん
NGNG解決しました。有難うございます。
「”」で囲わなかったらうまくいきました。
って、簡単すぎるよ・・・。_| ̄|○
0944デフォルトの名無しさん
NGNG> gpc ./Main.pl
> としてもエラーがでます。
gpc: command not found か?
segmentation faultが起きるってのはperl自体のバグ。
gdbの使い方は
$ gdb /usr/bin/perl core
だが、デバッグオプションつけてコンパイルいてないと無理だろうし、ソース
もないとダメだから、自分でコンパイルし直すのが確実。
0945デフォルトの名無しさん
NGNGうわ〜ん
segmentation faultの原因はわからないが、find程度のことなら自前でやれば問題はないと思う。
標準ライブラリのFile::Findと付属のユーティリティfind2perlを参照のこと。
0947デフォルトの名無しさん
NGNGうまくいきません。
#$strの最後の文字が途切れているか判定する
if($str=~/\x8F$/ || $str=~tr/\x8E\xA1-\xFE// % 2)
{
chop($str);
}
これってもしかしたら半角カナが入ってた場合は思うような結果は得られませんか?
0948デフォルトの名無しさん
NGNG#!/usr/bin/perl
で動いていたのですが、なぜか、今は
bash: ./Main.pl: bad interpreter: No such file or directory
というエラーが出て動きません。
#!/usr/bin/perl -w
など、何らかのオプションをつけると動くのですが、
これではすこしまずです。
なぜ、こうなるのでしょうか?
0949デフォルトの名無しさん
NGNG俺は以前、ソースをWinで編集してUnixのサーバーに転送って形で
作業をしてたら、改行コードのせいで同じような問題がでたことあるよ。
0950デフォルトの名無しさん
NGNGどうもです。
ですよね・・バイナリモードとか気にして送らないとだめな
ばあいですね。
でも、今回は、サーバー上で編集してるんです。
EUCできっちりしてるし、
消して書き直したりもしたけど、やっぱり無理。
なんでだろう・・
0951デフォルトの名無しさん
NGNGすると ^Mがでてこない?
0952デフォルトの名無しさん
NGNG#!/usr/bin/perl^M
^M
が出てきます。どうしてでしょう?
これだからならないんですね・・・
0953棄教者 ◆egKIKYO7cg
NGNGEUC は文字コードの話。改行とは関係ナッシング。
ソースはリモートホスト上でスクラッチしたのならわからないが、
ローカルホスト上で書いた改行コードがアレなファイルをリモート上で編集しても
改行コードはアレのままだYO!
安直な方法
nkf --unix < kusatta_kaigyo_code_no_text > matomona_kaigyo_code_no_text
0955bloom
NGNG0956デフォルトの名無しさん
NGNG元の文字コードがわからないものを
eucに変換することはできないのでしょうか?
0957デフォルトの名無しさん
NGNGただ添付ファイルがあるメールやHTMLメールを受信した場合に
処理が変になってしまいます。
このあたりの処理をやってくれるモジュール類でおすすめのものがありましたら教えてください。
0958デフォルトの名無しさん
NGNG新品アダルトDVDが税込み900円〜!
http://www.dvd-yuis.com/
0959957
NGNGもしご存じでしたら教えてください。
Googleで色々探してみたのですが、良いページがなかなか無くて。
0960ray
NGNGたまに↓のようなエラーが出ます。
DBD::Pg::st execute failed: ERROR: Invalid EUC_JP character sequence found (0xaa04) at .//db.pl line 89.
0xaa04という文字コードをふくんでいるからだと思われますが、
できるだけEUCのみを追加するようにしています。
動きとしては
ファイルを開く
↓
1行ずつ読み込む
↓
Perlメモのソースを組み込み、
できるだけEUCにし、それでも
EUCじゃなさそうなものは無視する
EUCのものは変数に追加していく
↓
ファイルを読み終わったら、
変数をDBに追加する。
ということをしています。
これで100件に1回くらい上記のエラーがでてしまいます。
どうにかして、避けたいのですが・・・
0961デフォルトの名無しさん
NGNG> EUCじゃなさそうなものは無視する
これが不完全なんだろうな。
0962デフォルトの名無しさん
NGNGPerlで、特定のディレクトリ以下のファイルをミラーリングして、ファイル
を更新(古いファイルは退避)した時、ファイルを上書きする時などに、
ログに残すスクリプトを書いているのですが、日本語のディレクトリ名
が入るとどうにもうまくいきません。
「〜〜表」みたいな名前のディレクトリがあると、'コードの\'(0x5C)が
ディレクトリの区切りと混同されるらしく、ファイルテスト判断子(-d)で
判定しても、ディレクトリと思って貰えないようです。
この問題を解決する手段をご存知の方、お教えください。
0963デフォルトの名無しさん
NGNG#!/usr/bin/perl -T
って意味あるの?
0964デフォルトの名無しさん
NGNG0965963
NGNGを読んでたのでつが…
結局
[\<\>\"\'\%\;\)\(\&\+\|\$\#]
を置き換えするのだったら -Tイラネって気がするので
聴いてみましたのでつ
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNG読んだファイル一覧を、jcodeとかでEUCに変えれば?
半角カタカナは全角に戻して。
0968デフォルトの名無しさん
NGNGEUC-JPに直すんなら半カナ→全カナはいらないと思うが。
0969デフォルトの名無しさん
NGNGお返事ありがとう。
それやったんですが、やっぱり、ファイルテスト判断子が通らないん
ですよねぇ。ファイルテストって内部的にどういう処理になってるのか?
知らないのですが。どうもそれじゃダメみたいです。
Jperlって手もあるんだけど、今、いろいろモジュールが入っているの
で、あの環境を残しておきたいんですよねぇ…
0970デフォルトの名無しさん
NGNG次のスクリプトを試してみな。
これで駄目なものが出るようなら、Visual C++のisDirectory関数を使った
ライブラリを必要な人が自分で書くしかないな。
opendir DIR,'.';
@files = readdir DIR;
closedir DIR;
for (@files) {
print $_;
s/\\$/\\\\/g;
print " -> Directory" if (-d) ;
print "\n";
}
0971デフォルトの名無しさん
NGNG0972237
NGNG動いた人いる?
なんか動かないんだが、、
0973棄教者 ◆egKIKYO7cg
NGNG0974デフォルトの名無しさん
NGNGで、ちょっと使いかたを把握してないのですが、以下の処理は可能でしょうか?
また、可能ならばどう記述すれば良いでしょうか?
@aaa; #整数が複数個入っている。
@bbb; #整数が複数個入っている。
これをまぜて数字順でソートしたい。@sortの中にいれる。
ただ、数字を入れたいのではなく、「aaa」の文字列か「bbb」の文字列をいれたい。
もうちょっと分かりやすく言うと、
@aaa = (12 , 1);
@bbb = (5, 3);
となっていたとする。
この場合、最大値と最低値の数字をaaaが持っていて、中の二つの数値はbbbが持っているので、結果的に
@sort = ('aaa' , 'bbb' , 'bbb', 'aaa');
となるようにしたい。実際の所は、@aaa、@bbb共に何個数字を持っているか分からず、ダブっている数字もある。(ダブっていても抹消されないようにしたい)
数字は、大きいほうからの順で先頭から代入させたい。
0975974
NGNG>perlって、ソート標準にソート関数がありますよね。
perlって標準関数にソートがありますよね。
テンパってました。
0976bloom
NGNG0977_
NGNG( ^▽^) < こんなのございまーす♪
ttp://www.yamazaki.90.kg/hankaku/hankaku04.html
ttp://yamazaki.90.kg/hankaku/hankaku10.html
ttp://www.yamazaki.90.kg/hankaku/hankaku09.html
ttp://yamazaki.90.kg/hankaku/hankaku08.html
ttp://www.yamazaki.90.kg/hankaku/hankaku06.html
ttp://yamazaki.90.kg/hankaku/hankaku05.html
ttp://www.yamazaki.90.kg/hankaku/hankaku01.html
ttp://yamazaki.90.kg/hankaku/hankaku02.html
ttp://www.yamazaki.90.kg/hankaku/hankaku07.html
ttp://yamazaki.90.kg/hankaku/hankaku04.html
0978974
NGNG標準関数を使わないで自分で作り始めたのですが、なんとか自己解決できそうです。
すみませんでした。
0979デフォルトの名無しさん
NGNG@sort = sort{ $a <=> $b } @bbb;
でいいのか?
0980デフォルトの名無しさん
NGNGそれでファイナルアンサー?
0981974
NGNG質問者の俺が言うのもなんですが、明らかに違うっす。
記述のほうは自作でループ作って解決しました。
順番に照合していって、@sortにaaaかbbbの文字列を代入させる方法です。
0982デフォルトの名無しさん
NGNG@sort = map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
(map { ['aaa', $_] } @aaa),
(map { ['bbb', $_] } @bbb);
0984デフォルトの名無しさん
NGNGソートアルゴリズムを選んでどうなるものではない。
正解は983だろう。
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGPerlについての質問箱 5箱目
http://pc2.2ch.net/test/read.cgi/tech/1053053082/l50
0987ray
NGNGそうなんです。
これが晩年の問題なんですよね・・・
0988デフォルトの名無しさん
NGNG墓石に刻め。
0989974
NGNGよ、よく分からんけど。美しい!
え〜と、リファレンスがmapで…?
……ボ〜ン!!
ひ、久しぶりに本開いてみよう…汗
ありがとうございます。
ちゃんと理解してから使わせてもらいます。
0990デフォルトの名無しさん
NGNGquotemetaしてみたら?
0991デフォルトの名無しさん
NGNGクックブックに解説載ってるよ、シュワルツ変換だったかな
俺も感動した
0992デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。