Perlは結構使えるっぽいけどどうよ?

このエントリーをはてなブックマークに追加
505デフォルトの名無しさん
あの〜perlが計算間違えるんだけど・・・。
あきらかに違ってるんだけど。プログラムが計算間違える事ってあるの?
$g=25425425124%241;
print "$g\n";
で0を返してくる
506デフォルトの名無しさん:01/10/24 04:30
$g=25425425124%241;
print "$g\n";
__END__
75

環境は?
507デフォルトの名無しさん:01/10/24 04:31
Apache@win98です。
mod_perl ?
つーか単に変数名を間違えているだけに 1000 ラリー。
509デフォルトの名無しさん:01/10/24 04:36
別のサーバーにおいたら14って返ってきた・・・意味不明・・
510デフォルトの名無しさん:01/10/24 04:38
#!/usr/local/bin/perl
print "content-type: text/html\n\n";

$g=25425425124%241;
print "$g\n";

単にこれだけしか書いてません。
75が正解
問題を簡単にしましょう。 $g= 5 % 3; にしてみたらどうなりますか?
513無限多倍長整数演算パッケージ:01/10/24 10:55
これはあれだ。サイズの問題です。
25425425124 がintの大きさを越えているんだと思います。
単純な四則演算ではこんな問題は起こさないのにね…。

use Math::BigInt;
$g = Math::BigInt->new(25425425124) % 241;
print "$g\n";

ってやってみて下さい。
514バグか仕様か?:01/10/24 11:17
$h = 25425425124 - 241 * int 25425425124 / 241;
print "$h\n";

だと、問題なく正解を出しますね。 剰余演算 に固有の問題のようです。
環境を教えてください。
516514:01/10/24 12:26
私は505 ではないのですが、OSはlinux(Vine2.0)で、
perl-5.00503_jp-5
glibc-2.1.2-17vl2
です。
sizeof(int)は4 sizeof(long int)も4です。
517デフォルトの名無しさん:01/10/24 12:55
>>516
Perl5.6.1のperldeltaに情報見つけ。"Numeric conversions"のとこ。
やはりバグだったようです。
518デフォルトの名無しさん:01/10/24 15:26
version 5.004_04
version 5.005_03
あたりは 14が帰ってくるね。
>>517
が見つけた通り
version 5.6.0, 5.6.1では正しく75

っちゅーかstableなのを使えって気もする。
505で書き込んだ者です。

プログラムの間違いではなかったのですね。
(ってこんな短くて間違いようがないですが)

アドバイスされたように書き換えてみます!
520   :01/10/25 00:26
my $name = 'tinko pinpin';
1)
if($name eq 'tinko pinpin') {
 cnt++;
}
--------と
2)
cnt++ if($name eq 'tinko pinpin');

をループさせて速度を測ったら
1)21 wallclock secs (20.95 usr + 0.01 sys = 20.96 CPU)
2)10 wallclock secs (10.23 usr + 0.00 sys = 10.23 CPU)
くらい違いますが、内部ではどのような処理の違いがあるんですか?
2のほうが行数が少ないから
$name eq 'tinko pinpin' and ++$cnt
ならもっとよい。
程度低い話ですな(大爆笑)
言語仕様の綺麗さと綺麗にプログラムを組むことって違うような。。
んで自分のアホさ加減に気付いてPerl初心者板かいな (嘲笑
ちょっと態度デカくなってんのがイイ  高卒専用板で聞いて下さい(プ
http://ebi.2ch.net/test/read.cgi/php/1003900311/17
↑なんだお前?気持ち悪っ!
527デフォルトの名無しさん:01/10/25 16:23
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエモネー
  (    )  \_____
  | | |
  (__)_)
528デフォルトの名無しさん:01/10/26 08:04
初心者な質問ですみません。
djgppのperl5を使っているのですが
bashの環境変数が展開されなくて少し困っています。
sh スクリプトは問題なく環境変数を展開するのですが…。
perlには何か特別な設定が必要なのでしょうか?
529デフォルトの名無しさん:01/10/29 17:10
Windows2000+ActivePerlでマルチスレッドプログラミングをするとき、
Threadモジュールは未完成なので、Win32::APIを使ってやろうかと
思うのですが、どう思いますか?
識者の意見を聞かせて下さい。
530デフォルトの名無しさん:01/11/02 14:55
hage
531デフォルトの名無しさん:01/11/02 16:28
PerlのGDモジュールはもうgifをサポートしないのでしょうか?
もうgifって無断で使っても金請求されないようなことを聞いたのですが。
532デフォルトの名無しさん:01/11/02 18:13
>>531
>もうgifって無断で使っても金請求されないようなことを聞いたのですが
ほんと?嬉。情報元おしえてー。

GDライブラリ(libgd等)がまたGIFサポートするようになれば
とうぜんGD.pmも追随すると思います。
533531:01/11/03 00:34
>>532
>ほんと?嬉。情報元おしえてー。
ソースはないです。勤務先で誰だかに聞いた話だと思いました。(かなり曖昧)
内容的には、gifの圧縮形式の特許を取っている会社はもう特許の期限(?)が
切れるとかで、今のうちに搾り取って置くんだいみたいな感じでした。
それが去年の暮れくらいの話でした。

>GDライブラリ(libgd等)がまたGIFサポートするようになれば
>とうぜんGD.pmも追随すると思います。
なるほど、GDライブラリ自体はC言語か何かで書かれているんでしたっけ。
gifはやっぱりpngよりも広く出回っているし、サポートしてほしい所です。
>>533まだだ。あと数年ある。
GIF はこのまま消えてほしいんだけどね。
536531:01/11/03 16:19
>>534
あいやーやっぱガセネタでしたか。
537デフォルトの名無しさん:01/11/20 12:34
538デフォルトの名無しさん:01/11/21 20:02
Filter::decrypt で復号してから実行するようなperlスクリプトを
見たのですが、暗号化はどうやってやるのでしょうか?おしえてください。
539デフォルトの名無しさん:01/11/21 20:06
gif特許は2003〜2004年までだったような
540デフォルトの名無しさん:01/11/22 02:21
だね
pngはその役目を終えた・・・。
ってなるのでしょうかぁ。
PNGを脅かす (さない?) Appleの特許
http://slashdot.jp/article.pl?sid=01/11/20/202253&mode=thread
543デフォルトの名無しさん:01/11/26 02:11
Perl最強!
544デフォルトの名無しさん:01/11/26 02:15
>>539
それって、日本ででもですかね?
特許の期限って、国ごとに違いますよね。
よくは分からないけど
特許は延ばせたような・・・・
546デフォルトの名無しさん:01/11/26 16:43
>>1
ケプラーの方程式って解けるの?
547デフォルトの名無しさん:01/11/27 18:31
いまさらながら質問がありますあげ。
548デフォルトの名無しさん:01/11/27 18:36
socketの最大受信バイト数を設定したいんですが、
setsockopt関数への引数の与え方がわかりません。
Cでいうところの
int size= MAXSIZE
setsockopt(XX,XX,XX, *size, sizeof(size));

をperlでやりたいんですが、最後の第4、5引数の与え方がわからんです。
local $size=$MAXSIZE;
setsockopt(XX,XX,XX,\$size, 4);
とかやると引数の数が合わん、とおこられます。
packしようにもどうpackすればいいのか・・・
sprintfの仕様を勝手に変えるなよ(T_T)>Larry
550デフォルトの名無しさん:01/11/28 03:10
>>549
どうゆうことですか?
>>550

ああ、勘違いするような書き方してスマソ
Cと同じ関数名を付けながら仕様を勝手に変えるなと書いたの。
>>548
my $size;
$size = getsockopt(S, SOL_SOCKET, SO_RCVBUF) or die "getsockopt: $!";
print "< SO_RCVBUF = ", unpack('i', $size), "\n";
setsockopt(S, SOL_SOCKET, SO_RCVBUF, 1024) or die "setsockopt: $!";
$size = getsockopt(S, SOL_SOCKET, SO_RCVBUF) or die "getsockopt: $!";
print "> SO_RCVBUF = ", unpack('i', $size), "\n";

C/C++でポインタとそれが指している領域の大きさをペアで渡す/返すような
APIの場合、PerlではPerl自身が変数の大きさも知っているため、領域の大き
さをやり取りする必要がない。また、API呼び出しでのポインタはPerlがラッ
プするため、変数そのものでOK。リファレンス渡すAPIってある?

あと、言うまでもないことだけど、
> setsockopt(XX,XX,XX,\$size, 4);
> とかやると引数の数が合わん、とおこられます。
という程度の間違いは、perldoc -f setsockoptすれば気付かないか?
553548:01/11/30 16:24
>>552

ありがとです>詳しい552さん

>という程度の間違いは、perldoc -f setsockoptすれば気付かないか?

すみません。Internal Server Errorと errlogだけを頼りに
デバッグしてました・・・
554デフォルトの名無しさん:01/12/04 12:46
突然、perlを練習するはめになりました。
でもMACだし、プログラムは超初心者だし、
どこから始めればいいのやら。
555デフォルトの名無しさん:01/12/04 19:44
WindowsでPerl使いたいんだけど、
どれダウンロードしてくればいい?
JPerlってどうなの?
556デフォルトの名無しさん:01/12/04 19:54
557555:01/12/04 19:55
>>556
ありがと
558マジレス:01/12/05 23:13
>>554,555
もしこれから就職する学生さんや、新人さんだとしたら
中古のパソコン買って、LinuxでもなんでもいれてそれからPerl
やったほうがいいと思うです。

Perl-> tcsh -> csh -> awk, sed -> bsh
みたいなながれで。(逆行してるか・・・)

今職場でしみじみ感じるのが、やっぱりUNIXで、ダカダカダカッと
コマンド打ち込んで仕事してる人の方が数倍使えるってことです。
tarってなに?とか、viが使えないのでこのサーバには触れません、
とかいう人に囲まれてると、そう思いますです。
559デフォルトの名無しさん:01/12/05 23:23
これからはviの時代なのか
viやらなきゃ..
>>558
ム板で何言ってんだ?
コマンドなんて知ってて当たり前。
言語覚える以前の話だろ。
HSPもやっといた方がいいのか   ドキドキ
>559 edの天下はすぐそこだ!
563デフォルトの名無しさん:01/12/06 01:39
perl初心者だが、
サブルーチンに配列渡したいんだけど、
どうすんの?
下のソースじゃだめっだた。
まじれすでよとすく。


#!/usr/bin/perl

&main ;
exit ;


sub main
{
local ( $array ) ;

$array[ 0 ] = "aaa" ;
$array[ 1 ] = "bbb" ;
$array[ 2 ] = "ccc" ;

arrayTest( $array ) ;
}

sub arrayTest
{
local ( $localArray ) = @_ ;

print "0 = $localArray[ 0 ]\n" ;
print "1 = $localArray[ 1 ]\n" ;
print "2 = $localArray[ 2 ]\n" ;
}
グローバルにすればよひよ 
>>563
My current enviroment doesn't allow me to write in Japanese :-(
Sorry for writing in English. m(_ _)m
But hope this helps.

----------------------------------------------------------------------
#!/usr/bin/perl -w

sub main
{
my @array = ('aaa', 'bbb', 'ccc');
print "main: \$array[$_] = $array[$_]\n" for $[ .. $#array;
print "\n"; test1(\@array); # giving the reference of @array.
print "\n"; test2(\@array); # ditto
}

sub test1
{
;# Here is an example of the type-glob to create an alias of the
;# array passed to this subroutine. Note that the variable
;# 'array' must be defined by using "local," not "my."
local *array = shift;
print "test1: \$array[$_] = $array[$_]\n" for $[ .. $#array;
print "test1: \@array = (@array)\n";
print "test1: \@array[0 .. 2] = (@array[0 .. 2])\n";
}

sub test2
{
;# Also, it's all right to set $array to $_[0] then derefer it as
;# @$array for the whole of it or @{$array}[...] for any slices.
my $array = shift;
print "test2: \$array->[$_] = $array->[$_]\n" for $[ .. $#$array;
print "test2: \@\$array = (@$array)\n";
print "test2: \@{\$array}[0 .. 2] = (@{$array}[0 .. 2])\n";
}

main();
567 ◆KAIN40XE :01/12/06 08:34
>>563
#!/usr/bin/perl

&main ;
exit ;

sub main {
my @array;
$array[0] = "aaa" ;
$array[1] = "bbb" ;
$array[2] = "ccc" ;
&arrayTest(@array);
}

sub arrayTest{
my @localArray=@_ ;
print "0 = $localArray[0]\n" ;
print "1 = $localArray[1]\n" ;
print "2 = $localArray[2]\n" ;
}


そもそもスカラーと配列の書き方が..........
local ( $array ) ; でスカラーをローカル定義して
arrayTest( $array ) ; に渡したときの$arrayの中身は空です。
$array と @array は違います。
568デフォルトの名無しさん:01/12/06 14:52
プログラム板のPerl使いの皆様。
WebProg板にて1chスクリプト改造が行われています。
是非ご参加を。

1chスクリプト解析$改造スレッド
http://pc.2ch.net/test/read.cgi/php/1007607631/
569558:01/12/06 20:08
>>560
そっか。愚痴る板を間違えたか。失礼。
570デフォルトの名無しさん:01/12/08 11:45
ファイルのN行目の削除ってどうすりゃいいの?
1行ずつ読みながら書き込んで、カウンタインクリメントして、
それがNならスキップする、以外の手段無い?
>>570
その方法が一番シンプルでないかい?
カウンタには$.をそのまま使える。

$. == $n || print while <>;

カウンタはclose文でリセットできるよ(←perldoc -f eof参照)。
>>571
むぅ…そうなのか。サンクス。
一発で行くような関数があれば楽だなぁと思ったが。
573571:01/12/08 18:12
>>572
systemを使ってよければこんなのでもできる。一応1行(わら
system(qq[perl -i~ -ne "\$.==$n or print" "$filename"]);

# Windowsだとshellの関係で動かないかも?

$^Iをいたずらするという手は危険すぎるかな。
{
local ($^I) = ''; # バックアップを残したければ'.bak'とか'~'とか……
local (@ARGV) = ($filename);
$. == $n || print while <>;
}
うまくいかんかった。local(*ARGVOUT, *ARGV)とか入れてみたんだが。
574デフォルトの名無しさん:01/12/08 18:40
>>573
無理にやろうとするとよけいに傷が拡がる気配がするので、
素人はループしてなさい、ってことですね(藁
>>572
UNIX 系列(Windows含む)の OS ファイルは
何らの構造も持たない単なるデータの列だからね。
(昔の汎用機はレコード構造を持ったファイルだとかあったらしい。
情報処理の試験くらいでしか見ないが。)
列なので頭から n バイト目という指定はできるけど、
改行がどこにあるのかは読んでみないと分からない。
s/OS ファイル/OS のファイル/
577デフォルトの名無しさん:01/12/09 14:27
>>574
他に方法があるなら理論だけでも聞きたい。
578571:01/12/09 17:47
>>577
行数の上限が1000行とか決まっているなら、
slurpしてspliceしてprintすればいいかも。
File::Slurp使うと吉。

# slurp: ファイル全体を一気に配列に読み込むこと。@lines = <>;
全部1つの変数にいれて、
$line=(split(/\n/,$file))[3]; #4行目が入る
とかどうでしょう。
580デフォルトの名無しさん:01/12/16 01:42
age
581デフォルトの名無しさん:01/12/20 14:33
>>563
サブルーチンに配列渡すときはリファレンスにすりゃいいんじゃない?
それだとマズイ?
582名無しさん@Emacs:01/12/21 17:50
perl を勉強したいんですが、cygwin の perl と Active Perl ってどっちも
同じですか?こっちにしとけ(゚Д゚)ゴルァ っていうのあったら教えてください。
583デフォルトの名無しさん:01/12/21 18:01
>>582

勉強程度ならどちらでもいい。
本格的にやりたいなら、そもそもWindowsなんて使うな。
584デフォルトの名無しさん:01/12/21 18:04
じつはWinよりMacPerlのほうが使い勝手がよかったりする。
スレッドもシグナルもないけど。
>>582
どっちでもほとんど同じスクリプトが使えるからいいんじゃないの?
>585
文字コードのこと考えるのなら ActivePerl とか聞いたような。
587デフォルトの名無しさん:01/12/25 02:44
すいません、WebProgの初心者スレからです。
子プロセスの同時起動数を親プロセスで制限しながら、
子プロセスで処理をしたいと思うのですが、中々上手くいかなのです。

1,
Perlpcによると '-' からのパイプをオープンしてプロセス間通信をしながら
親側で4引き数のSelectを使って、子プロセスからの入力を待つ。
という感じで可能かと思うのですが、これは正しく無いでしょうか。
2,
何となく自分で考えたのが下記の方法なのですが(これで行けそうな感じです)、
(子プロセスの処理開始時にダミーのディレクトリを作成、終了時に削除
を行って、親プロセスでその数を数えて管理しています)
何故か、70回位ループするとsleepの戻り値が0になってしまいその後は
sleepが効かなくなってしまいます。

どなたかご指摘ねがいます。
588デフォルトの名無しさん:01/12/25 02:47
コードです、Perl5.6 on Cygwin で100%再現します、他の環境はいまからテスト
しようと思います。

$| = 1;
opendir (DIR,"./lock/");
while (1){
  $j++;
  $pid = fork();
  if ($pid != 0) {# 親です
    while (1){
      seekdir DIR,0;
      @dir = readdir DIR;
      if (@dir > 10){
        print "子の数が上限値です、3秒待ちます\n";
        if (sleep(3) != 3){
           print "sleep に失敗しました\n"
        }
      } else {
        last;
      }
    }
  } elsif ($pid == 0) {# 子です
    $time = int(rand(10));
    mkdir ("./lock/$j",0666);
    print "これは$j個めの子プロセスです、$time秒の処理をします\n";
    sleep ($time);
    rmdir ("./lock/$j");
    exit (0);
  }
}
closedir DIR;
>>588
> コードです、Perl5.6 on Cygwin で100%再現します、他の環境はいまからテスト
> しようと思います。
linuxじゃまったく問題なさそうだが。
>>587
> (子プロセスの処理開始時にダミーのディレクトリを作成、終了時に削除
> を行って、親プロセスでその数を数えて管理しています)
なんでpidを直接配列で管理しないの?
591588:01/12/25 03:36
皆さん有難う御座います。
>589
本当ですか!、とFreeBSDでもOKでした。ActivePerlだとディレクトリが
キャッシュされるのか、MAXのまま無限ループです (泣
こういった方法は余りよくないのだろうか・・・・
>590
えと、続けて子プロセスを起こしたいからなのですが・・・
正直、良く分かっていないです。
waitを使うと完全waitになってしまって並列処理にならなくて、、、
SIG{PIPE}やSIG{CHILD}もちょっと違うようですし、、、
同時実行(10プロセス)で2000回程度の処理がしたいのです。

linuxならOKと言う事で良いのかなぁ・・
有難う御座います、もう一回読み直してみます => perlpc
592589,590:01/12/25 04:20
>>591
これでどうよ。

$| = 1;
%children = ();
$SIG{CHLD} = sub {
 $p = wait;
 delete $children{$p};
};
while (1) {
 while (scalar(%children) >= 10) {
  print "子の数が上限値です\n";
  sleep;
 }
 $children{$pid = fork()} = 1;
 $j++;
 if (!$pid) {
  $time = int(rand(10));
  print "これは$j個めの子プロセスです、$time秒の処理をします\n";
  sleep($time);
  exit(0);
 }
}
593(* ^ - ^ *)AGE!!:01/12/25 14:54
うわぁ、出来ました先生!>>592様有難う御座います 。

シグナルはこうやって使うんですね、デストラクタみたいと言うか・・・
面白いです。OSが良く分かって無いので、プロセスやシグナルの事が載った本を
読もうと思います。
今回は、失敗してプロセステーブルが溢れたり、ファイルに書き出しながらループ
してしまってファイルシステムが壊れたりと半鳴きだったのです。
上手く行って嬉しいので、次はプロセス間通信に挑戦します。
有難う御座いました && 良いお年を >>592さん
594ばぶ:01/12/30 02:39
こんにちはー。経営板からきた初心者というか全く無知です。自分で旅行サイトつくってるんですけど、
フォームデコードがうまくいきません。チェックボックスで複数選択して目的エリアと希望商品を複数選択して
入力するって作業なんですけど。

sub form_decord {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else { $buffer = $ENV{'QUERY_STRING'}; }

#--フォームデータを分解--#
@parameters = split(/&/,$buffer);
foreach $element (@parameters) {
($parameter, $value) = split(/=/, $element);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# SJISコード変換
&jcode'convert(*value,'sjis');

#--正規表現--#
$value =~ s/,/./g;

#--削除データがあれば配列に追加--#
if ($parameter eq 'delno') { push(@DEL, $value); }

#--目的エリアデータを変数に追加(スペース区切り)--#
if ($parameter eq 'street') { $street .= "$value "; }

#--希望商品データを変数に追加(スペース区切り)--#
if ($parameter eq 'hoop') { $hoop .= "$value "; }

$in{$parameter} = $value;
}

$page = $in{'page'};

これでだめだったんですが、なにか間違ってますでしょうか?
よろしくお願いします。
hoopじゃなくてhopeじゃないのか、というのはおいとくとして、
なにがどうだめだったのか、全然分からん。
たぶん、質問の仕方が一番間違ってる。
596デフォルトの名無しさん:01/12/30 03:30
> #--正規表現--#
> $value =~ s/,/./g;

このコメントが微笑ましいと思った
597ばぶ:01/12/30 04:23
すいません。足りませんでした。複数選択すると、最後に選択したものしかデータに反映されてこないんです。
例えば、目的エリア関東、九州と選択して掲示板に登録したとすると、九州だけしか登録されてないのです。
どうしてもわかりません。お願いします。
フォームの内容を欠け
defineな変数をどんどん上書きしてるんだと思うが
599596:01/12/30 04:31
目的のエリアの値を取得するときってどうしてる?

$in{'street'} で取得したらきっと、>>597に書いてある風な感じになると思うな。
代わりに$streetで取得したらうまくいくような行かないような。

なんか外してそうだが。
600596:01/12/30 04:33
ちなみに、おいらはcgiは書かんから、599で書いたことはチョット適当。


     | ̄\     \          (´´
     |   |: ̄ ̄ ̄ ̄:|       (´⌒(´
     |   |:      .:| ≡≡≡(´⌒;;;≡≡≡
     |   |:      .:|≡≡(´⌒(´⌒;;
              (´⌒(´⌒;;
           ズザーーーーーッ


   _____
 /:\.____\
 |: ̄\ (*゚ー゚)\  <600 GET!
 |:   |: ̄U U ̄:|


        バタン !!
 _______
 | ̄\     \
 |   |: ̄ ̄ ̄ ̄:|
 |   |:      .:|
 |   |:      .:|
601ばぶ:01/12/30 04:39
フォームの内容はこんな感じです。
<tr><td nowrap align="right" valign="top">登録エリア/</td>
<td nowrap><input type="checkbox" name="street" value="北海道">北海道
<input type="checkbox" name="street" value="東北">東北
<input type="checkbox" name="street" value="関東">関東 <br>
<input type="checkbox" name="street" value="信越">信越
<input type="checkbox" name="street" value="北陸">北陸
<input type="checkbox" name="street" value="東海">東海 <br>
<input type="checkbox" name="street" value="近畿">近畿
<input type="checkbox" name="street" value="中国">中国
<input type="checkbox" name="street" value="四国">四国 <br>
<input type="checkbox" name="street" value="九州">九州
<input type="checkbox" name="street" value="沖縄">沖縄 <br>
<input type="checkbox" name="street" value="東アジア">東アジア
<input type="checkbox" name="street" value="東南アジア">東南アジア
<input type="checkbox" name="street" value="中央アジア">中央アジア <br>
<input type="checkbox" name="street" value="中東">中東
<input type="checkbox" name="street" value="アフリカ">アフリカ
<input type="checkbox" name="street" value="西ヨーロッパ">西ヨーロッパ <br>
<input type="checkbox" name="street" value="東ヨーロッパ">東ヨーロッパ
<input type="checkbox" name="street" value="北米">北米
<input type="checkbox" name="street" value="太平洋">太平洋 <br>
<input type="checkbox" name="street" value="オセアニア">オセアニア
<input type="checkbox" name="street" value="その他の地域">その他の地域 </td>
</tr>

<tr><td nowrap align="right" valign="top">おもな販売商品/</td>
<td nowrap>
<input type="checkbox" name="hoop" value="国内宿泊">国内宿泊
<input type="checkbox" name="hoop" value="海外宿泊">海外宿泊 <br>
<input type="checkbox" name="hoop" value="国内航空券">国内航空券
<input type="checkbox" name="hoop" value="海外航空券">海外航空券 <br>
<input type="checkbox" name="hoop" value="国内パッケージツアー">国内パッケージツアー
<input type="checkbox" name="hoop" value="海外パッケージツアー">海外パッケージツアー <br>
<input type="checkbox" name="hoop" value="その他">その他 </td></tr>
602ばぶ:01/12/30 04:42
変数はこんな感じです。
#--変数をセット--#
$name = "$in{'name'}"; # 事業所名
$state = "$in{'state'}"; # 所在地
$shihon = "$in{'shihon'}"; # 資本金
$manager = "$in{'manager'}"; #ご担当者名
$tel = "$in{'tel'}"; #ご担当者名
$mail = "$in{'mail'}"; # メールアドレス
$hp = "$in{'hp'}"; # HP
$area = "$in{'area'}"; # 販売エリアの有無
$street = "$in{'street'}"; # 目的地エリア
$hoop = "$in{'hoop'}"; # おもな販売商品
$comment = "$in{'comment'}"; # 会社概要・取り扱い商品概要等
$id = "$in{'id'}"; # ID
$pass = "$in{'pass'}"; # PASS
603596:01/12/30 04:44
$street = "$in{'street'}"; # 目的地エリア
$hoop = "$in{'hoop'}"; # おもな販売商品

たぶん、この二つ外せばうまくいく
604ばぶ:01/12/30 04:48
ありがとうございます。やってみます。
605ばぶ:01/12/30 05:06
うーん。やっぱりだめでした。データにも1個しか登録されてません。
他に考えられることってなにがあるでしょうか?
登録する処理行ってるところのソースも見ないとよく分かんないね。
607ばぶ:01/12/30 05:19
sub regist {
if ($in{'name'} eq "") { &error("事業所名を記入してください"); }
elsif ($in{'state'} eq "") { &error("所在地を記入してください"); }
elsif ($in{'area'} eq "") { &error("販売エリアの有無を選択してください"); }
elsif ($in{'tel'} eq "") { &error("TELを記入してください"); }
elsif ($in{'mail'} eq "") { &error("メールアドレスを記入してください"); }
elsif ($in{'mail'} !~ /.+@.+\..+/) { &error("メールアドレスが不正です"); }
elsif ($in{'hp'} eq "") { &error("HPアドレスを記入してください"); }
elsif ($in{'street'} eq "") { &error("登録エリアを選択してください"); }
elsif ($in{'comment'} eq "") { &error("メッセージを記入してください"); }
elsif ($in{'id'} eq "") { &error("IDを入力してください"); }
elsif ($in{'id'} =~ /\W/) { &error("IDは半角英数のみで入力してください") }
elsif ($in{'pass'} eq "") { &error("PASSを入力してください"); }

#--変数をセット--#
$name = "$in{'name'}"; # 事業所名
$state = "$in{'state'}"; # 所在地
$shihon = "$in{'shihon'}"; # 資本金
$manager = "$in{'manager'}"; #ご担当者名
$tel = "$in{'tel'}"; #ご担当者名
$mail = "$in{'mail'}"; # メールアドレス
$hp = "$in{'hp'}"; # HP
$area = "$in{'area'}"; # 販売エリアの有無
$street = "$in{'street'}"; # 目的地エリア
$hoop = "$in{'hoop'}"; # おもな販売商品
$comment = "$in{'comment'}"; # 会社概要・取り扱い商品概要等
$id = "$in{'id'}"; # ID
$pass = "$in{'pass'}"; # PASS

#--タグを取り除く--#
if ($tagkey) {
$name =~ s/</</g;
$name =~ s/>/>/g;
$state =~ s/</</g;
$state =~ s/>/>/g;
$shihon =~ s/</</g;
$shihon =~ s/>/>/g;
$manager =~ s/</</g;
$manager =~ s/>/>/g;
$tel =~ s/</</g;
$tel =~ s/>/>/g;
$mail =~ s/</</g;
$mail =~ s/>/>/g;
$area =~ s/</</g;
$area =~ s/>/>/g;
$hp =~ s/</</g;
$hp =~ s/>/>/g;
$comment =~ s/</</g;
$comment =~ s/>/>/g; }
608ばぶ:01/12/30 05:19
#--改行コードをHTML化--#
if ($write_on){
$comment =~ s/\r\n/<br>/g;
$comment =~ s/\r/<br>/g;
$comment =~ s/\n/<br>/g;
} else {
$comment =~ s/\r\n//g;
$comment =~ s/\r//g;
$comment =~ s/\n//g;
}

#--PASSを暗号化--#
$m_pass = crypt($pass, "xx");


&lock1;
if ($area eq "0") {
if (!open(IN,"$nonlimitedfile")) {
&lock2;
&error("$nonlimitedfile ファイルオープンエラー");
}
}
elsif ($area eq "1") {
if (!open(IN,"$limitedfile")) {
&lock2;
&error("$limitedfile ファイルオープンエラー");
}
}

$line = <IN>;
($r0,$r1,$r2,$r3,$r4,$r5,$r6,$r7,$r8,$r9,$r10,$r11,$r12,$r13,$r14,$r15) = split(/\,/, $line);
#--既に同じIDが使われていないかチェック--#
if ($r14 eq "$id") {
&lock2;
&error("ご希望のIDは既に他の方が使用されています");
}
609ばぶ:01/12/30 05:21
#--最新の記事ナンバーをつける--#
$r0++;
$no = "$r0";
close(IN);

#--データを整形--#
$format = "$no,$name,$state,$shihon,$manager,$tel,$mail,$hp,$area,$street,$hoop,$comment,$date,$H_A,$id,$m_pass\n";

#--エリア限定なしの場合の登録処理--#
if ($area eq "0") {
&nonlimited_read("lock2");
$num = unshift(@DATA, $format);
if ($num > $maxlog) { pop @DATA; }

if (!open(OUT,">$nonlimitedfile")) {
&lock2;
&error("$nonlimitedfile ファイルオープンエラー");
}
print OUT @DATA;
close(OUT);
}

#--エリア限定の場合の登録処理--#
elsif ($area eq "1") {
&limited_read("lock2");
$num = unshift(@DATA, $format);
if ($num > $maxlog) { pop @DATA; }

if (!open(OUT,">$limitedfile")) {
&lock2;
&error("$limitedfile ファイルオープンエラー"); }
print OUT @DATA;
close(OUT);
}

&lock2;
610ばぶ:01/12/30 05:22
#--登録完了メッセージ--#
&html_head;
&title;
print <<"HERE";
<center><table width="100%">
<tr><td bgcolor="$top_t_bgc"><center>
<b>登録完了</b></font>
</center></td></tr></table><br><br>
<form method="post" action="$cgifile">
<table cellspacing="0" cellpadding="5" border="1">
<tr><td nowrap bgcolor="#FFFFFF">
<b>会員登録を受け付けました!!</b><br><br>
あなたのIDは「<b>$id</b>」です。<br>
あなたのPASSは「<b>$pass</b>」です。<br><br>

<font color="#CC0033">
会員に交際を\申\し込む場合はID・PASSが必要となります。<br>
また、登録内容を削除する場合は、PASSが必要となります。<br>
どちらもお忘れのないよう、くれぐれもご注意ください。</font>

</td></tr>
</table>
HERE

exit;
}

登録処理はこれで全部です。
チェックボックスのname属性を全部違うものにすればいいのかも。

<input type="checkbox" name="street" value="東北">東北
<input type="checkbox" name="street" value="関東">関東 <br>

<input type="checkbox" name="street_tohoku" value="東北">東北
<input type="checkbox" name="street_kantoh" value="関東">関東 <br>

で、

#--目的エリアデータを変数に追加(スペース区切り)--#
if ($parameter eq 'street') { $street .= "$value "; }

if (index($parameter, 'street') == 0) { $street .= "$value "; }

か。
612ばぶ:01/12/30 05:45
おお、ありがとうございます。やってみます。
if ($parameter eq 'street') { $street .= "$value "; }
   ↓
if ($parameter eq 'street') { $in{street} .= "$value "; }
だろ?
後で上書きしてるがな・・・
つーか何処まで値が入ってるかSTDINから順に確認しなさい
615ばぶ:01/12/30 06:06
611でできました!!ありがとうございます。

613でやったほうがいいんでしょうか?
616ばぶ:01/12/30 06:17
613でもやってみた結果入力されませんでした。
でも、これで安心してねられます。
ありがとうございました。大先生様
617ばぶ:01/12/30 06:24
あとできずいたんですが板チガイだったですね。
それにあげてしまってごめんなさいです。
618名無しさん@Emacs:02/01/16 19:54
すみません。教えて貰えると助かります。

perl script で、標準入力から読み込んだデータを処理することを
考えてます。
標準入力から読み込んだデータの内容によっては、処理内容を
オペレータに問い合わせなければなりません。

ここで、

(1) 処理対象のデータを、
while <> { ... }
として全て処理したあとで、

(2) 内容によっては、
...
close (STDIN); <-- これは後から付け足したんですが、あっても
無くてもダメです。
...
open (TERM, '-');
$getnum = <TERM>;
...
などとして、オペレータに問い合わせようとしているのですが、

(2) の部分で標準入力 (端末入力) から読み込むことができません。
(1) で全て処理してしまってからは、標準入力から読み込もうとしても
eof になってしまうのでしょうか??

解決方法をご存知の方、いらっしゃいませんか??
619名無しさん@Emacs:02/01/16 20:49
>>618

補足します。
618 の script は、

$ cat foo | bar.pl <-- この様に pipe でデータを受け取り、
1. parm1 +
2. parm2 | <-- 例えば、この様に listup して、
: |
n. parmn +
please input number => 1 <-- ここで端末入力を受け取る。
End

みたいな動作をさせたいと言うものです。
パイプやリダイレクトで標準入力を受け取ろうとすると、
以降は (例え close しても) eof しか受け取れないのでしょうか。

# 久し振りに post してますが、navi2ch で改行文字が無視されて
# しまってるみたいですね。いや navi2ch のせいでは無いのかな。
# これも改行が変だと、まともに読めない状態かもしれない。
# もし、そうだったらごめんなさい。
open(TERM, '/dev/tty');
>>619
> # 久し振りに post してますが、navi2ch で改行文字が無視されて
> # しまってるみたいですね。いや navi2ch のせいでは無いのかな。
> # これも改行が変だと、まともに読めない状態かもしれない。
> # もし、そうだったらごめんなさい。
変なのはnavi2chの表示だけだな。
2chの方で最近行頭に空白が入らなくなったらしい。

--- navi2ch-util.el.orig Thu Dec 27 10:52:23 2001
+++ navi2ch-util.el Thu Jan 17 01:06:30 2002
@@ -171,5 +171,5 @@
(insert str)
(goto-char (point-min))
- (while (re-search-forward " *<br> " nil t)
+ (while (re-search-forward " *<br>" nil t)
(replace-match "\n"))
(goto-char (point-min))
@@ -177,5 +177,5 @@
(replace-match ""))
(goto-char (point-min))
- (while (re-search-forward "&" nil t)
+ (while (re-search-forward "&?" nil t)
(replace-match "&"))
(goto-char (point-min))
622デフォルトの名無しさん:02/01/17 01:24
お世話になります。
今日からPerlを勉強しているのですがわからないところがあるのでおしえてください。

$n=2;

while($n <= 100){

$div=2;
$prime=1;
#---------------------------------------------
while($div <= ($n/2)){

if(($n % $div) == 0){
$prime = 0;
Last;
}

++$div;
#--------------------------------
}

if($prime){
print "$n\n";
}

++$n;

}

$div; は#---のスコープ内だけが有効なのですか?
$n が3にカウントされると $divもスコープの下の$div++で+1されると考えたらよろしいのでしょうか?
ぜひ、教えてください。
>>622
> $div; は#---のスコープ内だけが有効なのですか?
んなこたーない。
624デフォルトの名無しさん:02/01/17 01:41
お答えありがとうございます。
Last の 下の$divの値は+1されて再度,whileに戻るのですか?
ぜひ、教えてください。もう少しで解決できそうです。
Last ってなに?
last じゃないの?よく読んでないけど
626名無しさん@Emacs:02/01/17 08:06
>>620

THX!!
解決しました。
何で気が回らなかったんだろう。やっぱり頭が硬いな。
627名無しさん@Emacs:02/01/17 08:35
>>621

こちらも THX!!
2ch の仕様が変って、navi2ch が影響を受けたってことですね。
SourceForge に登録されて CVS に載ってから、あんまり見てなかった
もので。

# しかし proxy が cvs -d:pserver:... を通してくれないので、
# その恩恵を受けらんない。
628デフォルトの名無しさん:02/01/18 01:31
サブルーチン内でopen2を使っている場合、
そのサブルーチンを複数回呼び出すと、
open2に差し掛かった時点で、
プログラムの一番最初に逆戻りしているという変な挙動をするのですが、
誰か、経験したことありますか?解決策はありますか?
629デフォルトの名無しさん:02/01/18 01:41
簡単な例を。
630デフォルトの名無しさん:02/01/18 02:19
sub main{
print "test";
@list={'親','子供','孫'};
foreach(@list){
&hyoji($_);
}
sub hyoji{
$moji = shift;
open2(IN,OUT,through);#throughというプログラムは仮に入力された文字をそのまま出力するとしましょう。
print OUT $moji;

$mojimoji = <IN>;
print "$mojimoji";

close(IN);
close(OUT);
}
汚いですが、こんな感じでjumanというプログラムを
open2で開くとしましょう。(宣言等は気にしないでください)
期待している出力は
test親子供孫 なのですが、
testtest親test親test子供test親test子供test孫
というような出力が返ってきます。謎すぎます。

もし、何かわかればよろしくおねがいします。
間違い
説明文の一行目×juman→○through
632デフォルトの名無しさん:02/01/18 02:43
Perlのバージョンは?
以前Perl初心者スレッドに書かれていたfork()とバッファリング関係の問題だと思う。
バージョンは5です。
過去ログも読んで見ます。
Perl5でも、5.6か5.005.3かで違うとおもう...。
635630:02/01/18 02:56
unixで使っております。
open2 ってforkしてpipeするじゃない?
だから頭でストリームのバッファをフラッシュする
定説ですが・・・
637630:02/01/18 03:00
jperlの5.003かと思われます。
638デフォルトの名無しさん:02/01/18 03:00
639630:02/01/18 03:01
ストリームのバッファをフラッシュするというのは、
どうやって・・・?スマソ。
640636 :02/01/18 03:09
フラッシュしたいファイルハンドルにselectして
secect FH;$| = 1;select STDOUT;
ていうかPerl上級者ってワロタよ>>638
641636:02/01/18 03:10
>>638 は読んだ方が良いよ
642630:02/01/18 03:15
ありがとうございます。
やってみます。
643630:02/01/18 03:37
結局、IO::Handleのautoflush(1)を使って解決できました。
返事をしてくれたみなさまありがとうございました。

プログラムの頭で
use IO::Handle;
STDOUT->autoflush(1);
STDERR->autoflush(1);
を追加しただけです。
644デフォルトの名無しさん:02/01/19 06:40
Perl6の情報キボン
645名無しさん@Emacs:02/01/19 09:25
perl5.6 で unicode 処理ってはやい??
646Damianたん ハァハァ:02/01/19 09:38
>>644
6は面白いぞ。
オペレータオーバーロードに文法カスタマイズと何でも有りだ (あひゃひゃ
取り合えず海苔海苔のグルグルに取り込みまくって、
るび吉の「アレも出来ますコレも出来ます」を黙らせる!!!
但し思いっきり汚くなるだろから、その辺は勘弁な
それと使う前は半年位perlを辞めれ、鬱になるから  (てへっ
人のコード?? 読める訳ネーだろ!!  (・∀・;)わーぃ
>>646
Perlでも読めるコードを書こうと思えばいくらでもかける。
そう思うのはあんたのコードが汚いからだ。
>>647
一概に言えない、Ver違いで演算子が変わるような言語は
暗号製造機だよ
unixをしってりゃ便利な言語ですよ。manで関数マニュアルが引けますし。
perldocで、非ケルンと違いますノン。
651デフォルトの名無しさん:02/01/23 19:11
質問です。

メール件名をMIMEエンコードしようと思って、
CGIファイルと同ディレクトリに「mimew.pl」
を設置して、メールのヘッダ情報記述部分で

$mimew = './mimew.pl';
require $mimew;
$subject = "[カタログ請求]";
$subject2 = &mimeencode($subject);

open (SENDMAIL, "| $nkf | $sendmail -t -n") || die;
print SENDMAIL "To: $recieve\n";
print SENDMAIL "Bcc: $bcc\n";
print SENDMAIL "From: $mail\n";
print SENDMAIL "Reply-To: $mail\n";
print SENDMAIL "Subject: $subject2\n";
print SENDMAIL "Content-Type: text/plain; charset=\"iso-2022-jp\"\n";
print SENDMAIL "Content-Transfer-Encoding: 7bit\n\n";

上記のようにしたのですが、エンコードされません。
なんででしょ?
652デフォルトの名無しさん:02/01/23 19:46
GD.pm の代わりにimagerってモジュール見っけたんですけど、
使っている人いますか?ためしてみたんだけど、日本語フォントが
文字化けしてしまった。
いろいろインストールしなくてもこれだけで画像処理できるから
面白いとおもうのですが。
653iyaaahahhahaa:02/01/24 18:12
うーむボンバーしとけ
身なんんぼぼぼぼぼぼbっぼぼっぼぼぼ
654デフォルトの名無しさん:02/01/24 18:46
>>646
http://starship.python.net/crew/mhammond/pics/kick_camels_but.gif
>>647
「読める」「読めない」でそういうことを語るような状況はどうかと思うぞっっ。
655デフォルトの名無しさん:02/01/26 12:55
>>651
ちゃんとcloseはしたか?
他に気になるところはなさそうだけど。
656デフォルトの名無しさん:02/01/27 23:50
ActivePerl v5.6.1に対応したjperlってどこにあるんでしょ?
初心者なもんで、誰かおしえて〜〜〜
漏れはActivePerl v5.6.1に
http://www.vector.co.jp/soft/win95/util/se043908.html
これ入れて使ってる。
たぶん手の込んだことしなければ問題ないと思う。
658656:02/01/29 03:00
>657
セクス!
ファイルの更新日付がアレだけど、使えるっぽいから大丈夫だね。
ありがと〜!
659デフォルトの名無しさん:02/01/29 18:04
PerlでRubyのRDEみたいな開発環境ないの?
PerlEdit …はどこいったんだろ。

ActiveState の Komodo はいかが?
http://www.activestate.com/Products/Komodo/
661デフォルトの名無しさん:02/01/30 17:06
Win32のActive Perl5.6.1使ってるんですが、
stat()関数と似た動作するものありませんか?
あるディレクトリ内のファイルかディレクトリかを区別したいだけ
なんですが・・・
662デフォルトの名無しさん:02/01/30 17:07
-d
すみません。
perlのtimes関数の
ユーザーCPU時間とシステムCPU時間と違いって何なのですか?
664デフォルトの名無しさん:02/02/01 02:35
さげてしまった・・・。
ユーザ => 自分で書いた部分の実行時間
システム => openとかreadとかOSに任せた部分の実行時間
システムCPU時間はユーザCPU時間に含まれているのですか?
それとも、実際の経過時間は(times)[0]+(times)[1]ってことですか?
timesって0.01の位までしかわからないのですが、
もっと多くの桁が得られる関数ってないでしょうか?
複数回実行するしかないでしょうか。
668659:02/02/01 13:40
>>660
komodoよさそう。
ありがとう
Perlでテキスト編集できるエディタって知らない?
669デフォルトの名無しさん:02/02/02 17:48
レス読まずにレス。

Perl はできるけど正規表現わかりません、って奴
迷わず逝け。
レス読まずにレス、って阿呆は
更に迷わず逝け。
671デフォルトの7子:02/02/02 22:40
WIN2000+ActivePerl

でperl APIを使用したCプログラミングをしようと思っています。
Cのソース上で
#include <perl.h>し
VC付属のコンパイラで
>cl -I\Perl\lib\CORE perltest.c
とすると以下のようなエラーが出てしまいます。
おそらくperl.hで名前解決が出来てないためだと思うのですが、
ご存知の方アドバイスをよろしくお願いします。

**************************
\Perl\lib\Core\perl.h(797) : warning C4273: 'win32_strerror' :
しています。DLL にエクスポートされていると仮定します。
\Perl\lib\Core\dosish.h(111) : warning C4005: 'Stat' : マクロが再定
\Perl\lib\Core\win32.h(305) : 'Stat' の前の定義を確認し
\Perl\lib\Core\perl.h(1755) : error C2061: 構文エラー : 識別子 'pe
ンタックスエラーを起こしました。
\Perl\lib\Core\perl.h(1755) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(1756) : error C2061: 構文エラー : 識別子 'pe
スエラーを起こしました。
\Perl\lib\Core\perl.h(1756) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(1757) : error C2061: 構文エラー : 識別子 'pe
エラーを起こしました。
\Perl\lib\Core\perl.h(1757) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(1758) : error C2061: 構文エラー : 識別子 'pe
ラーを起こしました。
\Perl\lib\Core\perl.h(1758) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(2246) : warning C4273: 'win32_crypt' : DL
ています。DLL にエクスポートされていると仮定します。
\Perl\lib\Core\perl.h(2356) : warning C4273: 'win32_environ' :
しています。DLL にエクスポートされていると仮定します。
\Perl\lib\Core\perlvars.h(22) : error C2061: 構文エラー : 識別子 '
ックスエラーを起こしました。
\Perl\lib\Core\perlvars.h(22) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perlvars.h(39) : error C2061: 構文エラー : 識別子 '
タックスエラーを起こしました。
\Perl\lib\Core\perlvars.h(39) : error C2059: 構文エラー : ';'
673デフォルトの名無しさん:02/02/02 22:46

Perlとは

PerlとはAd Hocの帝王。
PerlとはAd Hocの狂気。
PerlとはAd Hocの芸術。

Ad Hocが要求される時には最高だが
#なんか適当に作りたいときとか、
Ad Hocが必要ないところでは悪夢である。

そんだけのことだろう。
>>673とは

Ad Hoc覚えたて厨房
Ad Hoc覚えたて厨房
Ad Hoc覚えたて厨房

ですねっ!
675初心子:02/02/06 03:56
正規表現について質問です。よろしかったら教えてください。
$_="aaa:bbb:ccc:ddd:eee"
という文字列があって、最初の":"が現れる位置で分割したいのですが、
/(.+):(.+)/;
だと最後に現れる位置で分割されてしまいます。
$1="aaa" $2="bbb:ccc:ddd:eee"にしたいのに、
$1="aaa:bbb:ccc:ddd" $2="eee"になってしまうのです。

どうかよろしく。。。
676デフォルトの名無しさん:02/02/06 04:02
さいたんまっちとかじゃね?
(.+?):(.+) or ([^:]+):(.+)
678初心子:02/02/06 04:15
>>676-677
キタキタキタキタキタキタ━━━━━━(゚∀゚≡゚∀゚)━━━━━━!!!!
出来ましたっ!ありがとうございます!
つぅーか、splitでやるってのはどうよ?
($first,$second)=split /:/, $_, 2;
ってスマートじゃなか?遅かったか〜
680677:02/02/06 04:28
あ、>679のほが100万倍ほど賢こげだ  (−_−
寝る
681初心子:02/02/06 04:50
>>679
そういうやり方もできるんですね。
勉強になりましたっ!
682わかる人だけどうぞ:02/02/07 12:56
自動アンケート作成の次期バージョン(?)が公開されたそうです。
http://snog.squares.net/index.html
の下のほうにある「プレゼント」よりDLできます。

自動アンケート内での関連箱(スレ)
http://snog.squares.net/vote2/htm/1013010926.html
Perlだいぶ覚えて、Cを勉強し始めて、
ようやくCの勉強一通り終わったと思ったらPerlの知識退化してたよ。

一般的なファイル処理くらいはできるからいいけど。
684 :02/02/19 18:37
cryptってどういう処理してるんですか?教えてください
早急におねがいします
ソース見れば。
686デフォルトの名無しさん:02/02/22 09:42
Perlのファイルハンドルが行バッファリング去れているかどうかを確認する方法を教えてください。
687_gunzip:02/02/22 09:55
>>686
#!/usr/local/devel/bin/perl5.7.2-mt -w

use Inline C;

if (is_line_buffered($filehandle)) {
    do_something();
}

__END__
__C__

#include <stdio_ext.h> /* for glibc */

int
is_line_buffered(FILE *fp)
{
    return __flbf(fp);
}
>>687 domo domo
689デフォルトの名無しさん:02/02/23 20:17
Perlでおすすめな開発環境はありますか?
エディタで書くとデバッグ面倒でいやん。
perl -d デバッガ使え。

691デフォルトの名無しさん:02/02/23 22:21
あるgifファイルがあったときに、それが本当にgifファイルであるか
判別する方法を教えてください。
最初の3バイトが"gif"だったような
693691:02/02/24 00:25
>>692
ありがとうございました。
下のようにすることにしました。

open GIF, $gif or die;
binmode GIF;
read GIF, $buff, 3;
my $id = '\x47\x49\x46';
if($buff =~ /^$id$/o){print 'This file is GIF format.';}
close GIF;
>>692-693
"GIF"では?
画像タイプを識別するモジュールくらいありそうなもんだが。
>>689
Emacs + cperl-modeはどうよ? 標準のperl-modeよりかなり強力。デバッ
ガはM-x perldbでエディタと協調して動くよ。
697デフォルトの名無しさん:02/02/28 16:38
abc.cgi :起動ターゲットモジュール
をperlでラッピングして起動するために


my @buff = ()
@buff = <STDIN>
my $outbuff

open2(*IN, *OUT, "abc.cgi");
print OUT $buff[0];
print OUT $buff[1]; #2行で値がわたってきているのは確認。

while<IN>{
$outbuff = $_;
}

と処理をしているのですが、うまくいきません。
ログを見ると、モジュールのキックはしているが、処理がループしている
状態のようです。解決策がわからないので、どなたかおしえてください(;;

ちなみに環境は
REQEST_METHOD=POST
CONTENT_LENGTH=999
です。

698デフォルトの名無しさん:02/02/28 20:14
MIME::Parse モジュール使ってメールのフィルタ掻いてます。

my $parse = new MIME::Parser;
my $entry = $parse->parse_data($mailstr);

ってやると見事にメールを解析してくれるんだが、
カレントディレクトリに msg-* ってファイルが勝手に作成されちまう。
output_dir()で指定してやったら指定したトコに msg-* ができるんだが、
この msg-* ってファイル出力を無くす方法ないのかな?

結構困るんだよね・・・ msg-*って・・・
>>698

マニュアル読めって...

output_to_core YESNO
*Instance method.* Normally, instances of this class output all
their decoded body data to disk files (via MIME::Body::File).
However, you can change this behaviour by invoking this method
before parsing:

If YESNO is false (the default), then all body data goes to disk
files.

If YESNO is true, then all body data goes to in-core data structures
This is a little risky (what if someone emails you an MPEG or a tar
file, hmmm?) but people seem to want this bit of noose-shaped rope,
so I'm providing it. Note that setting this attribute true *does
not* mean that parser-internal temporary files are avoided! Use
tmp_to_core() for that.

With no argument, returns the current setting as a boolean.
700デフォルトの名無しさん:02/02/28 22:08
perlはある意味便利すぎ
701698:02/03/01 12:01
サンクス! > 699

マニュアル読んだらファイル出力したほうがいいような気がしてきたよ・・・(w
702John ◆0z.4Is5E :02/03/01 12:07
Perlが使えて、Rubyも使える人にとって
PerlとRubyってどう使い分ければいいと思う?
>>702
Perl は CGI プログラム作成のバイトに、
Ruby は趣味のプログラム作成に使ってる。
704mina:02/03/02 07:21
横やりでごめんなさい。
Perlの質問させてください。
フレームA、Bに別れている、HTMLドキュメントで、
Aから、Bの現在のURLを取得しようと考えています。
Javascriptがだめだったので、Perlでは・・と思い、
いろいろ調べているのですが、見つかりません。
詳しい方のお力添えを。


ちなみに、Javascriptでは、Bが自ドメインなら可能でしたが、
別ドメインになると「許可されていません」のようなエラーが帰ってきました。


705NR:02/03/02 09:38
perlスクリプトを使って
簡易サーバーとしているPCからルーターのグローバルIPアドレスを取得する
良い方法、ありませんでしょうか。
ローカルアドレスは
192.168.0.1 ルーター
192.168.0.2 サーバー(ルーターのnatを使ってwww/ftp/dns/smtp/popとしています)

環境変数をファイルに書き出すcgiをIP_check.cgiという名前で作成して
socketを使って自分自身のwww.hoge.com/IP_check.cgiへアクセスしてみたのですが
cgiプログラムが実行されずに、プログラム内容が書き出されてしまいます。

socketについて理解出来ていないのが原因だとは思うのですが...
どなたが何か良いアドバイスをお願いします。
706705:02/03/02 09:59
スレ違いに気付きました
よそ行きます
707age:02/03/02 11:56
age
>>704
クライアントサイドとサーバサイドを混同していて要学習だが、結論は無理。
サイトが異なるクロスフレームスクリプティングはセキュリティ上制限されている。
709YES:02/03/02 12:35
>>704

できるYO!
でもソースは忘れてしまった・・・ゴメン。

710YES:02/03/02 12:37
JSでは、言うとおりできません。

できたのはPerlの話だよ、もちろん。
711デフォルトの名無しさん:02/03/02 12:37
Perlを当て馬にしてみようと思います
712抜粋ですが・・・:02/03/02 22:05
これはPerlでもむりだったよね?たしか。

704 の抜粋

>Perlの質問させてください。
>フレームA、Bに別れている、HTMLドキュメントで、
>Aから、Bの現在のURLを取得しようと考えています。
Perl はどこで動くんだろうか…
714デフォルトの名無しさん:02/03/03 04:40
全フォームの送信すればよいんでないの?
715補足:02/03/03 04:43
その後は環境変数から取れるね?
716デフォルトの名無しさん:02/03/09 00:29
perlで取れるか?
別フォームの値。
708のいうとおりじゃないか?

717デフォルトの名無しさん:02/03/09 03:48
>>709
思い出してくらはい。
うちでもその解決方法がわからんところです。
正直結構困ってる。
718perl中級:02/03/09 12:24
もしできたら吉野家おごるよ。
味噌汁つけてもいいYO!
719デフォルトの名無しさん:02/03/09 15:54
吉野家は無理だろう
せめて、牛丼にしてください^o^ ^^ ^^; ^^;; ^_^ `へ’
720初心車:02/03/09 22:28
ActivePerl インストール時に出てくる

「Enable PPM3 to send profile info to ASPN?」

とはどういうことですか?
721デフォルトの名無しさん:02/03/11 19:24
age
722デフォルトの名無しさん:02/03/11 19:59
ここにいるかたは皆さん詳しそうですね。
ところでPerLDAPの解説してる日本語のページってどこかにありますか?
>>722
英語よめ英語
っつーかDAPの概要知っていれば日本語である必要ないじゃん...
724棄教者 ◆witdLTi2 :02/03/14 08:19
>>722-723
>>723に同意.
日本語は確かに英語よりも安直だけど誤訳があるかもしれないし
正直 ぼくも某**s**のマニュアルの日本語版で誤訳を見つけたことがある
725教えてくん:02/03/14 10:08
すみません。みなさま、教えてください。
パール初心者です。
フォームで作ったテキストボックスに
半角数字のみの入力だけにしたいのですが
正規表現をどのようにすればいいでしょうか?

if($hoge =~ /[^0-9]/){ $error1;
}else{ $true; }

だと、少数が表示されません。
かといって、
if($hoge =~ /[^0-9]\.{1}/){ $error;
}else{ $true; }

としてみてもだめです。
助けていただけたら幸いです。
初心カキコでごめんなさい。

$hoge -= 0;

warningsオンにしてると小うるさいので、その場合は

{
my $is_nan;
local $SIG{__WARN__} = sub{ $is_nan++ };
$hoge -= 0;
if($is_nan){ # 数値じゃなかったらしい
$ ...
}else{ # どうやら数値だったようだ
# ...
}
}
あってる?

if ($hoge =~/^[0-9]+\.?[0-9]*$/) {print "マッチ";}
else {print "マッチせず";}
728棄教者 ◆witdLTi2 :02/03/14 14:32
簡略化した小数点表記を認める場合
( E.g. .333 など)
/^[0-9]*\.?[0-9]*$/

符号を認める場合
( +24, -3 など)
/^[\+\-]?[0-9]*\.?[0-9]*$/

指数を認める場合
( 1.79e2 など)
/^[\+\-?[0-9]*\.?[0-9]*(e[\+\-]?[0-9]*)?$/i

自身がないです
729みんなPerl嫌いヤネ...:02/03/16 01:13
自分も嫌いなのですが使ってた掲示板(Force 264)
が突然動かなくなってソース見てどこが悪いのかを探してるのですが、
Perl(CGIとして)でサブルーチン大漁に作ったり(Cみたいに)、インデントしまくったりすると
どれくらい遅くなるのでしょう。

うちのサイトは210人/日 ぐらいなのでどうでも良いような気もしますけど(爆)

あと無料鯖でC使える所ってありますか?
730カジ:02/03/16 01:17
shellの覚醒と解放・・・・
こりゃゼーレが黙っちゃいませんな。
731デフォルトの名無しさん:02/03/16 02:07
漏れは、なんもプログラミングとかやったことないけど、最近やりたいな〜〜とか思い出してきたんですけど、いきなりPerlから入るって邪道??
やっぱりCとかから入るべき??
日常で使いたいならperlのがいいよ>731
文字列に対して正規表現、OLEやDBが簡単に使えるし。
Cはもっと速度を上げたいとか単体実行させたくなったら覚えてけば
733デフォルトの名無しさん:02/03/16 03:58
あぁなるほど〜〜〜
貴重な話をども〜〜〜〜〜
openperlide良いね。
735棄教者 ◆witdLTi2 :02/03/16 17:01
>>731
>>732に禿堂.
C/C++は決して悪い選択肢ではありませんが訳の分からないエラーが出て
プログラム的な思考法に慣れていないとにっちもさっちもいかなくなって
投げ出してしまいます
Perlでプログラム的な思考法に慣れてすらすらプログラムが書け,
実行速度に不満を持つようになったらC/C++に進むといいでしょう

ちなみにぼくは上に書いたことをそのまま実践しています
736デフォルトの名無しさん:02/03/18 16:56
perl と mod_perl って別物なの?
mod_perl は perl が入ってないと使えないの?
>>736
同じ物なんだけど、Java AppletとJava Servletの違いみたいに実行する環境が違う。
mod_perlはperlが内部で使うライブラリをApacheに組み込むわけだから、「Perlは必要」。

と言ってもそれはビルドする時だけ必要なのであって、
実行する時には「不要」

だからインストール後に

 # rm /usr/bin/perl

とかしても平気。

 # rm -rf /usr/lib/perl5

とかは辛いけど。
738デフォルトの名無しさん:02/03/18 20:10
>>737
 mod_perlはApacheにperlを使うためのモジュールを組み込むだけなんだ
から、perl本体を消したらダメだと思うが・・・
 うそを教えようとしてるのか?
 # rm /usr/bin/perl なんて実行したら大変なことになるはず
>>738
やってみて言ってる?

仮に「mod_perlは、Apacheが直接/usr/bin/perlを使う物」だと仮定して、
その処理の過程を想像してみてください。
手続きがCGIと何ら変わりなくなります。
740デフォルトの名無しさん:02/03/18 22:43
>>739
 OSがWindowsXPでActivePerl対応のmod_perlを使っていると
ディレクトリの構成がlinuxなどとは違うのかとも思われますが。

 mod_perlというのはApacheに組み込まれるmod_****という名
前のApacheのモジュールの一種ですよね。
 結論としては「Perlのモジュールやライブラリを含むPerl関係
のファイル全体がないとmod_perlは使えない」だと思うけどなあ。
 >>739のいうやり方だとCgi.pmなんか使えなくなるんじゃないの
かな?

 >>736の人は技術評論者のWEB+DB PRESSの第1号を読ん
でみるといいのではないでしょうか?ちょっと古いけど。

いいから、やってから言おうってば。

Apacheに組み込まれるのはperl.soとかあくまでもperlの一部であって、
bin/perl ではない。
ActivePerlだとしても同じだよ。試しに
 - C:\Perl\bin\perl56.dllをリネームしてApacheを再起動した場合
- C:\Perl\bin\perl.exeをリネームしApacheを再起動した場合

をそれぞれ試してみると良いよ。perl56.dllを弄った時だけ起動できなくなるから。

Cとか他の言語からPerlの機能を使うときは、perl本体ではなくて、
perlのライブラリを読み込んで使うのです。
 だから>>736の質問がperlインタプリタの本体がないとダメなのか
という意味なら>>737の答えでも良いんだろうけど、モジュールやラ
イブラリも含むperl全体のことだったら>>740みたいな答えになると
思うが。

 結局mod_perlとperlは別のものだがmod_perlを組み込んだApache
をちゃんと使おうとするとperlがないと困るという答えになるんじゃない
か?
mod_perlにはPerlが必要だがperlは不要。これでいかが?
>>743
 ま、そういうことで・・・(^^
 ところで質問した人わかったのかな。どこへ行ったんだろう。
745デフォルトの名無しさん:02/03/23 02:21
誰か教えてください!!
10日でできるPerl/CGIという本をかって、
付属ソフトをインストールしたんですが、書いてある通りに
なりません。Apacheを起動して、ブラウザで
指定アドレスにいってもあの通りにならないんです。
Description: internal error - server connection terminated
とでます。何が間違っているんでしょうか?
せっかく買ったんだから使いたいです。
誰かわかる人いませんか?
746デフォルトの名無しさん:02/03/23 02:36
ApacheじゃなくてANHTTPDあたりで試してみたら?
747煽り:02/03/23 02:50
>>745
君、騙されたんだよ。あの本は結構苦労するよ。
あ〜あ、もったいない。お金どぶに捨てたね。
748煽り:02/03/23 02:56
で、こんなソリューションはどうすか。

結城浩 氏のページ
http://www.hyuki.com/

ApacheよりAN Serverがお勧めだ。こっちでやれば?
http://www.st.rim.or.jp/~nakata/

健闘を祈る。
749煽り−しつこくでごめんよ:02/03/23 02:59
で、Apacheのhttpd.confとかの話だったら板違い。
「10日でできるPerl/CGI」は文法だけ読めば。
750デフォルトの名無しさん:02/03/23 06:46
>>745
 本に書いてあるとおりにやってもうまくいかないことが多いですよ。根気が
大事。

 OSはWindows?Linux?それとも他のOSですか?
 「指定アドレス」というのは127.0.0.1とかlocalhostとか192.168.0.1のことですか?
 「あの通り」とはどの通りなのでしょうか?Apacheのインストール成功画面のこと
ですか?
 Apacheのhttpd.confを正しく設定されましたか?

 もうちょっと詳しく情報を。
簡単なネットワークアプリならさらっと書けるからいいね。
書いてすぐ実行は手軽でいいよ。makeするのはメンドクサイ。

大きなものは当然、C/C++やJavaだけど。
752デフォルトの名無しさん:02/03/23 08:52
AN HTTPは簡単に苦楽できちゃうから・・・。
753煽り−:02/03/23 12:34
>>752
cgi作るだけならAN で十分だろ。本人も10日で覚えようとしてるんだし。(w
それにあの本の「ロールプレイングゲームをつくろう」のコードは
Apache だとうまくいかなかったような気がした。(10日で覚えるシリーズの
改訂版ではどうなってるかしらんが。)

とりあえずご参考

http://www.harukaze.net/~mishima/perl/cgi-debug-env/dev-env.html
(とりあえずPerlEditor使っとけ)
754745:02/03/23 12:51
>>750
OSはWindowsです。
指定アドレスは
http://127.0.0.1/
です。
あの通りとは、ブラウザで起動が成功したことを
あらわす画面です。
httpd.confはCD-ROMの設定済みのファイルを
上書きしたのでまちがってないと思います。
ちなみに、手動でも試したのですがやはりだめでした。
ホスト名を指定していないか、ポートが違っているに一票
756745:02/03/23 13:01
127.0.0.1が
ローカルホスト名だそうです。
意味がよく分かりませんが。
これとは違うのでしょうか。
757デフォルトの名無しさん:02/03/23 15:26
オレも同じ本もってるぞ。
本の1ページ目からまねしてやれば自分のマシンでアパッチェサーバーが動き感動するぞ。
自分のマシンでウェブサーバーが動いてるっていうのが感動なんだよね。
758745:02/03/23 15:38
いやまねしてもならないんですよ。
書き換えるトコロは
付属のソフトから上書きコピーしましたか?
759デフォルトの名無しさん:02/03/23 15:44
上で話の出た本のタイトルって「10日でできるPerl/CGI」じゃなくて
「10日でおぼえるPerl/CGI」じゃないの?前者は検索しても見つから
なかった。内容は俺の持ってる後者と同じっぽいし。ちなみに作者は
高橋大吾氏。

で、俺もこの本を入門用に買ったんだけどそんなに悪い本なのか?
具体的にどう言う風に?>>747
760デフォルトの名無しさん:02/03/23 15:47
>>758
757じゃないが、俺は手打ちでhttp.confの設定変えたよ。
もちろん問題なく動作した。
httpd.conf が腐ってるか、間違った場所に置いているかで
Apache が起動してないんだろうな。
762757:02/03/23 16:45
オレは上書きして動作させた覚えがある。
よし!それじゃあ部屋から本を探してきて久しぶりにアパッチェつかってみてそれからだな、オレが相談にのれるは。
自分のマシンをサーバーにするのは将来WEBビジネスでもうけるための第一歩だ。
763745:02/03/23 17:35
みなそん、親切で嬉しいです。
置いているフォルダはconfなので
まちがってないと思います。
まったく原因がわかりません。
764煽り−:02/03/23 17:44
>>759
別に悪いとは思わない。だから「煽り」なんだって。
でも個人的にはBlackBookの「Perl&CGI」と、通読しないと
良く分からん「Perlで作るCGI入門・応用編(結城浩著)」が
最初は良いと思う。
ラクダは買った事無いし、いいとは思わん。

俺は勉強してしばらく経ってから「10日で覚える・・」を買った。
ロールプレイングゲームがApacheで動かなかっただけで、特に
悪いとは思わない。

で、今回のご参考

Perlの統合開発環境を発見
http://homepage1.nifty.com/wizman/app/perlfactory/index.html
765デフォルトの名無しさん:02/03/23 18:17
>>754
 WindowsであればどのドライブにApacheやPerlをインストール
しましたか?
 C:\以外にインストールした場合はhttpd.confの設定を変えない
とうまくいかないと思いますが。
 例えばDドライブにインストールした場合、
  ServerRoot "C:/Apache"

  ServerRoot "D:/Apache"
に変えないといけません。

 いずれにしてもPerlとは話題がずれますのでここでこれ以上話
をするのも何だと思いますが。
Apacheスレ@Webプログラミング板

Apacheの設定を教えてください
http://pc.2ch.net/test/read.cgi/php/1003772635/
767757:02/03/23 18:46
この10日でおぼえるPerl/CGIの付録CD-ROMを本のとおりに実行したらオレは1発で成功したぞ。
http://127.0.0.1/
にアクセスすると
あなたの予想に反して、このページが見えているでしょうか?
というメッセージが表示された。
アパッチェ起動成功までの過程はこんなところだ。
まず本と付録CD-ROMを探してくる。
自分のOSはwindowsXP Proffessional Editionだったのでまずアパッチェをインストールする前にIISサーバーを停止させる。
とにかくまずはアパッチェ以外のウェブサーバーを停止させよう。
なんのことか意味がわからなかったら今までにウェブサーバーを使ったことがないということで、つまりアパッチェ以外がインストールされている可能性が少ないのでここは気にしなくてよいだろう。
アパッチェをインストールする前にハードディスクのバックアップをとったほうがよいが、それも時間のかかる話なので俺はパソコンにもしものことがあったら745になんとかしてもらうということで思い切ってインストール決行。
768757:02/03/23 18:47
CD-ROM \ Perl \ APi522e.exe
付録CD-ROMのPerlフォルダにあるAPi522e.exeを実行。インストール中はnextボタンをどんどん押していけばいい。
これでActive Perlのインストールは完了。
つぎはいよいよアパッチェをインストールするのだがこれのインストール中にはnextをクリックしまくってはいけない。
CD-ROM \ Apache \ apache_1_3_14_win32_r2.exe
インストール中にインストール先を聞いてくるからこのインストール先を本は変更してくれと言っている。
だからインストール先をC:\Apacheに変更。
インストール中に何も考えずにマウスをクリックしまくるとインストール先の変更をしないでインストールが完了してしまう。
apacheのインストールが完了したらapacheの環境設定ファイルhttpd.confをCD-ROMからハードディスクにコピーする。
さらにコピーしたあとにhttpd.confのプロパティを開いて読み取り専用属性を解除しておく。
CD-ROMに収まっているファイルはすべて読み取り専用になっているのでこれからもCD-ROMからハードディスクにコピーしたファイルのプロパティを変更するのを忘れないようにする。
769757:02/03/23 18:49
今の時点でハードディスクには
C:\Apache
C:\Perl
というフォルダが作成されている。
それからwindowsのスタートメニューからStart Apacheのショートカットアイコンを選択し起動。
apache running
と表示されていればアパッチェは起動している。
ここらでアナログ回線などのダイヤルアップでインターネットをやっているばあいはブラウザのインターネットオプションの接続を「ダイヤルしない」に設定しておいたほうがよいぞ。
なにしろサーバーが自分のマシンにインストールされてるんだからインターネットに接続しなくてよい。オレはアナログ回線でがんばってるんだぞ。
それからブラウザを開きアドレスバーに
http://127.0.0.1/
を入力。
そうすると あなたの予想に反して 何かが起こるわけだ。
まずはいろいろ削除してはじめからやってみて、それでもダメだったら再び原因を考えるよ。
成功したら最新のアパッチェをダウンロードしてくるのがよい。
それよりスレちがいの警告がでてるらしいぞ。
770745:02/03/23 21:16
最初から全部やってみました。
やはりダメです。
Description: internal error - server connection terminated
と出ます。何がいけないかまったくわからないです。
スレ違いと言われても、どうすれば・・。
771757:02/03/23 22:39
Description 種類、タイプ
internal 内部の
error エラー
connection 接続
terminated 終える+ed
接続切れエラーか?
ブラウザの設定やアンチウィルスソフトの関係でApacheが終了する可能性はある。
あまりセキュリティアップするとパソコンも何もできなくなるというこったな。
まずはwindows関係のパッチファイルやサービスパックを当ててからブラウザの各種設定を初期にもどし、
さらにアンチウィルスソフトを削除してみて実験するのもよいんじゃない?
もちろんその間はメールの送受信はやめて、アパッチェの実験が終わってアンチウィルスソフトをインストールするまでは目的以外の操作はしない。
どのぐらいのセキュリティ設定で何が動くかは把握しておく必要がある。
もとのセキュリティ設定がどんなだったか忘れた場合は
OSの再インストール&windows update(サービスパックインストール)
をしただけのまっさらな状態で実験したらいいんじゃない。
772板違いなら謝る:02/03/25 01:34
Perlをなんとか使い始めて1年。未だにわかんない事があります。
どうしてもソースが数千行になってしまいますな。
おかげで何日かたつと自分でなんだかわからず、解読にかなり時間が生じる
ありさま。

それとも、もともとPerlなんてこんな出来なのか?(んなわけないか?)

Cみたいにソースを分けるやり方やってる人っていますか?
773板違いなら謝る:02/03/25 01:36
>>772
なんか行が入れ替わってるんですけど。

Cみたいにソースを分けるやり方やってる人っていますか?
それとも、もともとPerlなんてこんな出来なのか?(んなわけないか?)
774棄教者 ◆witdLTi2 :02/03/25 07:51
>>772-773
自分の書いたプログラムにコメント入れていますか?
再利用可能なコードはサブルーチン化, モジュール化していますか?
require使っていますか?
775772:02/03/25 09:04
>自分の書いたプログラムにコメント入れていますか?
>再利用可能なコードはサブルーチン化, モジュール化していますか?

うん。そしているつもり。オブジェクトも使ってるよ。my($this)=shift
なんつったりして。
それでも縦になが〜いプログラムになっちゃうのよね。
C++みたいなきれいなツリーができるとうれしいんだがな。鬱
776棄教者 ◆witdLTi2 :02/03/25 11:13
require使っていますかと問いつめたい
777デフォルトの名無しさん:02/03/25 12:44
777ゲット
       v
     <(゚ω゚) <うっ!
      (  )\        
      /'>

       v
      (゚ω゚)> <はっ!
     /(  )        
       <'\

       v
     <(゚ω゚)> <うっ!
      (  )        
      /'>

       v
      (゚ω゚)/ <はっ!
     /(  )        
       <'\

     v       w
    (゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
   /(  )    (  )ゝ
     <'\    / >

>>771
Description を '種類' とか 'タイプ' とか訳す奴は、プログラマ止めた方が
いいぞ。
>>772->>773, >>775
Perl でも Sub, Require 等があるから、別に C と同じだと思うけど...。
まあ、その前に数千行にも及ぶプログラムを Perl で組むのはどうかと思う
が...。
780それじゃー聞くけどよーおめーら:02/03/25 21:26
画面を10個ぐるぐる回しながら動かすcgiの画面の部分も別ファイルにしてrequireします?

自分の場合、別ファイルにするのは
@レコード(package Hoge)
A自作した汎用関数(変数をハッシュに入れるなど)
なんですよね。制御部分はどうしても1つのファイルに書いてしまう。すると

#!/usr/local/bin/perl -w
require 'HogeHoge.pl';
require 'Hogge.pl';
 ・
 ・
に始まって、
sub Hoge{
}
sub hogeccho{
}
 ・
 ・
sub OgeOge{
}
てな具合に関数がドバッと縦に並びます。これがなんだかスパゲティなんですな。
どないです?
>>780
Perl 勉強する前に、日本語勉強したら ? 何をしたいのか全然わからん。
日本語がスパゲッッッティィィィ
783デフォルトの名無しさん:02/03/25 22:20
>>781-782
>>773読め。わからんなら黙ってて。

784デフォルトの名無しさん:02/03/25 22:22
っつうかもういいわ。ここで聞いたのが間違いだった。
785デフォルトの名無しさん:02/03/25 22:31
画面を10個ぐるぐる回すっていう意味がわからない。
そういうスクリーンセーバーなら見たことあるけど。
>>783->>784
ハァ ? ソース分けたいんなら、require で十分だろうが。
わけわからんことばっかり言うならもうくんな。
787デフォルトの名無しさん:02/03/25 22:42
>>786
おめーに聞いちゃいねーーんだよ。
でも、もう解決したからいいよ。チンカスPGちゃん。(W
一生懸命俺のレス読んでくれたのね。どうもありがと。(爆


(´-`).。oO(春ですねぇ。。。)
だねぇ。まあ、>>787 は、人生がスパゲッティなんだろうねぇ。
Perlのような言語でも、他の人のスクリプトを解析するのは勉強になりますか?
CGI関連だと、手ごろにたくさん入手できそうなのですが。
791棄教者 ◆witdLTi2 :02/03/26 07:37
>>790
勉強になりますが 春休みを利用してこのスレを荒らしている誰かさんのコードは
反面教師になると思います
標準で付いてくるパッケージを読むのが一番勉強になると思われ
cgi.pm はインターフェースや取説の面でもかなり参考になりました
792デフォルトの名無しさん:02/03/26 14:56
だれかDescription訳してくれー
cf:
>>778
793デフォルトの名無しさん:02/03/26 16:21
perlのことなのかわかりませんが、
表示する文字列を強調するときに使う
print "\e[7m hogehoge \e[m";
の \e[7m などは何なんですか?
perlとは関係ありません。
795 :02/03/26 16:37
�x004b;
796デフォルトの名無しさん:02/03/26 16:38
>>794
なにで検索したら引っかかります?
できれば他のもしりたいので。
えんいー
>>791
アドバイスどうも。
まずは標準でついてくるライブラリーからいじくってみたいと思います。
800デフォルトの名無しさん:02/03/26 17:47
>>796
リンクどうも。助かりました。
801デフォルトの名無しさん:02/03/27 00:43
2ちゃんで唯一まともなPerlスレをやっと見つけた、、。
少ないね、Javaとかに比べると。
>>801
WebProg板はご存知かな?
http://pc.2ch.net/php/
803デフォルトの名無しさん:02/03/27 03:47
Perlのような文字処理がC++でやれれば
C++で十分。

ってか、今後はJAVAかC#をメインに行こうかと思うです。
個人的にPerlのいい所って文字列処理ぐらいです。
804 :02/03/27 04:22
けいやくしてるプロバイダがHTMLとPerlで書いたCGIしか使っちゃだめだっていってるんだもん。
だからPerlは今の個人ホームページ作者にとっては大事だよ。
805棄教者 ◆witdLTi2 :02/03/27 08:16
>>803
それはごもっともですが Perl のいいところは使い捨てにできるくらい簡単にコードが書けるところです
ぼくはヘビーなプログラムはC++で, そうでないプログラムは Perl で書くようにしています
806デフォルトの名無しさん:02/03/27 15:01
電話番号 12-3456をから、ハイフンをとって、123456とする
perlのスクリプトをどなたか教えてください。文字列の真中の
空白のとり方がわかりません。
ハイフンを取りたいのか空白を取りたいのかが文章からわからないんだが。
とりあえず、
$num =~s/\D//g;
$num =~ tr/0-9//dc;
809806:02/03/27 16:50
>>807
>>808
~s/\D//gの//ての中身って空白文字じゃなくて、虚無なんですね?
勘違いしてました。すいません。
s/\s//;
Perlのいいところは「自分はやっつけ仕事をしている」という自覚を
常に持たせてくれること。
C++とかJavaだと、しょうもないプログラムを書いていても
まともな仕事をしていると錯覚してしまう。
ソフト板「SAKURAエディタ」スレとマルチっぽいんでゴメソなさい。
readline ってどんな関数(演算子?)なんでしょう?
とりあえず print readline(STDIN); のような感じでうまく動くっぽいんだけど
ラクダ本にも texinfo にも載ってないし。
813デフォルトの名無しさん:02/03/30 16:03
WindowsでActivePerl最新版使ってるんですけど、

perl -e "print (256**2)+256"



perl -e "print (256**2)+255"

が同じ 65536 になるのは何故?
すいません。単なる演算子の順位でした。
>811
あと、再利用する時の事とか、他人が読む時の事とかも、考える必要が無くて良いNE!
816812:02/03/31 23:39
解決っ
ttp://www.rocketaware.com/perl/perlfunc/readline.htm
ソフト板「SAKURAエディタ」スレの方で URL 教えていただきました。
817デフォルトの名無しさん:02/04/04 17:08
分からないので質問です。

Perlの拡張正規表現(?>パターン)についてなんですけど、

CGIの掲示板で入力されたものに対してHTMLのあるタグ以外を
禁止する処理をしているのですが、
例えば<hr>以外のタグを禁止にする場合、

$comment=~s/(?><hr>)</&;/;
$comment=~s/(?><hr>)>/>/;

ではだめでしょうか?
818817:02/04/04 17:12
訂正。
$comment=~s/(?><hr>)</&lt;/;
$comment=~s/(?><hr>)>/&gt;/;
819棄教者 ◆witdLTi2 :02/04/04 17:17
<HR WIDTH="200">にも対応できるとありがたい
実験くらいしる
821817:02/04/04 18:12
実験してできないんだよ。
説明ページもほとんど無し。
822817:02/04/04 18:21
つーかラクダ本にも載ってないのはどうよ?
ラクダ本は掲示板を作るためのハウツー本じゃないです。わらぃ
こんなのはどうですか?

# タグを全て排除
$comment =~ s/</</g;
$comment =~ s/>/>/g;

# hr タグだけ復活
$comment =~ s/<hr(\s+width=(["']?)\d+%?\2\s*)?>/<hr$1>/ig;

これなら <hr> <hr width=80%> <hr width="400"> <hr width='60%'>
の全てに対応しています。
すンごくごちゃごちゃしてるけど,原理がわかれば応用も利くですよ。
824823:02/04/04 19:43
あー,やってもたー。いつも気をつけてるのに・・

#タグを全て排除
$comment =~ s/</&lt;/g;
$comment =~ s/</&gt;/g;
# hr だけ復活
$comment =~ s/&lt;hr(\s+width=(["']?)\d+%?\2\s*)?&gt;/<hr$1>/ig;
825823:02/04/04 19:46
(;゚Д゚)ノ 落ち着け自分
誤 $comment =~ s/</&gt;/g;
正 $comment =~ s/>/&gt;/g;
826823:02/04/04 20:19
すんません。817さんが何を問題にしてるか今気づいたっす。
> ラクダ本は掲示板を作るためのハウツー本じゃないです。わらぃ
これ,私の方がマヌケでした。ごめんなさい。。。(-_-)ウツダ
827778:02/04/04 22:32
>>792
辞書ぐらい引いたらどうよ ? それもメンドイなら、Microsoft Bookshelf とか
買っといたら ?

Description: 記述,叙述,説明,(言葉による)描写

今回の場合は、普通に「説明」程度で意味が取れるだろ。
828デフォルトの名無しさん:02/04/10 20:49
HTMLタグの正規表現書いてみたんですけど、どどど・・・どですか?
$htmltag_regex=q{<\/?\w+(?:\s+\w+\s*(?:=\s*(?:"[^"]*"|'[^']*'|[^"'>\s]*)))*>};
829デフォルトの名無しさん:02/04/10 20:52
終了タグも含めるならこっちかな。
$htmltag_regex=q{<\w+(?:\s+\w+\s*(?:=\s*(?:"[^"]*"|'[^']*'|[^"'>\s]*)))*(?:>|(?=<)|$(?!\n))};
$htmltag_regex.=q{.*?<\/\w+\s*>};
830デフォルトの名無しさん:02/04/10 20:53
ちょっと訂正。
$htmltag_regex=q{<\w+(?:\s+\w+\s*(?:=\s*(?:"[^"]*"|'[^']*'|[^"'>\s]*)))*>};
$htmltag_regex.=q{.*?<\/\w+\s*>};
831初心子:02/04/14 22:10
質問です。変数のサイズを取得するにはどうしたら良いのでしょうか?
832rain:02/04/14 22:24
同じく質問です。
あのですね、apacheを起動させた後IEからCGIを実行しようとすると何故かダウンロードし始めやがるんですよ。
どうして実行できないんでしょう?救済御願いします。
言語不明瞭
834rain:02/04/14 22:28
sorry.
perlです。
835rain:02/04/14 22:36
過去ログ見たらWebProgへ行けと・・・。逝って来ます。
836棄教者 ◆witdLTi2 :02/04/15 08:05
>>832
chmod 0755 するといいかもしれないYO!
>>831
int は 2/4 バイト, long 4バイト, short 2バイトみたいなC/C++のルールは
Perlにはありません。
メモリがパンクするまで幾らでも変数を作っていいんです。
837すいませんが:02/04/17 17:09
CとJAVAは組めますが、Perlをこれからやろうと思います。
どのくらいでマスターできますか?
2〜3ヶ月くらいでしょうか?

マジレス希望です。
>>837
マジレスだが、人による。
一般的には100時間くらいやれば、実践で使えるくらいにはなりますかね?
840大マジのマジレス:02/04/17 17:48
>839
君は今まで食ったパンの枚数をおぼえているのかね?
つーか、はじめてから、大体使えるようになるまでの期間くらい覚えてるべさ?

とりあえずCやJAVAよりは簡単なのでしょうか?
んなこと人に聞く前にお勉強しる。
843デフォルトの名無しさん:02/04/17 18:14
1日。つーか数時間。
>>841
仕様の悪さをすんなり受け入れられればすぐに覚えられる。
>>837
そのくらいのことを、ここで聞かないとけんとうつけられないあなたは、
適性はないです。
何ヶ月かかるかわかりません。
ここには書ける人がいないようですね
847デフォルトの名無しさん:02/04/17 18:42
>>846
まじに、どうしてこんな疑問がでるかわからんよ。
ほうんとうに何ヶ月とか何百時間とかかかりそうなんか?

おれは、週末に本を読んで掲示板のCGIをその日のうちに作ったけど。
(短時間で作ったから完成度は低かったけど)
848843:02/04/17 18:49
>846
おれは書けるよ。CもJavaもとりあえずはね。
で、>841でPerlはそれより簡単かって訊いてるけど、基本的な構文は簡単。
しかし、変態的なコードをC、Javaより書きやすいんで、他人のコードを読むのはどっちかとゆーと難しいかも。
849179マルチPになっちまった:02/04/17 19:51
>>848
マジレスどうもありがとう!
実践的なレベルに達しようとしたとしても、Cみたいに半年もやる必要はないんですね?
マヂデ誰か「179マルチPになっちまった」こいつ頃してください。
うるせーよ馬鹿
たまには遊びたいじゃない
852843=848:02/04/18 08:09
>849
実践的なレベルに達するには、843でも書いたけど、基礎がある人なら数時間で大丈夫だと思う。
ここでいう基礎ってのは、変数とか関数とかアルゴリズムとか。
あとは作りたいものによるね。おれのばあいはテキストいじりがメインだったから、
正規表現の知識とか、そんな感じで。

同じテキストいじりメインで、CとJavaをすでに知ってて、さらに正規表現も知ってるなら、
ほんとあっとういうまだと思うよ。
853849:02/04/18 08:34
>>852
感謝
これで成仏できます
そうなんですか。
数時間といわれると、ネタなのか?と疑ってしまいました。
854デフォルトの名無しさん:02/04/18 12:34
数時間は嘘だな。

結局その言語の風習やリソースの在り処やイディオムを、
ネイティブに身につけるにはどんなプログラミング言語でも時間がかかる。


数時間でってのは「使えた気」になれるまでの時間だ。

例えばPerlを始めてCPANを知って使って登録するまで、
おまえ等どれくらい時間を要した?
(別にメタクソなモジュールでもアップロードできるんだけどさ)
855843=848=852:02/04/18 13:56
>854
嘘じゃないってば。まあ「実践的」の範囲が違うんだと思う。
おれはテキストいじりがメインだったからね。
それさえできれば「実践的」だったってことだよ。
854の言う「実践的」が、「風習やリソースの在り処やイディオムを
ネイティブに身につける」ってことなら、たしかに数時間じゃちっとね。

余談かもしんないけど、おれ、CPANに登録したことないよ。
しつもんですみません
デバッガでステップ実行している最中に
レキシカル変数の値がどうなっているか
を見るにはどうすれば良いでしょうか?
>>856
p expr
>>857
expr は $foo の値を見るには $foo って書くんですよね?
なんか、
perl -de 'my $foo=123;' -e 'print $foo'
ってやって

main::(-e:1):  $foo=123;
__DB<1>_p $foo

__DB<2>_p defined $foo

__DB<3>_p !defined $foo
1
__DB<4>_

ってな感じになって、なんも値はいってないみたいなんですが…
ってここまで書いて

__DB<4>_n
main::(-e:2):  print $foo
__DB<5>_p $foo
123

ってなる事がわかりました…
あーmain::(-e:1):  $foo=123;
の段階だとまだ  $foo=123;は評価されてなかったんスね…

オサワガセシマシタ…首くくってきまー
俺はそこそこPerlの文法というものが分かってきた。
そこで1つ質問があるんだ。
Perlに関するバイブル的な本というのはあるのだろうか?
是非教えて頂きたい。
>859
俗に言うラクダ本。
オライリージャパンの。表紙がラクダの分厚いやつ。
>>860
おぉ。
情報サンクス!
862デフォルトの名無しさん:02/04/21 20:52
二項分布の計算をPERLで作ってるんですが、
1000乗とか2000乗とか、でかい数を乗数にすると、
ダメみたいなんですが、何か対策方法とか
ないのでしょうか?
>>862
Python か Ruby でも使えば?
864862:02/04/21 21:18
>>863さん
早速のお返事ありがとうございました。
おそらく、HPの場所がPERLしか使えない(ただ知らないだ
けかも?)と思われ、どうにかPERLでCGIを製作したいと
思ってます。
PERLをやっとひとかじりした厨房なのでトンチンカンなこと
言ってたらすいません。
>>864
・統計計算用の Perl ライブラリを探す
・式を工夫して桁数を小さくする
・リアルタイムで生成する必要がなければ
 手元で計算して結果だけウェブに載せる
866Perl使ったことないが:02/04/21 21:39
Perl使わなくてもC言語でカバーできないの?
>>866
CのCGIも使えるようなところだといいんだけどね。

>おそらく、HPの場所がPERLしか使えない(ただ知らないだ
>けかも?)と思われ、どうにかPERLでCGIを製作したいと
>思ってます。
数値計算はPerlの最も苦手な分野です。
驚くほど低速です。
Math::BigInt(BigFloat)を使うとさらに重くなります。
共有スペースでCGIを動作させるなら、そういうことはやらないようにね。
869862:02/04/21 23:12
>865さん
お返事ありがとうございました。
>・統計計算用の Perl ライブラリを探す
一生懸命探しましたが、見つからず挫折しました・・
>・式を工夫して桁数を小さくする
これは努力の余地がありそうです。
>・リアルタイムで・・・・
リアルタイムで動くものを目指しています。
870862:02/04/21 23:18
>866さん,867さん
感謝です!
どうも、PERLしか使えないみたいなんです(涙)
>688さん
初耳(汗)でした。
>数値計算はPerlの最も苦手な分野です。
>驚くほど低速です。
言語には向き不向きがあるのは知っていましたが、そうだったとは・・・
共有スペースでやろうとしていましたが、迷惑になってしまいそうです。
断念しないといけなそうです(涙)
871棄教者 ◆witdLTi2 :02/04/22 07:53
糞厨房ですが質問です
Perl と PERL
どちらが正しい名前でしょうか
>>869
鬼のように複雑な事でもなければそこそこだよ。
ライブラリsearch.CPAN.orgに行って探して見れ。
>>871

"Perl"がプログラミング言語を指して
"perl"が処理系(/usr/bin/perlとか)を指してるけど

"PERL"は定義されてないと思ったよ。
perlの「正規表現」は正規表現ではない
>874
??
つかえりゃーそれでいいんでないかい?
Perlに理論とか理屈とかを求めてもしょうがないよ。
>>875
いいんだけども、挙動が正規表現と違うから
混乱する
POSIX 準拠じゃないだけで正規表現は正規表現では?
正規表現が例えば/(!+)[^!]+\1/こんなマッチできるわけがない
そんなことを言えばPOSIXの正規表現だって正規表現じゃないし。

もしかして DFA 等価な正規表現のことか。
確かに本来の正規表現とは違ってるな。
>876
無ければ作る。がんばってくれい。
882デフォルトの名無しさん:02/04/30 19:58
perlでLZSS圧縮(テキストを圧縮するのに適した圧縮方法で、
比較的簡単な処理で実現できる)を行っているソースなどは
ありませんか?
>882

CPANで検索したらイロイロでてくるよ。ライセンスの問題さえ気にしなければ
そのまま使ったほうがラクダ。

ttp://search.cpan.org/Catalog/Archiving_Compression_Conversion/

884デフォルトの名無しさん:02/05/03 08:30
perlの文字列とかの内部構造ってどうなってるんだろう。
ある程度の大きさのメモリを確保しておいて、
足りなくなったらmalloc見たいな感じ?

正規表現とかで置換したときとかの動作も気になるところ。
十分な大きさのメモリをもうひとつ確保してすりかえてるのか?

ソースを落として解読は無理(ダイヤルアップ回線て…)。
>>884
今、見たら Perl-5.6.1.tar.gz が約 6MB やね。56K モデムなら、
30分もあれば充分じゃねーか。
>>885
14.4kモデムて…
電話代かかるて…
まあ適当に理解したつもりでいきるよ
>>886
2ch やってる暇あったら、マクドでバイトでもして 56K モデム代と、
電話代稼げ。
888デフォルトの名無しさん:02/05/04 23:56
Java使い出してからPerlの必要性が感じなくなってきて
Perlを完全に捨てようと思ってるんだけど同じような人いる?
889デフォルトの名無しさん:02/05/05 00:27
>>888
JSPに完全に乗り換えたよ。
>>888
おれもそんな感じかな。
おれはよくJAVAのスレにいるよ。たたかれてるけど(w
完全に捨てるってつもりじゃないけど、
結局次から作るのはJAVAでやろうって感じだから
捨てることになるのかなぁ・・
でもperlって電卓みたいに気軽につかえてすきだった。
とくにUNIXサーバー管理してるんで、使いやすかったし。



891デフォルトの名無しさん:02/05/06 18:27
ま、結局素人がJavaに手が出るわけもなく、設置も簡単で組むのも簡単な
Perlはアマチュア言語として、Javaはプロ用言語として住み分けがされる
わけなんでしょうな。
892ロボ鉄 ◆MGTy6iYI :02/05/06 18:50
あの暗号みたいなコードを見るとワクワクするw
893:02/05/06 18:54
>>888
JAVA は PERL の代替にはならないと思うけど。
処理内容にもよるけど PERL の方が手軽でいいやん。
どういう用途で PERL から JAVA に乗り換えたん?
>>891の母でございま(以下略
漏れはPerl詳しく知らないんで、Perlの良さは正規表現ぐらいしか
わからん。仕事でJava使うようになったけど、Javaは文字操作が
あまり得意じゃないが(1.4は未使用)、C/C++使いだった漏れには、
超簡単お手軽言語に思えたよ。個人的な掲示板には某CGIを使わせて
もらってるが、当然Perlで書かれていて、ダイナミックに手を入れ
られないので、自宅サーバにJava(とPostgreSQL)入れて、Tomcat上で
一から作り直そうと思ているYO!
Perlを愛する人は 心清き人(以下略
Perlの良さは、ひとつには「ここはサボる!」と決めたら本当にサボれるところ。

Javaだと、例えば「例外は投げたいがthrowsは書きたくない」ってことはできない
(今どきはエディタとか統合環境が面倒見てくれるのかもしれないが)。
898:02/05/07 01:59
Java だとコンパイルせなあかんし起動も遅いやん。
Perl で事足りるならわざわざ Java を使う必要ないんとちゃう?

>>895
>Perlの良さ
 多機能でお手軽なスクリプト言語。
 確かに正規表現は Perl の良いところ。
>CGI
 基本的に自作します。
 Perl はそんなに難しくないので勉強されてはいかがですか?

※決して Java を嫌っているのではないですよ。
perl のCGI よりサーブレットのほうがはやいよね。
サーブレットよりmod_perlのほうがはやいよね。
javaのCGIは死ぬほど遅いよね。
# core javaに書いてたけどそんなことするやつはもう居ないよなぁ
902デフォルトの名無しさん:02/05/08 11:46
このスレもやっと900超えましたな。
903デフォルトの名無しさん:02/05/08 15:29
Perlはイイよ、インストールしてないけど。
Javaは別にC#やC++で代用できるけど、Perlは個性的で面白い。
>>903
ruby、Python で代用できないの?
>>904
別にいいんでない?
ちとマイナーだけど。
Pythonistなんてみたこと無い。
>Pythonist

こういう書き方、はじめて見た。
908デフォルトの名無しさん:02/05/08 16:23
Pythonian が一般的?
Rubyユーザみたいなかっこ悪い真似はしないだけだよ。
>>909
頼むから Ruby 厨を召還しないでください。
911909:02/05/08 21:29
いやだって最近見ないから。
Perler
Rubiest
Pythonian
つーわけですか。
913デフォルトの名無しさん:02/05/09 03:35
Perl のモジュールでエラーメールの解析してくれる奴無いすか?
自分の書いた if 文を見て鬱氏・・・
「エラーメールの解析」って何だ?
915デフォルトの名無しさん:02/05/09 13:50
>>862 もう読んでいないかもしれないけど。

pure Perl でなくてもよいのなら、 Math::CDF なんだけどね。
二項分布だと、確率関数はガンマ関数(の対数)、分布関数は不完全ベータ関数
を使って計算するのが定石ではないかと思う。C にくらべると遅いが、よっぽ
ど繰り返すのでなければ問題ない程度じゃないかな。

URL は忘れたけど、pure Perl のもので公開しているのもあることはある。昔、
類似品を書こうとして検索していたら見付けて、CPANにあげてとメール出した
記憶はある。結局、あげてくれなかったんだけど。
916913:02/05/09 16:18
>>914
MLとかでメンバーアドレスのフォワード先が死んでるとか、
quotaがかかってて受け付けないとか、で送信先のサーバが返す
エラーメールから、どのメンバーアドレスがエラーになってるかを
何とか自動で調べたいんだけど、エラーメールのフォーマットが
多種多様で、自分で正規表現で追っかけるのが嫌になってきたと。

舌足らずで須磨ソ
917913:02/05/11 00:34
板違いだったかしら・・・
fml の mead.pl も腕力のようだし、
このまま突っ走るしかないのかねぇ。
>>913
んー、quickmlを参考にしてみたら?
quickmlってPerlじゃないと思うけど(Ruby?)。

最近のMTAには、「ちわっす、おいらqmailっス。
申し訳ないんだけど、○○さんあてのメールは届かなかったんだよね。
お知らせしとくっス」(超意訳)みたいなエラーメールを出すやつもあるしねえ。
英語のスパムかと思って消すとこタダーヨ。
919デフォルトの名無しさん:02/05/11 21:52
ActiveStateに
5005threadでbuildしたActivePerlをくれって言ったら
くれますかね?
>>919
何故自分でコンパイルしないのかと以下略
921デフォルトの名無しさん:02/05/11 22:31
Squeakある意味最強
922デフォルトの名無しさん:02/05/12 04:13
韓国語のEUC-KRからiso-2022-krに変換したいのだけど、そんなモジュール知りませんか?
<丶`∀´>
日本人謝罪シル!
領事館進入シル!・・・ウシシ
<丶;゚Д゚>
アイヤーしまったあるね
まあこのさいどうでもいいニダ
925デフォルトの名無しさん:02/05/12 07:19
Perlで簡単なHTTPSクライアントを作りたいのですが、検索してもなかなか仕様と
かの情報が集まらなくて困っています。
Windows98のCygwin上で動くようなやつを探してます。
良ければ仕様(できれば日本語)及び、ソース(できれば日本語コメント付き)が公開
されているサイトとかを教えていただきたいです。
作りたいのかソフトがほしいだけなのかどっちなんだ?
ちなみに LWP::UserAgent 使えば終わりだが。
928925:02/05/12 09:31
せっかく教えていただいたのに申し訳無いのですが、インストールの仕方がわかり
ません。

Cygwinは
ftp://ring.asahi-net.or.jp/archives/pc/gnu-win32/からsetup.exe
を落として、ダブルクリックしてインストールしたら動いたんで、意味不明だけど
なんとなく使っている程度でして…。

makeだとかgccだとかopensslだとかはsetup.exeでインストールしました。

で、
perl makefile.pl
とやってもエラーは出ていないようなんですが、
make
ってやるとワーニングが出てます。
make test
ってやるとやっぱりエラーが出ます。

UNIXとかについての知識が殆ど無いのもありますが、英語が読めないのが致命的
なようです…。

エラーの意味が良く分からないんで、半ば諦め入ってます…。このまましばらく
やって無理そうだったら諦めます。

教えていただいてありがとうございました。
>>928
activeperl使えばいいのに・・・。

>エラーの意味が良く分からないんで、半ば諦め入ってます…。

初めのうちは行番号だけを参考していればいい。
その行番号かその上がエラー箇所が原因であることが多い。
少し経てばどういうミスでどのエラーが出るかわかってくる。
コンパイルエラーくらいでへこたれるな!がんばれ!!
Cygwinは標準でperlインストールされるだろ
LWPも標準ではいってるだろ
折れはcigwinのperlに上書きバージョンアップをかけたことあるよ。ファイル検索ー>コピー、で。
おまえらCygwinじゃなくてDJGPP使えよ!
>>928
httpsのクライアント側はNet::SSLeayだかIO::Socket::SSLだかが必要。
最新のActivePerlではPPMで提供されていない。

opensslをインストールした後、こいつらを展開して、
perl Makefile.PL
nmake
nmake install
すればかんたんに入る。

ActivePerl for Win32ではnmakeを使う、これ基本。VisualStudioが必要。
nmakeした結果を自分でPPMにしておけば、複数のマシンにインストールするとき楽。
SSL回りがPPMでバイナリ配布されてないのは、
opensslのライセンスの関係なのかなあ??

cygwinの方はよくわからないけど、UNIXと同じようにやったんじゃなだめなの?

> 英語が読めないのが致命的なようです…。
気のせい。読めないような気がするだけ。
辞書片手にじっくりとりかかれば、大事なところは理解できるハズ。
理解できないところはきっと無視しても平気な部分だ。がんがれ!
ちなみに自動翻訳にかけると、その「理解できないが無視していいところ」が
原因で文全体がメロメロになるのでおすすめしない。
934デフォルトの名無しさん:02/05/13 00:00

ある処理をして、それがエラーだったら別の処理をする
ということが出来ますか?
(エラーメッセージを出させないようにする)
935デフォルトの名無しさん:02/05/13 00:16
>>934
????????????????????????????

if(func()){
#通常処理
}
else{
#エラー処理
}
936934:02/05/13 00:33
>>935

func()って何を表すものでしょう?手元の辞書には載っていないのですが・・・・
エラーというのはPerlが終了してしまうような事態のことです。
どういうことやると終了する?

例外処理みたいなこと知りたいんだと思うけど。
938デフォルトの名無しさん:02/05/13 00:40
>>936
2ちょんスクリプト(bbs.cgi)より引用

#シグナル対処関数
sub SigExit {
exit(0);
}

#対応シグナル
{
$SIG{'PIPE'} = $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "SigExit";
}
939934:02/05/13 00:43
もうちょっと詳しく書きます、MacPerlなんですが、Macにはアプリケーション間で情報をやりとりしたり
リモートコントロールするためにAppleEventというプロトコルがついています。
これを使うモジュールがMacPerlにはあるのですが
相手のアプリケーションがたとえば起動していなかったり、不正な処理をしたりすると、Perlに対してエラー情報を返し、
PerlはエラーメッセージとともにPerlスクリプトの実行を終了します。

このような「エラー」が出た場合、例外処理でスクリプトの実行を終了されることを回避したいのです。
Mac使いではない人には分かりづらいかも知れませんが、たとえばファイルオープンに失敗したとか、
ファイルアクセス中にファイルが壊れたとか・・そういう事態に似ていると思ってさしつかえないです。
>>939
いや、例外ならC++以降の言語には大抵搭載されてるから。
Perlに例外処理機構があるのは初耳だけど。
941934:02/05/13 00:53
Perlはファイルオープン失敗してもエラーは返さないんでしたね(;´Д`)
942934:02/05/13 00:55
>>940
初耳というか・・・そういう手段があるのでしょうか?という話です、たとえばモジュール追加するなどで・・。
943デフォルトの名無しさん:02/05/13 00:55
>>941
返すわボケ!
eval 使え。
945934:02/05/13 01:01
>>944

!それですかね。eval
if構文みたいなやりかたばかり考えていたのですが、evalならイケそうですね。thanks!

>>941
手元にある辞書には「openは失敗してもエラーになりません」と・・この辞書ダメですかね。
946デフォルトの名無しさん:02/05/13 01:01
eval - dieか、DESTROYかな。
>>945
open(FILE,"./hoge.txt") || die("駄目でした(T_T)\n");

こういう構文を見たことない?
948デフォルトの名無しさん:02/05/13 01:08
>>945
それってさ、エラーを返さないんじゃなくて、エラーでストップしないという意味じゃない?
それならCも同じだが・・・・
複数の2次元配列をモジュールに渡すときの、渡し方と渡された側の取得方法を記せ。
リファレンスを渡す。
>モジュールに渡す
(゚Д゚)ハァ?
>934
処理を eval で囲む。
953デフォルトの名無しさん:02/05/13 12:51
CPANにtry...catchモジュールがあったかもしれん。
うるおぼえでスマソ
Perlでの例外処理機構はeval {ブロック}です。
eval "文字列" とはちょと違う。
eval内で発生したエラーは$@に格納されています。

eval { 処理 }
if ($@) { エラー処理 }
>>953
それって単なるevalのラッパだった気がする。
うるおぼえでスマソ
>>955
うろ覚えでしょ。
957デフォルトの名無しさん:02/05/14 00:44
>>953
CPANに登録されてるのはどんなのか知らんけど、
try...catchのサンプルはperlsubにも出てたはず。
958913:02/05/16 01:01
>>918
quickml のソースが公開されてたとは・・thanx
959デフォルトの名無しさん:02/05/18 19:24
perlって他の言語と違っていろいろ種類があるようなんですがそうなんですか?
その種類・用途などはどのようになってるんでしょうか?

ageときます。
asge
>>959
気のせいだ。
962棄教者 ◆witdLTi2 :02/05/18 23:47
>>959
バイナリファイルを吐き出せるよ。
会社ではGDS IIフォーマットを整形するプログラムをPerlで書いて、
同僚に使ってもらっている。
963デフォルトの名無しさん:02/05/19 02:09
>>959
正規表現とか?
文字列操作に強いのは確かだね。
あと、世界中の人が作ったライブラリが共有サーバーにアップ
されているので、言語を超えて色々できるっていったらできる。
964:02/06/02 19:21
pdf を気軽につかえる方法ない?
PDFLib 見たけれど、変な文字がでかく入って嫌なんだけれど
>>964

Kansai.pmのMLでPDFJなんてのがアナウンスされてたな。

http://hp1.jonex.ne.jp/~nakajima.yasushi/
966デフォルトの名無しさん:02/06/10 10:17
もうすぐこのスレも終りだねぇ。
だねぇ。でも書き込み少ないね・・・
さて、次スレでも立てるか
お前等DUKE作ろうぜ
このペースだと、980くらいまでいってからでも遅くはないんじゃないか?
そろそろ埋めるか
 
 
 
 
976デフォルトの名無しさん:02/06/12 01:04
Perlでオセロとか作れますか?
作れるよ。
978デフォルト:02/06/12 01:09
Perl/Tkで作ってもいいよ。
でも1000円位のコンビにで買う手もある。
979976:02/06/12 01:19
>>977・978
レスありがとうございます。
追加で質問なのですが、作る場合ゲーム盤の表示はNNやIE等のブラウザで
行うのでしょうか?その他に方法があるのでしょうか?
ちなみに私はflashのactionscriptとjavascriptの知識しかありません。
しかもうちにはMacしかありません。

980976:02/06/12 01:22
すみません。

>>その他に方法があるのでしょうか?---×
>>その他Perl/Tk以外にも方法があるのでしょうか?---○
テキストで。
982976:02/06/12 01:39
>>981
レスありがとうございます。
挑戦してみます。
新スレかもん。
「Perl6について語れや」でいいんじゃないのか?
「Perl5.8について語れや」ではないのか。