Perlについての質問箱 4箱目

このエントリーをはてなブックマークに追加
932です。

解決しました。有難うございます。

「”」で囲わなかったらうまくいきました。
って、簡単すぎるよ・・・。_| ̄|○

>>938
> gpc ./Main.pl
> としてもエラーがでます。
gpc: command not found か?

segmentation faultが起きるってのはperl自体のバグ。

gdbの使い方は

$ gdb /usr/bin/perl core

だが、デバッグオプションつけてコンパイルいてないと無理だろうし、ソース
もないとダメだから、自分でコンパイルし直すのが確実。
>942
うわ〜ん
946 ◆hMJAPH9PWA :03/05/14 20:13
>>936
segmentation faultの原因はわからないが、find程度のことなら自前でやれば問題はないと思う。
標準ライブラリのFile::Findと付属のユーティリティfind2perlを参照のこと。
947デフォルトの名無しさん:03/05/15 09:55
>>925と同じことをしててPerlメモを参考にしてるのですが、
うまくいきません。

#$strの最後の文字が途切れているか判定する
if($str=~/\x8F$/ || $str=~tr/\x8E\xA1-\xFE// % 2)
{
chop($str);
}

これってもしかしたら半角カナが入ってた場合は思うような結果は得られませんか?
plの1行目を以前は
#!/usr/bin/perl
で動いていたのですが、なぜか、今は
bash: ./Main.pl: bad interpreter: No such file or directory
というエラーが出て動きません。
#!/usr/bin/perl -w
など、何らかのオプションをつけると動くのですが、
これではすこしまずです。
なぜ、こうなるのでしょうか?


949デフォルトの名無しさん:03/05/15 11:44
>>948
俺は以前、ソースをWinで編集してUnixのサーバーに転送って形で
作業をしてたら、改行コードのせいで同じような問題がでたことあるよ。
>>949
どうもです。
ですよね・・バイナリモードとか気にして送らないとだめな
ばあいですね。

でも、今回は、サーバー上で編集してるんです。
EUCできっちりしてるし、
消して書き直したりもしたけど、やっぱり無理。

なんでだろう・・
head ./Main.pl | cat -v
すると ^Mがでてこない?
あれ!
#!/usr/bin/perl^M
^M
が出てきます。どうしてでしょう?
これだからならないんですね・・・
953棄教者 ◆egKIKYO7cg :03/05/15 13:50
>>950
EUC は文字コードの話。改行とは関係ナッシング。
ソースはリモートホスト上でスクラッチしたのならわからないが、
ローカルホスト上で書いた改行コードがアレなファイルをリモート上で編集しても
改行コードはアレのままだYO!

安直な方法

nkf --unix < kusatta_kaigyo_code_no_text > matomona_kaigyo_code_no_text
954952:03/05/15 15:11
>>951さん
>>953さん、
まさに適切なアドバイスをありがとうございました。
文字コードと改行コードは別だったのですね・・
知りませんでした。
ありがとうございました。
955bloom:03/05/15 15:13
956デフォルトの名無しさん:03/05/15 19:11
perl5.8の場合、
元の文字コードがわからないものを
eucに変換することはできないのでしょうか?
957デフォルトの名無しさん:03/05/15 19:24
.qmailやaliasesからperlでメールを受信しています。

ただ添付ファイルがあるメールやHTMLメールを受信した場合に
処理が変になってしまいます。

このあたりの処理をやってくれるモジュール類でおすすめのものがありましたら教えてください。
958デフォルトの名無しさん:03/05/15 19:31
女の子でも安心して買えるよ!
新品アダルトDVDが税込み900円〜!
http://www.dvd-yuis.com/
959957:03/05/15 19:51
参考になるページだけでも良いので、
もしご存じでしたら教えてください。
Googleで色々探してみたのですが、良いページがなかなか無くて。
960ray:03/05/15 20:15
perlからpostgresqlに、データを入れるのですが、
たまに↓のようなエラーが出ます。
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回くらい上記のエラーがでてしまいます。
どうにかして、避けたいのですが・・・
961デフォルトの名無しさん:03/05/15 20:19
>>960
> EUCじゃなさそうなものは無視する
これが不完全なんだろうな。
962デフォルトの名無しさん:03/05/15 21:25
こちらは、Active PerlのWin32環境です。

Perlで、特定のディレクトリ以下のファイルをミラーリングして、ファイル
を更新(古いファイルは退避)した時、ファイルを上書きする時などに、
ログに残すスクリプトを書いているのですが、日本語のディレクトリ名
が入るとどうにもうまくいきません。


「〜〜表」みたいな名前のディレクトリがあると、'コードの\'(0x5C)が
ディレクトリの区切りと混同されるらしく、ファイルテスト判断子(-d)で
判定しても、ディレクトリと思って貰えないようです。

この問題を解決する手段をご存知の方、お教えください。
ちと質問でつ

#!/usr/bin/perl -T
って意味あるの?
よくわかんないやつはjperl使いなよ
965963:03/05/15 21:39
http://www.ipa.go.jp/security/awareness/vendor/programming/a04_03.html

を読んでたのでつが…
結局
[\<\>\"\'\%\;\)\(\&\+\|\$\#]
を置き換えするのだったら -Tイラネって気がするので
聴いてみましたのでつ
966デフォルトの名無しさん:03/05/15 22:29
aaggee
>>962
読んだファイル一覧を、jcodeとかでEUCに変えれば?
半角カタカナは全角に戻して。
>>967
EUC-JPに直すんなら半カナ→全カナはいらないと思うが。
>>964>>967
お返事ありがとう。

それやったんですが、やっぱり、ファイルテスト判断子が通らないん
ですよねぇ。ファイルテストって内部的にどういう処理になってるのか?
知らないのですが。どうもそれじゃダメみたいです。

Jperlって手もあるんだけど、今、いろいろモジュールが入っているの
で、あの環境を残しておきたいんですよねぇ…
970デフォルトの名無しさん:03/05/16 01:21
jperlは駄目。
次のスクリプトを試してみな。
これで駄目なものが出るようなら、Visual C++のisDirectory関数を使った
ライブラリを必要な人が自分で書くしかないな。
opendir DIR,'.';
@files = readdir DIR;
closedir DIR;
for (@files) {
print $_;
s/\\$/\\\\/g;
print " -> Directory" if (-d) ;
print "\n";
}
971デフォルトの名無しさん:03/05/16 01:22
おっと、gは余計だった、スマソ
972237:03/05/16 01:34
Windows2003のIIS6でActivePerl5.8でのCGI
動いた人いる?
なんか動かないんだが、、
973棄教者 ◆egKIKYO7cg :03/05/16 01:54
誰か五箱目作ってくれ。
perlって、ソート標準にソート関数がありますよね。
で、ちょっと使いかたを把握してないのですが、以下の処理は可能でしょうか?
また、可能ならばどう記述すれば良いでしょうか?

@aaa;  #整数が複数個入っている。
@bbb;  #整数が複数個入っている。

これをまぜて数字順でソートしたい。@sortの中にいれる。
ただ、数字を入れたいのではなく、「aaa」の文字列か「bbb」の文字列をいれたい。

もうちょっと分かりやすく言うと、
@aaa = (12 , 1);
@bbb = (5, 3);

となっていたとする。

この場合、最大値と最低値の数字をaaaが持っていて、中の二つの数値はbbbが持っているので、結果的に

@sort = ('aaa' , 'bbb' , 'bbb', 'aaa');

となるようにしたい。実際の所は、@aaa、@bbb共に何個数字を持っているか分からず、ダブっている数字もある。(ダブっていても抹消されないようにしたい)
数字は、大きいほうからの順で先頭から代入させたい。
975974:03/05/16 03:08
訂正
>perlって、ソート標準にソート関数がありますよね。
perlって標準関数にソートがありますよね。
テンパってました。
976bloom:03/05/16 03:13
977_:03/05/16 03:27
978974:03/05/16 03:28
すみません。
標準関数を使わないで自分で作り始めたのですが、なんとか自己解決できそうです。
すみませんでした。
push(@bbb, @aaa);
@sort = sort{ $a <=> $b } @bbb;
でいいのか?
>>979
それでファイナルアンサー?
981974:03/05/16 08:08
>>979
質問者の俺が言うのもなんですが、明らかに違うっす。

記述のほうは自作でループ作って解決しました。
順番に照合していって、@sortにaaaかbbbの文字列を代入させる方法です。
マージソートじゃ駄目なの?
983 ◆hMJAPH9PWA :03/05/16 10:24
>>981
@sort = map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
(map { ['aaa', $_] } @aaa),
(map { ['bbb', $_] } @bbb);
>>982
ソートアルゴリズムを選んでどうなるものではない。
正解は983だろう。
combsortって速いソートなんですか?
次スレ用意しました。

Perlについての質問箱 5箱目
http://pc2.2ch.net/test/read.cgi/tech/1053053082/l50
987ray:03/05/16 12:25
>>961さん
そうなんです。
これが晩年の問題なんですよね・・・
>>987
墓石に刻め。
989974:03/05/16 13:44
>>983
よ、よく分からんけど。美しい!
え〜と、リファレンスがmapで…?
……ボ〜ン!!

ひ、久しぶりに本開いてみよう…汗
ありがとうございます。
ちゃんと理解してから使わせてもらいます。
>>969
quotemetaしてみたら?
>>989
クックブックに解説載ってるよ、シュワルツ変換だったかな
俺も感動した
むしろEffectivePerlやな。