トップページphp
1001コメント354KB

【Perl 】初心者コーナーPart8

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/10/24 14:11ID:???
いらっしゃーい、perlのコーディングで困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://ebi.2ch.net/test/read.cgi/php/988809842/l50
CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
http://ebi.2ch.net/test/read.cgi/php/1000804655/l50

過去ログ、その他の役立ち情報は>>2-10を見よう。
0082名無しさん@お腹いっぱい。01/10/27 21:18ID:???
車だってさ(w
0083名無しさん@お腹いっぱい。 01/10/27 21:21ID:???
>>81 eq ターミネータ
0084名無しさん@お腹いっぱい。01/10/27 21:24ID:???
>車
過疎地うろついてないでマ板いきなよ
Perlスレもぽこぽこ建ってるし
0085名無しさん@お腹いっぱい。01/10/27 22:52ID:???
ログ移転前に書いてみる。
0086名無しさん@お腹いっぱい。01/10/27 22:56ID:???
移転上げ
0087名無しさん@お腹いっぱい。01/10/28 21:53ID:???
age
0088名無しさん@お腹いっぱい。01/10/29 03:25ID:pi9OrPjF
(aa..zz,aA..zz,Aa..zz,AA..zz)
みたいなアルファベット大・小文字全部並べるスライスの,簡単な書き方ってありますか?

関数に文字数指定して,文字列として書かせたのを,evalして使ってるんですが
無駄なことしてるかもと思ったので。
0089名無しさん@お腹いっぱい。01/10/29 03:30ID:???
もっと具体的に説明きぼん
00908801/10/29 03:50ID:pi9OrPjF
>>89
普通に手で書くと,文字数増えるごとに書くのもどんどん増えていっちゃうので,
(aa..ZZ)とか(\w{3})みたいな書き方はできないかなぁと。

88の関数はこんなのです。
@arry = eval getArry(1);
sub getArry {
 my $nest = shift;
 my $word = shift || '';
 my $i = 0;
 my $ret = '';
 foreach (a,A) {
  my $word = $word.$_;
  if ($nest>0) {
   $ret .= getArry($nest-1, $word);
  } else {
   $i++;
   $ret .= "$word..";
   $ret .= 'z'x length $word;
   $ret .= ',';
  }
 }
 return $ret;
}
0091名無しさん@お腹いっぱい。01/10/29 07:15ID:???
それ異常の書き方は無いと思うなあ。
つーかむしろ(a..z)だけにして、文字列長投げるような関数に
した方が良いんじゃないの?
呼び出しのコストを嫌ってるのか・・・・
漏れはデカイ配列の方が嫌いだけどなあ
0092名無しさん@お腹いっぱい。01/10/29 07:19ID:???
あ、すまん、そうしてるんだね。
再帰しなくても良さそうだな、、
帰ったら書くわ
0093名無しさん@お腹いっぱい。01/10/29 17:18ID:???
>>91
>漏れはデカイ配列の方が嫌いだけどなあ
俺もおなじくです。2文字(aa〜ZZ)ぐらいならいいんですが、
4文字(aaaa〜ZZZZ)なんかはちょっと配列に入れるのがつらい。

用途にもよるけど、呼び出すごとに「次の文字列」を返す関数を
作って、STLのnext_permutationみたいな使い方をするのが
いいと思う。
0094名無しさん@お腹いっぱい。01/10/29 20:26ID:gd3uwUNc
あるファイルの行数を調べたいのですが、
一番メモリを使わずに調べる方法は何ですか?
0095名無しさん@お腹いっぱい。01/10/29 21:04ID:???
my宣言した変数は出来るだけ早くundefした方が良いのでしょうか?
0096名無しさん@お腹いっぱい。01/10/29 21:14ID:???
>>94
nバイトずつreadして"\n"の個数を数える。
0097名無しさん@お腹いっぱい。01/10/29 21:15ID:???
>>94
my ($lineNum,$fileName,$buf);
open (FH,"fileName");
while (1){
read(FH,$buf,1);
last if $buf eq '';
$lineNum++ if $buf eq "\n";
}
print "行数は$lineNumです\n";
0098名無しさん@お腹いっぱい。01/10/29 21:45ID:???
>>94
open(FH, $file) or die "Can't open $file";
my $count;
$count = $. while (<FH>);
close(FH);
0099名無しさん@お腹いっぱい。01/10/29 21:54ID:???
>>95
大量のデータを長期間無駄に保持するのは避けたいけど、
ほとんどの場合、あえて明示的にundefするまでもないと思う。
まあ具体的なコードを見ないと判断つかないっすね。
0100始めて数日なんですが01/10/29 22:08ID:???
検索したり本を見ても、書いてなかったり、さっぱり意味不明だったりと自分ではなかなか判断がつかないとき、「内では〜となっているので〜とした方がいい」って明解に断言してくれる人がいると役に立つんだけど、みなさんはどうしてるんですか?
0101Perl上級車01/10/29 22:11ID:???
>>100
首吊って氏ね。
0102名無しさん@お腹いっぱい。01/10/29 22:14ID:???
>>100
> 始めて数日なんですが
日本語を?
0103名無しさん@お腹いっぱい。01/10/29 22:21ID:WYkKLjrw
>>100
perldocの該当個所を4〜5回読み直し、それでも理解できなければ
いまは知る必要がないのだとあきらめて後回しにした。
すくなくとも他人の言葉には頼らなかった。
0104名無しさん@お腹いっぱい。01/10/29 22:21ID:???
>>100
とにかく、首をくくるのがいいと思われ
0105マジレス01/10/29 22:23ID:???
>>100
始めて数日の人がそんな壁にぶつかる訳がありません。
Googleで検索したりリンク辿ったりすれば、参考になるものが
見つかるはずです。
少なくとも初心者の内は検索などで十分です。
(分不相応な事をしなければ)

そして初心者を抜ければ殆ど自分で判断できるようになる筈です。
0106Perl上級者01/10/29 22:27ID:???
とにかく邪魔だから二度と出てこなくていいよ。
0107名無しさん@お腹いっぱい。01/10/29 22:28ID:???
>>106
お前も一々煽るな。邪魔臭い。
0108Perl上級者01/10/29 22:29ID:???
ハァ?ココは気持ち悪い馴れ合いスレですか(わら
0109名無しさん@お腹いっぱい。01/10/29 22:32ID:???
>>108
馴れ合いの逆は煽りかよ。馬鹿丸出し。
いいからとっとと失せろ。
0110 01/10/29 22:34ID:???
Perl上級者は無視の方向で。
0111名無しさん@お腹いっぱい。01/10/29 22:37ID:???
CGI.pmってどうなの?
0112名無しさん@お腹いっぱい。01/10/29 22:43ID:???
>>111
「どうなの?」って聞かれても何と答えれば良いのやら。
0113名無しさん@お腹いっぱい。 :01/10/29 22:59ID:???
つーかPerlの上級者って、、、なんかショボイなあ (゚ε゚)
0114Perl上級者01/10/29 23:09ID:???
・・・と、初心者以下の素人が言いました、とさ(大爆笑)
0115Perl上級者 01/10/29 23:12ID:???
これこの板の名無しにどうよ?
あとtinkopinpinとか  ゲラゲラ〜
0116名無しさん@お腹いっぱい。 01/10/29 23:18ID:???
shigeより馬鹿っぽい所が悲しいよな、(大爆笑)だって・・・・
この板の哀愁が漂ってくるね
もっと勉強しよ・・・
0117名無しさん@お腹いっぱい。01/10/30 01:03ID:???
未熟ながら、初心者スレッドと言う事でお許しください。

あるログインCGIを作っていて
ログイン(ID/Pass)→ メニューとメイン画面をフレームで表示
と言う処理を行っています。
このときメニューとメイン画面もログイン用のファイルと一緒にしているのですが、
別々の物に分けたほうが良いのでしょうか?

//サンプル
if{
 &ログインパスチェック
}elsif{
 &左フレーム(メニュー)表示
}else{
 &右フレーム(メイン画面)表示
}
#それぞれ引数を変更してやって判定

sub ログインパスチェック{
if(パスチェックが成功したら){
print <<EOM;
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=01 NAME="menu">
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=02 NAME="main">
EOM
}else{
print <<EOM;
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=01 NAME="menu">
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=03 NAME="main">
EOM
}

瞬間的に3度同じファイルを実行する事になり、そのたびにデータを読み出しているので心配です。
また、他のファイルに分けて処理した方が動作がスムーズになる、とも聞きました。
どうでしょうか。
足りない部分があれば随時補足させて頂きます。
根本的にこんなロジックにした方が良い、と言う意見もあれば是非お聞かせください。
0118名無しさん@お腹いっぱい。01/10/30 01:27ID:mgB2/g2W
>>117
この場合、認証をすべてlogin.cgiでまかなうのも、
login.cgi、frame.cgi、main.cgi、menu.cgi等に分割するのも、
さして変わりはないと思う。
どちらにしても認証後に3つのCGIがほぼ同時に起動するわけだし。

なにか改善策があるとすれば、
>根本的にこんなロジックにした方が良い、と言う意見
ここだろうけど、おれには考えつかない。
CGIで認証する限り、「1ページ表示するごとにパスワードファイルの読み書きが必要」と
いう問題は避けられないのでは。
0119名無しさん@お腹いっぱい。01/10/30 03:48ID:???
>>118
なるほど、貴重なご意見有難うございます。
やはり逐一パスワードファイルにアクセスしないといけないのは
宿命ですかね。
0120名無しさん@お腹いっぱい。01/10/30 09:32ID:???
>>117&119
どっちかってーとCGIだけどなんか質問ある?向きだけど・・・
とりあえず「セッション」とかって言葉を調べると幸せになれるかもしれません。。。えいめん。
012101/10/30 14:05ID:KnXoAd8A
cron でフルパス起動されるコマンドなんだけど
ライブラリの場所は 相対で ../lib にあります。
エレガントな指定方法を教えてください。
今は
{
my $base;
BEGIN{
$libPath = $0;
$libPath =~ s|/[^/]+$|/lib|;
}
use lib ($libPath);
}
0122名無しさん@お腹いっぱい。01/10/30 14:12ID:???
素直にフルパスで書くのが一番だと思うが。
0123名無しさん@お腹いっぱい。01/10/30 16:33ID:???
>>121
フルパス指定がいやならFindBinモジュールを利用。
012412101/10/30 17:03ID:???
>>123
ありがと(^−^)
まだまだ知らないモジュールがいっぱい...
精進せねば...
0125名無しさん@お腹いっぱい。01/10/30 17:04ID:HjkR1Pfb
>>121
cronで起動するときにchdirする方法を愛用してます。
スクリプトのほうで小細工する必要なし!
012612101/10/30 17:12ID:???
>>125
あと /etc/aliases から "| /foo/bar/hogehoge" でも起動されるやつも
あるんで FindBin でいくことにします

はっ /etc/aliases のやつも "| (cd /foo/bar ; ./hogehoge)" すると
いけるのかな?
0127名無しさん@お腹いっぱい。01/10/31 11:19ID:odi0QzL3
すいません、perl全くの初心者なんですが
Mac OS 9.02から、Mac OS 10.1にして勉強を始めようと思っています
しかし、Mac OS 10.1に入ってるperlは日本語関連でかなり問題がある、
というのを聞いて驚きました。
ビギナーではMac OS 10.1はやめておいた方がいいのでしょうか?
参考書みてもそもそも正常に動作しなかったら挫折しやすい、というか。
どのような問題があるかはgoogleなどで引っかけても上手くかからなかったので
わからないんですが、よろしければアドバイスお願いします。
0128名無しさん@お腹いっぱい。01/10/31 11:30ID:???
ここはマック使う人少ないみたいだよ。
マックのことはマック使ってる人に聞くのがよろし。

マックでプログラムやるなら
http://pc.2ch.net/test/read.cgi/mac/1003548817/
MACの開発ソフト
http://pc.2ch.net/test/read.cgi/tech/978844038/
0129名無しさん@お腹いっぱい。01/10/31 11:41ID:bNMt3mta
あの=。jcode.plとcgi-lib.plって再配布して
いいんですか?
0130名無しさん@お腹いっぱい。01/10/31 12:04ID:???
>>128
あ、ありがとうございます
0131あげてみる01/11/02 13:01ID:yAhXsts1
seekの説明にある、「行番号をバイトオフセットに変更するインデックス」を作成してくれるモジュールないっすかねえ
0132名無しさん@お腹いっぱい。01/11/02 19:40ID:+bAAQDJN
質問なんですが
ハッシュをサブルーティンに渡して、サブルーティンの中でも同じように
ハッシュとして参照したいのですが、どうもうまくいきません。
下のように書いたのですが、値が表示できません。
どのようにすればうまくいくか教えていただけないでしょうか?

my %jjj ;
$jjj{'aaa'} = "111";
$jjj{'bbb'} = "222";
$jjj{'ccc'} = "333";
&test( %jjj ) ;

sub test {
my $jjj_ref = @_ ;
print("#### $jjj_ref->{'aaa'}") ;
}
0133Ks01/11/02 20:11ID:???
掲示内容が不適格であったらごめんなさい。
httpヘッダで困っています。

・httpの拡張ヘッダって編集できるものなの?
・どうやって編集するの?
・拡張ヘッダの設定内容を見て処理をするって可能なの?どうやって
 するの?

誰か教えて頂けませんか?
もしくはわかるサイトを教えて頂けませんか?宜しくお願いします。
0134名無しさん@お腹いっぱい。 01/11/02 20:17ID:???
&test( \%jjj ) ;
sub test {
my $jjj_ref = $_[0] ;
print("#### "."$jjj_ref->{'aaa'}") ;
}
ハッシュの前に引数の受け取り方を調べよう :-)
0135名無しさん@お腹いっぱい。01/11/02 20:18ID:???
どうやってするのか分からないけど全て可能です。
詳しくはここ
http://www.w3.org/Protocols/rfc2616/rfc2616.html
0136名無しさん@お腹いっぱい。01/11/02 20:34ID:???
冷たいんだね
0137名無しさん@お腹いっぱい。01/11/02 20:37ID:???
プロトタイプって手もある
sub test(\%);

test(%jjj);

sub test(\%){
my $href = shift;
print $href->{aaa};
}
0138名無しさん@お腹いっぱい。01/11/02 20:41ID:ofsCZTnG
変数に例えば
$hoge ='aa,bbb,cc,ddd,nn,nn,yy,zzz';
のように格納されていた場合後ろから2つ目の「,」
の位置を調べたいのですがどうすれば良いのでしょうか?
お願いします。
0139名無しさん@お腹いっぱい。01/11/02 21:38ID:???
(length join ',,',(split /,/,reverse $test)[0,1])
0140名無しさん@お腹いっぱい。01/11/02 21:43ID:29kqQmn/
>139
レスありがとうございます。
早速使わせていただきます。
どうもでしたm(_ _)m
0141名無しさん@お腹いっぱい。01/11/02 21:46ID:???
rindexを2回使うという手も。
0142名無しさん@お腹いっぱい。01/11/02 21:49ID:29kqQmn/
>141
それはどういうものでしょうか?
POSを使うのですか?
014314101/11/02 22:01ID:/ySb/MGF
>142
文字を後ろ向きに検索して,見つかった位置を返す。
perldoc -f rindexあたりで説明見られると思う。
0144名無しさん@お腹いっぱい。01/11/02 22:03ID:29kqQmn/
試してみます。
親切にどうもありがとうございますです。
014513201/11/02 23:28ID:+bAAQDJN
>>134
>>137
ありがとうございます。勉強し直します。

&test( \%jjj ) ;こう書いてました。
根本的に勉強不足だったようです。
0146cgiビギナー01/11/03 01:03ID:???
掲示板を作っています。ベテランには痛い質問かもしれませんが
今ealisという掲示板で奮闘しています。
関連サイト→http://kano.vis.ne.jp/erial/
そこの設置開設のところでparlパスを書き込むのですが
最初の行に#!/usr/local/bin/perlと書き込めばよろしいのでしょうか?
まだ質問がありますがひとまずお願いいたします。
0147名無しさん@お腹いっぱい。01/11/03 01:16ID:???
>>146
何を言いたいのか全く解りません。
普通、CGIを設置する上で"Perlのパス"といった場合は
#!/usr/local/bin/perl
などの1行を指す場合は多いです。
この1行はサーバ上のPerlというプログラムの位置
(WinでいうならC:\Program Files\perl\perl.exeという感じ)
を表します。
そのため、サーバによってインストールされた場所も異なり、
サーバごとに記述するべき内容異なります。

そもそも、ここに書き込む前にしかるべきサイトで
CGIについて勉強してくるべきだと思われます。
0148名無しさん@お腹いっぱい。01/11/03 01:16ID:???
>146
KENT氏のページへ行かれたほうがよろしいかと思います。
http://www.kent-web.com/

氏のサイトは,初心者にも優しいと定評があります。
014914801/11/03 01:19ID:???
誤字
優しい->易しい
0150cgiビギナー01/11/03 01:18ID:???
>>147
ご忠告感謝いたします。>>148氏が書き込まれたサイトにて学んできます。
0151名無しさん@お腹いっぱい。01/11/03 02:42ID:cMX/dhh7
他のサイトからのアクセスを制限したいのですが、
(チャットのよそからの発言を禁止するような感じです。)
referer調べる以外で良い方法は無いものでしょうか?
0152名無しさん@お腹いっぱい。01/11/03 02:55ID:???
>>151
IDを発行するとか。
0153名無しさん@お腹いっぱい。 01/11/03 13:58ID:???
再帰の深さってどれ位まで許されてるんでしょうか?
処理系依存ですかね
スタック食い尽くす前にヲーニングくれたりしないかな・・・
0154名無しさん@お腹いっぱい。01/11/03 15:58ID:cu67OhWQ
$_
ってなんですか?
厨房でスイマセン…。
0155名無しさん@お腹いっぱい。01/11/03 16:04ID:???
@_ = ($_[0], $_[1], $_[2]);
0156名無しさん@お腹いっぱい。 01/11/03 16:14ID:???
ハァ(゜Д゜)?
0157cgiビギナー=14601/11/03 16:31ID:???
何とか掲示板が設置いたしましたがその掲示板で書き込みをしたとき
あとページエラーが出てしまいます。
原因は$INI{'locate'} = 'http://www.hogefoo.ne.jp/~bar/cgi-bin/ealis/';
という所で「eliasをインストールするDIRのhttpパスを書く」という単語の意味がわからず
間違っている書き込みをしていると思います。
お手数なのですが改善できる術は無いでしょうか?
関連サイト→http://kano.vis.ne.jp/erial/ealis/setup.html
そのealisを置いている場所は
ttp;//トップ/cgi-bin/test
のテスト言うディレクトリに入れてあります。よろしくお願いいたします。
0158名無しさん@お腹いっぱい。 01/11/03 16:53ID:???
eliasをインストールするDIRのhttpパスを書く
  ↓
eliasをインストールするディレクトリのアドレスを書く
  ↓
分からない単語は検索しろ
ディレクトリ、アドレス、パス、http://www.google.com/
0159cgiビギナー=14601/11/03 17:02ID:???
>>158
ありがとうございます。
0160名無しさん@お腹いっぱい。01/11/03 17:37ID:vwyWsLPj
$_ は省略時に暗黙の内に使われる変数。
たとえば、
while(<>) { print }

while($_ = <>) { print $_ }
と等価。
length の引数を省略したときは length $_ を返す、とかいろいろあるので、「プログラミングPerl改訂版」を読みましょう。
(perldoc でもよいが)
0161名無しさん@お腹いっぱい。01/11/03 18:59ID:???
$_を介すると、ほんのちょっとだけ処理が早くなる傾向がある(ようだ)。
常時、積極的に使用するほどメリットがあるとは思わないが、
何万回といったループの中で使うと結構でかい差になるかもしれない。
0162名無しさん@お腹いっぱい。01/11/03 19:12ID:???
>>157 初心者は使うなって書いてあるやん・・・
0163_gunzip@鬱だ詩嚢01/11/03 20:33ID:???
>>153
my()で確保しているpadlist内の変数の数/大きさにも依りますから
一概に何回、とは言いきれません。

ただ、-w オプションを付ける、ないしwarningsプラグマで
"recursion"カテゴリの警告を行うよう設定していれば、
サブルーチンの100回以上の再帰呼び出しがなされた時点で警告が出ます。
(中止するわけではないので、あまり意味はありませんが)

各CVは、おのおの自分自身の再帰呼び出し回数をxcv_depth
メンバに保持していますから、内部APIのCvDEPTHマクロを利用して、
規定回数以上になれば強制的にreturnさせるコードを挿入する
ぐらいしか対策がないような気がします。

I32 get_depth(SV *sv)
{
    if(SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV)
        return CvDEPTH(SvRV(sv));
    else
        return -1;
}
0164_gunzip@鬱だ詩嚢01/11/03 20:43ID:???
っていうか、数えた方が早いね。
0165名無しさん@お腹いっぱい。 01/11/03 23:48ID:???
>>159 cgiビギナー=146
ここは1に書いてあるように「perlのコーディングで困ってる人のスレ」
だから、こっちで聞く方が良いと思いますよ。

CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/l50
0166名無しさん@お腹いっぱい。01/11/04 00:00ID:oP9d6xQM
>>151
手続きなど無しで制限したいのですがやはり無理でしょうか?
お願いします。
0167名無しさん@お腹いっぱい。01/11/04 00:06ID:???
>151 自鯖なら .htaccess。
0168名無しさん@お腹いっぱい。01/11/04 00:22ID:oP9d6xQM
>167
.haccessで制限できますか?
↑関連スレで質問した方が良いかな?
0169名無しさん@お腹いっぱい。01/11/04 01:34ID:???
>>168
167は.htaccessでユーザ認証しなさいってことじゃないすか。
いちおう.htaccessのRewriteRule/RewriteCondを使うと
リファラを見て外部からのアクセスを拒絶することはできるけど、
151でリファラ以外の方法って書いてあるしね。
0170名無しさん@お腹いっぱい。01/11/04 03:26ID:h2smYChV
バイナリコードを含む文字列を特定の長さに切りたいのですが
どうすれば良いでしょうか?

$str='a壱弐参四五'; # length:11
$str=~s/^(.{10}).*/$1/;

例えばこんな感じで長さを10にする事はできるのですが、
バイナリデータをぶった切ってしまってバイナリの片割れが出てきてしまいます。
切る所がバイナリデータだった場合は回避して、この場合は長さ9にしたいです。
バイナリデータの判別方がわかれば何とかできると思いますがわかりません。
どうすれば実現できるでしょうか?
0171cgiビギナー=14601/11/04 03:44ID:???
>>165
無事に掲示板を設置することが出来ました。
どうやらDIR=ディレクトリのことらしいでここら辺がわからなかったのですよ。
色々お手数をおかけしました。今度β版と言う難しいのに挑戦しようと思っているので
そちらの方に質問をさせていただくかもしれません。
とりあえず今はトホホのサイトにて勉強しながらやっていきます。
0172名無しさん@お腹いっぱい。01/11/04 04:04ID:cP9onYMm
>>170
いろいろあると思うが、おれはこうしてる。
(1)最初に10バイトで切る。
(2)先頭から「正しいバイナリ」が続く部分だけ残して、その後ろを削除。

たとえば「Shift_JISまたはASCII」を切り出す場合は、
$str = substr($str, 0, 10);
$str =~ s/^((?:[\x81-\x9F\xE0-\xEC][\x40-\x7E\x80-\xFC]|[\xA1-\xDF]|[\x20-\x7E])*).*/$1/;
0173名無しさん@お腹いっぱい。01/11/04 04:18ID:h2smYChV
>>172
正しいバイナリというのがそう言う感じで記述できるんですね。
扱おうとしてるのはSjisだし、なんなら文字コード変換もできるので、
そのまま使えそうです。
漠然とわかったので、自分の中でちょっと煮詰めてみます。
ありがとうございましたー。
0174名無しさん@お腹いっぱい。01/11/04 04:37ID:???
>>173
>正しいバイナリというのがそう言う感じで記述できるんですね。
いや「Shift_JISまたはASCII」というのは、
正規表現であらわせる素直なデータだからね。

「正しいバイナリ」の定義によっては、1バイトずつ切り出して
逐一判定しなければならない場合もたぶんあるでしょう。
いつでも正規表現が使えるとは思わないほうがいい。
017517301/11/04 14:35ID:???
>>174
メタキャラを含んだ文字列の正規表現でエラーというのは
既に実感を伴って経験済みです。

ともあれ、無事に実現できました。ありがとうございます。
しばらく様子を見てみて、エラーが生じたりするようならまた考えてみます。
0176153 01/11/04 17:36ID:???
_gunzipたんアリガトー(・∀・)&& お久しぶり
ちょっと聞き方がタコでしたね、perlマンセーな処理が有ったんですけど
家では問題無かったのに、会社のプアマシーンだとあぼーんしたんで
少し気になったんです、流石にそこまでは面倒見てくれないですか。。。
取り合えず50回位潜ったら、一旦全部抜けて、
続きからやり直し、って言う風にしてみましたです。
0177名無しさん@お腹いっぱい。01/11/04 17:57ID:vlyHsBRz
ちょっとお聞きしたいのですが
いま、ちょっとはまってしまっています。
状態は、500文字から1000文字くらいの文字列をいくつか作って
print文で表示させたいのですが、文字列を3個作って、3カ所print文を
文字列作成後に表示させようとすると、最後のprint文の途中まで表示して
そのまま待ち状態に、一回プログラム止めて今度は5個作って表示させると
さっき止まった3個目はきちんと表示されて、今度は5個目の途中で表示が
止まってしまいます。何回か実行させてみても同じところで表示が止まって
しまいます。どうも長い文字列のprint文(いくつかある時の)最後のprint
文で起こるようなのですが
出力先はブラウザです。print文の後には文字列を使う処理がありますが
そこまで進めません。print文で止まってしまって
どなたか同じような状態になったことある方いらっしゃられませんか?
どのようにしたら正常に表示できるのでしょうか?
わかりにくい説明ですみませんが、どうぞよろしくお願いします
0178名無しさん@お腹いっぱい。01/11/04 18:05ID:???
$| = 1;
017901/11/04 18:49ID:iWvZka32
>>170
Jcode.pm に jfold ってのがあるよ
018017701/11/04 20:39ID:vlyHsBRz
もう一つお聞きしたいのですが
perlで、C言語とかでいうデバッガみたいなものは、ないのでしょうか?
上で書いたような状態でもう2,3日苦しんでいる状態で
できれば、1行ずつとかで、実行して原因がわかればと考えたのですが
わかる方、どうかご回答よろしくお願いします
0181名無しさん@お腹いっぱい。01/11/04 20:51ID:6q0Jo2MQ
当方,C言語のプログラマです.
ある特定の定義を一気にコメント化したりするのに,
sed等のコマンドを使って,シェルスクリプトを書いてました.
こんどperl を使ってこういう処理を使用と思ってるのですが,
あなたの使っているいいソースありませんか?(笑)
■ このスレッドは過去ログ倉庫に格納されています