トップページ⇒tech
1001コメント286KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
"The duct tape of the Internet"こと、
Perlについての質問箱です
"There's more than one way to do it"ということで
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc2.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。

過去ログは>>2-5あたり
0002デフォルトの名無しさんNGNG
過去ログ

Perlについての質問箱 2箱目
http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
Perlについての質問箱 3箱目
http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
Perlについての質問箱 4箱目
http://pc2.2ch.net/test/read.cgi/tech/1048519394/l50
0003デフォルトの名無しさんNGNG
3get
0004デフォルトの名無しさんNGNG
>>1おつ
0005デフォルトの名無しさんNGNG
5getか?
0006デフォルトの名無しさんNGNG
   / ̄ ̄ ̄ ̄ ̄ ミ
  /  ,―――─―-ミ
 /  //     \|
 |  / ,(・ )   ( ・)  ハァ
  (6       つ   |    ハァ
  |      ∪__  |
  |      /__/ /
/|     ∪   /\

ここはム板のほうがかっこいいと思ってる厨房・痴呆専用のスレです
WEBプログラム板perlスレ本部に逝くことを押すすめします
0007デフォルトの名無しさんNGNG
CGIしか書けない痴呆は帰れ
0008デフォルトの名無しさんNGNG
PerlはCGIじゃないあげ。
0009デフォルトの名無しさんNGNG
>>7は>>6へだ。紛らわしくてスマソ。
0010デフォルトの名無しさんNGNG
10
0011デフォルトの名無しさんNGNG
$i = $a = $b = 0;
って使えないのか?
0012デフォルトの名無しさんNGNG
>>11
0013デフォルトの名無しさんNGNG
>>11
全部初期化されるよ
0014デフォルトの名無しさんNGNG
>13
寝ぼけてますた。それで初期化してほかのところでundefな変数を代入してた…
0015デフォルトの名無しさんNGNG
すみません、質問です。
csvファイルの一番上から順に1レコード読み込んで、$idと$keycodeが等しければ
それぞれ変数に代入する、という検索の部分なのですが、$idが奇数、又は偶数だ
と(csvファイルのレコード数が奇数か偶数かによる)検索失敗しまいます。
尚、$data = <IN>;の部分は、手元の本だと$data = $_;になっています。これだと
全く代入されません。
csvファイルに問題は無いと思います。お願いします。

$match = 0;
open IN,"log.csv";
while((<IN>)and($match == 0)){
$data = <IN>;
chop $data;
($keycode) = split(/\,/,$data);
if($keycode == $id){
($keycode,$flg,$mailadd,$name,$title,$comment) = split(/\,/,$data);
$match = 1;
}
}
close IN;
0016デフォルトの名無しさんNGNG
>>15
寝ぼけた香具師ばかりだな。
CGIだろ、webprog逝け。
0017デフォルトの名無しさんNGNG
#ふと疑問に思ったのでつが

#!/usr/bin/perl

use strict;

my $test = 10;
my $p = ¥$test;


&test_p(¥$p);
&test_p2(¥$test);
&test_g(*test);
$test = &test_v($test);

sub test_p {
$$p = 20;
}
sub test_p2 {
$test = 20;
}
sub test_g {
$test = 20;
}
sub test_v {
my $test = 20;
return $test;
}

より良いperl使いになろうとしたらどれを選択するべきでしょうか?
0018デフォルトの名無しさんNGNG
>>17
4番目の方法においてなぜ引数を渡しているのか分からない。
0019デフォルトの名無しさんNGNG
#!/usr/bin/perl

use strict;

my $test = 10;
my $p = ¥$test;


&test_p(¥$p);
&test_p2(¥$test);
&test_g(*test);
$test = &test_v($test);

sub test_p {
$$p += 10;
}
sub test_p2 {
$test += 10;
}
sub test_g {
$test += 10;
}
sub test_v {
my $test = shift @_;
return $test;
}
0020デフォルトの名無しさんNGNG
sub test_v {
my $test = shift @_;
$test += 10;
}
だた
0021デフォルトの名無しさんNGNG
もうわけわからんな。全部引数渡してる意味ないやん。
修正した4番はともかく、な。
0022デフォルトの名無しさんNGNG
use strict;

my $i = 10;
my $i_ref = \$i;

print join '/', (
  plus10($i), plus10(\$i), plus10($i_ref),
  plus10_g(*i), plus10_g(\$i), plus10_g($i_ref),
);

sub plus10 {
  my $i_ref = ref $_[0] ? $_[0] : \$_[0];
  return ${$i_ref} += 10;
}
sub plus10_g {
  no strict 'vars';
  local *i = ref $_[0] ? $_[0] : \$_[0];
  return $i += 10;
}
0023デフォルトの名無しさんNGNG
↑
暗号?
0024デフォルトの名無しさんNGNG
(,,゚Д゚)∩先生質問です
(warning: too few iterations for a reliable count)
ってエラーどういう意味でつか?

ちなみにベンチマークしてました。
0025デフォルトの名無しさんNGNG
>>24
http://www.excite.co.jp/world/text/
0026デフォルトの名無しさんNGNG
スレタイトルに「初心者無視!」って付けてほしいよ
0027デフォルトの名無しさんNGNG
↑初心者の為のスレだろ?
0028デフォルトの名無しさんNGNG
>>27
どこにそんなことが書いてある?
0029デフォルトの名無しさんNGNG
じゃあ、予め答えを知ってる人のみ質問すること
0030デフォルトの名無しさんNGNG
つまり、知ったかを釣ることを目的としたスレなんですね?
0031デフォルトの名無しさんNGNG
そうです。
IDは出ませんので、得意げに答える回答者の
不備をジサクジエーンで容赦なく追求して下さい。
0032bloomNGNG
http://homepage.mac.com/ayaya16/
0033デフォルトの名無しさんNGNG
解凍者は元々バグを持っています
0034デフォルトの名無しさんNGNG
Win32::APIを使えばPerlからdllを使うことができるらしいのですが、
VBのように使えるdllに制限などあるのでしょうか?
0035デフォルトの名無しさんNGNG
前スレ>>972の方
ありが�dございました。おかげさまで、結構、先まで進みました。


全然違う話なのですが、エキスプローラだとコピーが出来るんだ
けど、Perlからは扱えない長いフルパスのファイルがあって、若
干困ってます。つうか、あんな深いネストにするなよ!!
0036デフォルトの名無しさんNGNG
>>35
浦島、竜宮城に帰れ
0037デフォルトの名無しさんNGNG
モジュールでファイルの読み書きをさせているのですが
使っているファイルハンドルが同じなもので
同時に2つのファイルを書き込むことが出来ません。
複数のファイルを扱える様にするにはどうしたら
良いのか教えてください、お願いします。
ちなみにIO::Fileを使ってもFHは同じなのかダメでした。

Sample.pm
package Sample;
sub new {
 $class = shift; $file = shift; $self = {LIST=>[]};
 bress $self,$class; open(FH,'+<'.$file);
 push($self->{'LIST'},$_) while <FH>; return $self;
}
sub sample {
 my $self = shift;
 unshift(@{$self->{'LIST'}},pop(@{$self->{'LIST'}}));
}
sub regist {
 my $self = shift; truncate(FH,0); seek(FH,0,0);
 print FH $_ for @{$self->{'LIST'}}; close(FH);
}

use Sample;
$s1 = new Sample('./s1.dat'); $s2 = new Sample('./s2.dat');
$s1->sample(); $s2->sample();
$s1->regist(); $s2->regist();
0038bloomNGNG
http://homepage.mac.com/ayaya16/
0039デフォルトの名無しさんNGNG
>>37
use Symbol; して gensym
0040デフォルトの名無しさんNGNG
ファイルかディレクトリかを判断するにはどうすれば?
0041デフォルトの名無しさんNGNG
>>40
google
004240NGNG
>>41 適切な回答ありがとう(・∀・)
004340NGNG
>>41
適切な回答ありがとう(・∀・)
0044デフォルトの名無しさんNGNG
ファイルテスト演算子にある。
004540NGNG
>>44
ふぁいるてすとえんざんし?
ぐぐります。
その後で逝ってきます。
0046デフォルトの名無しさんNGNG
この判定条件の意味が分かりません。
教えてください。

$output = "a\\b";
if( $output =~ /\\$/ )
{
$output .= "\\";
}
0047デフォルトの名無しさんNGNG
>>46
末尾に\が無かったら、末尾に\を追加。
0048デフォルトの名無しさんNGNG
>46
正規表現
004946NGNG
>>47

助かりました。

もうひとつ聞きたいのですが、
この判定条件の$はどのような意味があるのでしょうか?
0050デフォルトの名無しさんNGNG
>>49
末尾を表す。

っていうか、ちゃんと勉強しろよ・・・
正規表現勉強してるなら、^.*$ この辺は分かって当然だろ・・・?
005146NGNG
>>50

すいませんね。勉強不足で。
なにせ、まだ1週間しか勉強していないものですから。

とりあえず助かりました。
ありがとうございます。
0052デフォルトの名無しさんNGNG
Perl/Tkの質問はここでいいでしょうか?
メインウィンドウを画面の中央に配置したいのですが
リファレンスを読んでもやり方がわからず。可能でしょうか?
まずはオライリーの本でも買って読んでみようかな。
0053デフォルトの名無しさんNGNG
すみません、初心者の質問答えてやってください。
Perlによる普通の掲示板でログの先頭行のタイトルだけを
取るにはどういう構文にすればいいんでしょうか?
0054デフォルトの名無しさんNGNG
普通の掲示板って何?
0055デフォルトの名無しさんNGNG
>>54
webに使う2ch見たいな掲示板です。
すみません,今すれ違いだと気づきました。
お騒がせ致しました。
0056デフォルトの名無しさんNGNG
>>51
ちったぁ勉強するなり調べるなりしろよ。
聞けば解決的な考えでは一歩も前に進まんぞ。
0057デフォルトの名無しさんNGNG
前に見た正規表現で、
(.+)* ←これは何を意味してるのですか?
005852NGNG
(任意の文字の1回以上の繰り返し)の0回以上の繰り返し
これでわかる?使い道は良くわからないけど。

Perl/Tk使ってる人いませんか〜?
0059デフォルトの名無しさんNGNG
>>58
Perl/Tkねぇ〜・・・。
日本語通らねーし。
GUI使うなら、それ用の言語へ移行した方がよい。
006052NGNG
>>59
Win用のActivePerlなら日本語通ってますよ。
移行してもいいんだけど標準モジュールなので便利なんです…
0061デフォルトの名無しさんNGNG
>>57
何も表してません。全部の文字です。

>>52
俺もTkやってみました。が、すぐやめた経験者。
なにかといらん所で互換性(?)が悪いですよ事件が多発したのでやる気なくしました。
と言う事で記述ほとんど覚えてません。
http://www.geocities.co.jp/SiliconValley-Oakland/1680/perl_tk/inde
http://b2c-1.rocketbeach.com/~bitwalk/perltk.htmlx.html
でもお気に入りには入ってた。

0062デフォルトの名無しさんNGNG
Perl/Tkは最近のお気に入り
Perlで本格的にGUIが作れるのは嬉しい
ただノウハウがないせいか、希望の画面になかなかならない
いいGUIビルダが欲しい
0063デフォルトの名無しさんNGNG
マウスとか使わずにGUIを設計するのは明らかに間違いだな
0064デフォルトの名無しさんNGNG
Tk用のGUI設計鶴なかったっけ?
0065デフォルトの名無しさんNGNG
>>63
いや、お前が何か勘違いしてる。
0066棄教者 ◆egKIKYO7cg NGNG
>>58
何でもマッチする。
>>Perl/Tk
もれはガンガン使っている。
日本語が通らないのは我慢。
>>63
マウスを使ってGUI設計するのには限界がある。
0067デフォルトの名無しさんNGNG
Perl/Tkの日本語パッチあるよ
今携帯だからURL貼れないけど
少なくともSolarisでは問題なかった
0068デフォルトの名無しさんNGNG
質問です。
Perl-5.6.1の環境なんですが
PurePerlで共通鍵方式の暗号/復号ができるモジュールかソースってありませんか?

# http://www.counterpane.com/blowfish-download.html
# ここにBlowfishのCソースがあって簡単そうなんですけど、自分だと品質に自身がないので
# Perl版がないのはCrypt::Blowfishがあるからでしょうか
0069自己レスNGNG
>> 68
むっちゃCPANにありました。
http://search.cpan.org/author/MATTBM/Crypt-Blowfish_PP-1.12/
最初の探し方がいけなかったみたい。
0070デフォルトの名無しさんNGNG
Graphvizのperlモジュールは素晴らしいな。perlだから、日本語通るし(通る
っていうか、使おうと思えば使える程度だけど)。
0071デフォルトの名無しさんNGNG
INIファイルを読み書きするモジュールを探しているんですけど、
CPAN SEARCHで「ini」で検索するといろいろ出てきます。
定番があればそれを使いたいのですが。
0072 ◆hMJAPH9PWA NGNG
>>71
Config::IniFiles -
Config::Simple
Config::Tiny

このあたりかなぁ。
ざっと見た感じIniFileがフル装備、
Simpleは他のフォーマットもサポートしてる汎用性重視、
Tinyは最低限の実装といった感じだろうか。

# 三つともインターフェイスが全く異なるというのが痛いぞ…。
0073デフォルトの名無しさんNGNG
""と''の差はメタ文字の表示の仕方以外にもありますか?
0074デフォルトの名無しさんNGNG
変数をメタ文字と捕えないならある
0075デフォルトの名無しさんNGNG
罵倒されるのを覚悟で質問します
スクリプトのコメント部分にこういう記述がしてあるのがあります

# $Id ??? 22:22:22 Ext $

そのスクリプトのバージョンと最終更新日を意味しているのは
わかるんですが、この$Id $にはどういう意味があるのでしょうか

こういう風に書いておくとなにかと便利なことがあるのでしょうか
ググッてもヒットしなかったので質問させていただきます
0076 ◆hMJAPH9PWA NGNG
>>75
それはRCSやCVSといったバージョン管理ツールにがファイルに埋め込む情報だよ。
だからPerlにとっては何ら意味を持たない。気にしなくていいよ。
0077デフォルトの名無しさんNGNG
>>76
そうですか、今のところCVSで管理するようなものは
書いてないので安心しました。
どうもありがとうございます
0078デフォルトの名無しさんNGNG
>>77>>75
便利だから導入しなさい。
便利すぎて氏ぬ。
http://pc2.2ch.net/test/read.cgi/tech/1030563262/l50
http://pc.2ch.net/test/read.cgi/unix/1047262230/l50
http://pc.2ch.net/test/read.cgi/unix/999837578/l50
007971NGNG
>>72
ありがとうございます。
やっぱり、Configシリーズですよね。
Config::IniFiles使ってみようかな。

0080デフォルトの名無しさんNGNG
だれかWin32::APIの詳しい使い方教えてくれ!
・・・と思ったら、今月号のハッカージャパンの
1コーナーで解説してくれてたので買いました。
0081デフォルトの名無しさんNGNG
そんなのをテキストにしたくないな
0082ズボラーNGNG
ズボラーズラ。
二次元配列の要素数の取り出し方がいまいちよくわからんアフォズラ。
一次元だと
$rigid = @array;
もしくは
$rigid = $#array+1;(どっちがいいのかわからんが。。。)
で取り出せるんだが、
@array_all = (@array_one,@array_two,@array_three);
の場合で、array[0]の配列数を取り出したいとき、
@array_all[0]は$arry_one[0]が取り出されてしまうズラ。
かといって$#array_all[0]は実行エラーになるズラ。
また、一次元目の要素数を自由に取り出したいズラ。
今回の例なら
なんちゃらarray_allなんちゃら=3;としたいズラ。
どうすりゃいいズラ。ウズラ。
0083デフォルトの名無しさんNGNG
一行レスならともかく
質問するなら普通の日本語使ってくれよ。
読みづらくてかなわん。
0084デフォルトの名無しさんNGNG
>>82
@array_all = (\@array_one, \@array_two, \@array_three);
$array_one_count = @{$array_all[0]};
だな。大体Perlで二次元配列なんてどこで教わったんだ?
0085ズボラーNGNG
84さんどうも。
やっぱ連想配列でやるのが普通ですかね。。。
0086デフォルトの名無しさんNGNG
どこが連想配列なのか
0087ズボラーNGNG
perl記述のスタンダードがわからんヅラ。
配列の要素数にしても、他にも色々あるにしても
$rigid = @array;
$rigid = $#array+1;
とりあえず上記の二つがあるヅラ。
84さんが
>大体Perlで二次元配列なんてどこで教わったんだ?
といってたんで、Perlって二次元配列とか
スタンダードじゃないんだーとか思ったヅラ。
そうするとスタンダードなのは連想配列かと。。。
そう思ったヅラ。ウヅラ。
0088デフォルトの名無しさんNGNG
$res[87] =~ s/ヅラ//g;
0089 ◆hMJAPH9PWA NGNG
>>88
それだと最後の行が
> そう思った。ウ。
となり意味不明になってしまうよ。
0090デフォルトの名無しさんNGNG
>>89
でも全体的にはヅラとった方が読みやすいから。
0091デフォルトの名無しさんNGNG
>>89
意味不明度に違いはない。
0092デフォルトの名無しさんNGNG
next if ($. == 87)
0093デフォルトの名無しさんNGNG
>>87
「要素数」が欲しいんだろ? そのものが一発で取れるのに、
何故わざわざ 1 足さなきゃいけないような値を使うんだ?
一番素直なコードを書いときゃいいんだよ。
0094デフォルトの名無しさんNGNG
どなたか、詳しい方教えてください。

aaa "bbb ccc" ddd "eee fff" ggg

という文字列があったとします
これをスペースを区切りとする単語ごとにわけるとする
ただし""で囲まれている部分は一単語としてあつかうものとする
ような場合、スマートにコーディングしようとした場合どう書けばよろしいですか。

期待している出力結果は

aaa
"bbb ccc"
ddd
"eee fff"
ggg

です
0095サンプルですNGNG
★オマンコは地球を救う★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0096デフォルトの名無しさんNGNG
>>94
my $str = 'aaa "bbb ccc" ddd "eee fff" ggg';
push @str, $1 while $str =~ /([^ "]+|"[^"]*?")/g;
print join '/', @str;
0097デフォルトの名無しさんNGNG
>>96
なるほど
勉強になります。
ありがとうございました
0098デフォルトの名無しさんNGNG
>>52
遅レスだが。
win32環境ならこんな感じかな。

use Tk;
use Win32::API;

$GetSystemMetrics = new Win32::API('user32', 'GetSystemMetrics', 'N', 'N');
$cxscreen = $GetSystemMetrics->Call(0); #SM_CXSCREEN
$cyscreen = $GetSystemMetrics->Call(1); #SM_CYSCREEN

$top = MainWindow->new();
Centering(0,int($cxscreen/2),int($cyscreen/2));
$top->bind( "<Double-1>", [\&Centering,, 0, 0] );
MainLoop();

sub Centering {
my ($event, $width, $height) = @_;
$width = $top->width if !$width;
$height = $top->height if !$height;
my $x = int(($cxscreen - $width)/2);
my $y = int(($cyscreen - $height)/2);
my $geo = $width .'x'. $height .'+'. $x .'+'. $y;
$top->geometry($geo);
}
0099:NGNG

探し物はこちら
http://sagatoku.fc2web.com/
新商品・安売・キャンペーン・流行商品・ネット商品等10万点以上
ジャンル別・50音別で楽々探し物


0100デフォルトの名無しさんNGNG
de Perl6はどうなったんだコラ?
0101デフォルトの名無しさんNGNG
2001年に中日ドラゴンズに10億円という巨額の金額で入団した川崎憲次郎。
しかし彼は入団してから2年間、1軍のマウンドで1球も投げていない。 怪我は治っているが、2軍での投球も拒否。
最近では自宅での休養(サボリ)を続けているという。
ちなみにヤクルトの伊藤選手も同じような状況であるが、本人からの要望で給料の8〜9割を返還している。 一方川崎憲次郎はビタ1文も返してはいない。
もちろん税金等の問題があり、そんな単純ではないが1本10円のワクチンを10億円で買うならば1億人の人口が救えるのだ。
食料に困っている1億人の人たちにうまい棒を買ってあげられるのだ。
必死に生きて餓死していく人たちの前で川崎憲次郎は優雅な生活を楽しんでいる。
こんなことは許されない。皆もオールスターのファン投票で川崎憲次郎に投票し、出場させるのだ!!
5月23日の中間発表ではセリーグの先発2位につけている!!
投票は6月22日まで!!
https://allstar.sanyo.co.jp/vote/
中日・川崎憲次郎、依然先見えず…
http://www.zakzak.co.jp/spo/s-2003_02/s2003021502.html
  
0102デフォルトの名無しさんNGNG
いま自分が書いている perl プログラムに RCS だとか CVS のような履歴管理の機能を付け加えたいのですが、良いモジュールを知っていませんか?

YukiWiki2 でも使われている Algorithm::Diff (http://search.cpan.org/author/NEDKONZ/Algorithm-Diff-1.15/lib/Algorithm/Diff.pm)
などを使えばそれらしいことができるかもと思っているのですが…
0103デフォルトの名無しさんNGNG
すんませんperl56.dllってなんでしょうか
どこかでDLするものなんですか?
0104デフォルトの名無しさんNGNG
perlDBIでODBCを使用する場合、ファイルDSNは使えないんですか?
0105デフォルトの名無しさんNGNG
>>102
どういう物を作りたいのかイメージが分からないけど
RCSとかCVSを利用するためのモジュールは色々あるよ
そうじゃなくて、履歴管理を自分で実装したいって事?


うぃんどうずの話は別スレの方が良いんじゃ無いかと思う今日この頃
0106デフォルトの名無しさんNGNG
配列操作関数で、ハッシュで使える delete が使えないのですが、
何かいい方法はありませんか?
※とりあえずこんなsubroutineを代用としてみましたが。

sub deletefromarray {
my($n,@a) = @_;
my(@ra);
for(my($i)=0;@a;$i++){
$_ = shift @a;
($i == $n) && next;
push @ra, $_;
}
@ra;
}
0107デフォルトの名無しさんNGNG
外部コマンドの入力も出力の両方をperlから入出色させるにはどうすればよいのですか?
open(INOUT, "| cat |");とかやると Can't open bidirectional pipe といわれてしまいます。
0108デフォルトの名無しさんNGNG
Perlクックブック読もうね。はい次のひとー。
0109デフォルトの名無しさんNGNG
>>106
splice

>>107
IPC::Open2
0110デフォルトの名無しさんNGNG
>>105
Window&Perlでスレ立てるほど人がいるかな?
個人的にはこの話題をどんどん語ってほしいけど。

>>106
splice

>>107
わざと実装してないみたいな事がらくだ本に書いてある。
どうしても使いたいならIPC::Open2
0111デフォルトの名無しさんNGNG
>>110
この話題ってどの話題? いや、別に煽りじゃないんだが

Win&Perlって、結局はインストールが出来ないとか、モジュールの使い方を知らない ってレベルが多いような気がする
0112デフォルトの名無しさんNGNG
>>111
Win32モジュール関係の話題とか。
0113デフォルトの名無しさんNGNG
ActivePerlではパッケージのインストールはppmをつかうけどcygwinでは何つかうの?

0114デフォルトの名無しさんNGNG
最近perlにハマり初めて、ちょっとしたメール関係のプログラムを組んでいます。
開発環境はWindowsXP標準のPerlです。

pop3からメールを受信して、本文を"$count","list"という名前の添付ファイルを"$count.lst"として保存するプログラムを組みたいと思っています。

ttp://www.din.or.jp/~bigstone/cgilab/guide/pop3.html
のpop3.pmを利用して作りました。

添付ファイルは、
$file = $pop3->attach(list);

で得られるファイルに保存されると言う事なので

$list=join('',"$count",'.lst');
$source = $pop3->attach(list);
rename ("$source","$list");

としましたが、ファイル名が変更されません。わかる方、解決方法教えて下さい。ソースは次レス。

※ホスト名など環境に合わせる必要があります。
0115デフォルトの名無しさんNGNG
# 現在のメール数と総サイズを得る
my($mail, $size) = $pop3->stat();

# メール取得件数
my $retr = 0;
0116デフォルトの名無しさんNGNG
★2日間無料で見れる★あなたは幸福です★
http://bbs.1oku.com/bbs/bbs.phtml?id=yasuko
0117デフォルトの名無しさんNGNG
あら・・・。本文が長すぎてソース書き込めない(>_<)
0118デフォルトの名無しさんNGNG
>>114
のURLのサンプルプログラム以下の部分に追加しました。

# 必要なら添付データ情報の処理を行う
%attach = $pop3->attach();
if(keys %attach > 0){
# 添付データがある場合の処理
$list=join('',"$count",'.lst');
$source = $pop3->attach(list);
rename ("$source","$list");

}

$countには数字が入ってます。
0119デフォルトの名無しさんNGNG
open( IN, "hoge |") とやった場合に、 hoge コマンドの終了コードを得るには
どうすればいいのでしょうか。
0120デフォルトの名無しさんNGNG
>>113
>perl -MCPAN -e 'shell'
でやってるけど、今のところ問題無いよ
0121102NGNG
>>105
YukiWiki の履歴機能を充実させたいなというふうに思っているのですが。

とりあえず、Algorithm::Diff を利用して `diff -n` ライクな差分の生成と patch ができるようにしてみたのですがどうでしょうか?
http://morara123.tripod.co.jp/perl/difftest.pl
http://morara123.tripod.co.jp/perl/difftest.html
0122114NGNG
>>114-115

自己完結しました(^^;一晩おいて、翌日考え直すと直る事って良くありますよね。

pop3.qmがロックをかけているからrename出来ないのかとかいろいろ深読みして
ましたが、単純にパスの指定がおかしかったようです。

× rename ("$source","$list");
○ rename ("$mail_dir/$source","$mail_dir/$list);
0123デフォルトの名無しさんNGNG
>>113
>>120
たしかバイナリ含むやつってなかったっけ?
そういうのは問題が起きると思う。
0124nobodyさん NGNG
コンパイラ有るんであればcpanでいいと思うけど、
ppmの方が楽なんだなぁ・・・
0125デフォルトの名無しさんNGNG
Linux板とかそっちの方がいいのかも知れませんが、わかる方教えて下さい。
10分毎に起動するプログラムを作りたいと思っています。


そこで、
while(1){
system('perl prgram.pl');
sleep 600;
}

というプログラムを組みましたが、&オプションで起動してもログアウトすると
終了されてしまいます。

何かいい方法はないでしょうか?

SunOS 5.6のサーバに置こうとしています。
0126デフォルトの名無しさんNGNG
>>125
nohupとかそういう話じゃなくて?
0127デフォルトの名無しさんNGNG
>>126

思いっきりそれで行けそうでした。

Thanks!
0128デフォルトの名無しさんNGNG
PerlとDelphi比べたらどっちが上ですか?
0129デフォルトの名無しさんNGNG
>>125
cron
0130デフォルトの名無しさんNGNG
>>123
Cygwin 版の gcc をそのまま使うんじゃなくて、
cl とか bcc とか持ってきて cpan の設定ファイルいじればいい。
0131デフォルトの名無しさんNGNG
125です。

>>129

ほんとは、crontab設定すべきなんでしょうけどPermissionのせいかうまく
設定出来ませんでした。

自鯖じゃないから、cronは無理かも知れません・・・。
0132デフォルトの名無しさんNGNG
あと10秒
と表示して同じ場所に数字をどんどん減らして表示するのはどうやりますか?
数字を減らす事は出来ますが、同じ場所に表示させる方法がわかりません。
0133bloomNGNG
http://homepage.mac.com/ayaya16/
0134デフォルトの名無しさんNGNG
$|=1;
for ($i=10;$i;--$i) {printf "%2d\b\b", $i; sleep 1}
0135132NGNG
>>134
ありがとうございます。\bを使うのですね。
でも1から1000までのように桁数が増える場合はどうするのでしょう?
0136_NGNG
http://homepage.mac.com/hiroyuki43/moe/jaz02.html
0137デフォルトの名無しさんNGNG
Perlってもう終りなんですか?
0138デフォルトの名無しさんNGNG

>>134
そーゆのって、sleepできっかり1秒になるもんなの??
処理自体の時間の考慮って言うか、そうゆうのが必要だから
sleepはどうかと思ってたんだけど…。今まで。
0139デフォルトの名無しさんNGNG
>>135
表示した桁数分だけ\bで戻してスペースで消せばいい。

$|=1
$n=0
for ($i=10;print("\b \b" x $n), $i;--$i) {print $i; $n = length($i); sleep 1}

>>138
用とによるだろうなぁ。132はそんなに精度が必要とも思えなかったんで。
現時刻と最初の時刻からsleepする時間を補正すればできると思うが、
perlでgettimeofday()呼ぶのってどうすんだっけ。

# 最近はrubyに移ってしまったので、実はあんまり覚えてない。
0140132NGNG
なるほど。出力した文字の長さを保持してその分を消せばいいんですね。
参考になりました。ありがとうございます。
元々sleepするだけのところをsleepの残り時間がわかるようにしたかっただけで
時間の精度は特に考えてないです。
0141デフォルトの名無しさんNGNG
Perl2exe買ったヒトいる?
あれはPerl/TKで作ったヤツもコンパイルできるのか?
TKごとスタンドアローンアプリになるのか?ならないよな。
0142デフォルトの名無しさんNGNG
>>132
\r(復帰)をつかってみぃ。
0143138NGNG
>>140
ああ、なるほど。
それだけの目的か。

Perl2exeは全部まとめてコンパイルされるよ。
use Tk;
これ宣言したのをコンパイルしたら実行ファイルが1.5MBになる。酷すぎる。

でも、実はperl2exeなんぞ使わなくてもperlにBと言うモジュールコンパイラがついてるらしいんだな。
使ったことないけど。
perl2exeは無料で使いつづけてます、俺。
0144デフォルトの名無しさんNGNG
>>132
C言語のエスケープ・シーケンスみたいなことがPerlでできればいいのにね。
0145デフォルトの名無しさんNGNG
あらかじめ登録しておいたディレクトリに移動できるという簡単なツール
をPerl4の時代(Win95)に作ったんですが、XPでひさびさに使ってみたら
ディレクトリが移動してくれません。chdirという関数を使ってるんですが
調べてみると「作業用のディレクトリ」を変更する・・・とかかれてあります。
作業用のディレクトリに移動する関数とか別に用意されたんでしょうか?
あるいは純粋にディレクトリ移動できる関数とかご存知でしたら教えていただきたいです。
0146デフォルトの名無しさんNGNG
perlの置換で連想配列の配列($a{$b}[$c]のような)を使用する場合
$hoge =~ s/$array{$foo}[$bar]/$array{$foo}[$hogehoge]/
上記の方法では、うまく置換されません。
$や[が正規表現上問題があるのはわかりますが、
どこに入れればうまくいくのかわかりません。
もしご存知の方がいらっしゃったら教えてください。
0147デフォルトの名無しさんNGNG
Working directoryを作業用ディレクトリと訳しただけじゃないか
0148デフォルトの名無しさんNGNG
>>146
その例だと問題なく置換してしまうけど?

$foo = 'foo';
$array{$foo}[$bar = 1] = 'bar';
$array{$foo}[$baz = 2] = 'baz';

($hoge = 'foobar3baz') =~ s/$array{$foo}[$bar][123]/$array{$foo}[$baz]/;
print "$hoge\n"; # bazfoobar3baz

($hoge = 'foobar3baz') =~ s/${array{$foo}[$bar]}[123]/$array{$foo}[$baz]/;
print "$hoge\n"; # foobazbaz
0149デフォルトの名無しさんNGNG
コマンドラインから実行する一行スクリプトを作っています。

SQL を作るために、別ファイルから読み込んだ文字列を '' の中に埋め込む、
という処理をしたいのですが、-e の中なのでシングルクオートを使えません。

perl -n -e 'printf("INSERT INTO url (url) VALUES ('%s');", $_);' source.txt

何か良い方法はないでしょうか?
0150デフォルトの名無しさんNGNG
Perl仕事で使える?
0151デフォルトの名無しさんNGNG
Perlって趣味でしょ?
0152デフォルトの名無しさんNGNG
>>150
さっきVBスレでも聞いていなかったか?
仕事で使いたいならC++かJavaやりなよ。他の人のことはいい。
0153デフォルトの名無しさんNGNG
>>150

仕事で使ってるUNIX環境だと、

C++:コンパイル環境無し
Java:同じく
シェル:処理遅い

って感じでPerl使ってるんだけどさ。
まぁ、別にCでも良いんだけど。
CGIだと未だにPerlってイメージがあるからね。
スキルアップちゅうか、経験になるかな?程度で使ってるな。

まぁ、プログラムの仕様でPerl使えって言われりゃPerlを使うわけで...
0154デフォルトの名無しさんNGNG
仕事で、というのが個人レベルの問題解決なのか、
グループ内に配布して使うのか、
社内で正式リリースするのか、
それどころかクライアントに渡すのか、
で全然変わってくる罠。
0155149NGNG
>>149 への自己レスです。
アスキーコードでシングルクオートを指定してやることで解決できました。
$ perl -n -l -e 'printf("INSERT INTO uniq_uri (uri) VALUES(\x27%s\x27);\n", $_);' source.txt
0156デフォルトの名無しさんNGNG
>>149
シェルの話なのでバックスラッシュ(\)でquoteするのが普通だけど、
$ perldoc -f q
$ perldoc perlop
という手もある。
0157デフォルトの名無しさんNGNG
>>144
Perlのエスケープ・シーケンスはCよりも多いぞ。Cには\eなんてない。
0158デフォルトの名無しさんNGNG
>>145
親プロセスのpwdを変えようとしてるんなら、単独では不可能。
ディレクトリ名を出力して親プロセスでそれを読んでcdするしかない。
0159156NGNG
>>149
ごめん、この場合qはぜんぜんダメですね。
0160149NGNG
>>159
確かに、q// を使っても qq// を使っても、
出力にシングルクオートが出てこないんですよね。
シェルに消されてるのでしょうか?
$ perl -n -l -e 'printf(qq/INSERT INTO uniq_uri (uri) VALUES('%s');\n/, $_);' source.txt
INSERT INTO uniq_uri (uri) VALUES(http://www.example.com);

バックスラッシュ付けると bash の文法エラーになっちゃうし。
$ perl -n -l -e 'printf(qq/INSERT INTO uniq_uri (uri) VALUES(\'%s\');\n/, $_);' source.txt
bash: syntax error near unexpected token `;'


環境は以下の通りです。
$ bash --version
GNU bash, version 2.04.0(1)-release (i386-turbo-linux-gnu)
Copyright 1999 Free Software Foundation, Inc.

$ perl --version

This is perl, version 5.005_03 built for i386-linux
(以下略)
0161>>143NGNG
perl2exeの件ありがと、1.5Mかぁ、けっこう惨いね。
しかも高いし。
0162山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0163デフォルトの名無しさんNGNG
新種の山崎登場につきage
0164デフォルトの名無しさんNGNG
Rubyでいうところの
配列の初期化 a=Array.new(100,0)
===演算子 a===[1,2,3]
のようなものはありますか?
0165デフォルトの名無しさんNGNG
>>164
Rubyは知らんが
@a = (100,0);
@a = (1,2,3);
が期待しているそれかな?
0166棄教者 ◆egKIKYO7cg NGNG
>>164>>165
Array.new( 100, 0 ) ってのは a[0] から a[99] を確保して 0 を入れておくってやつだとしたら
ない。
foreach( 0..99 ) { a[$_] = 0; }
とやるしかない。

あとそれから親切にも Ruby のサイト回って === とかいう演算子について調べたが、
Perlには残念ながら似たような機能はない。
一個一個条件文を書くしかない。
ついでにいうが switch - case
もないからこれも一つ一つ
if( ... ) {

} elsif( ... ) {


} elsif( ... ) {


} else {

}
と書くしかない。
0167棄教者 ◆egKIKYO7cg NGNG
一緒に質問。

Perl のスレッド機能が使いたいので、
Cygwin で「コンパイルして」インストールしてみたら
perl -MCPAN -e shell が使えなくなった。

正確に言えば起動はするのだが
install Bundle::CPAN ってコマンドを打ち込んだときに
CPAN: Storable loaded ok
Going to read /home/kikyosha/.cpan/sources/authors/01mailrc.txt.gz
/home/kikyosha/.cpan/sources/authors/01mailrc.txt.gz: No such file or directory
Going to read /home/kikyosha/.cpan/sources/modules/02packages.details.txt.gz
/home/kikyosha/.cpan/sources/modules/02packages.details.txt.gz: No such file or directory
というエラーが出て氏ぬ。
ところが ls で /home/kikyosha/.cpan 以下を確認するとファイルは全て存在する。

また、Sun OS にも自分でコンパイルして Perl をインスコしたが、
こちらの CPAN は正常に動作する。

チェックすべき点を教えて頂きたく候。
0168デフォルトの名無しさんNGNG
>>166
ありがとうございました
0169デフォルトの名無しさんNGNG
>>164
my @array = (0) x 100;
0170デフォルトの名無しさんNGNG
>>169
紙!!
0171nobodyさん NGNG
でも、初期化って必要なん?
modperlとかならいりそうやけど・・・
0172デフォルトの名無しさんNGNG
>>171
99.5%のPerlユーザは初期値はどうでもいいと思っているけど、
0.4%のユーザは初期値に1を、
0.1%のユーザは初期値に3.1415をキボンヌしているという統計があります。
0173デフォルトの名無しさんNGNG
>>169
テストしたら正常に動いた!
紙!

でも、俺は変数の型宣言とか初期値とかあんま好きくない。
ましてやスクリプトなのになんでそんな事を…。
て言うかperlで宣言とかしたら重くなる。いらん処理増える。
0174デフォルトの名無しさんNGNG
>>173
perlだといきなり $a[10]+=1 とかしても動くからな。
rubyはnilと0は区別するから。
0175デフォルトの名無しさんNGNG
>>164
配列を確保するだけでよいなら、
$#a = 100;
0176デフォルトの名無しさんNGNG
それだと101個確保しないか。
0177デフォルトの名無しさんNGNG
えーと。win98。ActivePerlの5.8使用。

open(FILE,">test.txt"
close(FILE);

なぜかファイルが生成されませんでした。
あれれれれ。失敗したのかな?
失敗だとしたら、目印のために強制終了させよう。
で、以下のように書く。

if(open(FILE,">test.txt")){
print FILE "あああ\n";
close(FILE);
}else{
exit;
}

プログラムは強制終了される事なく普通に進行。
でも…。ファイルが生成されてない。
あれれ。もしかして、この記述では実行ファイルと同じ場所には出来ないで、他の場所に出来るのかな?
と思い、
「スタート -> 検索 -> ファイルやフォルダ」
の技を使いC:の中を標的とし、test.txtを検索。

でも、そんなファイル存在しなかった。
なんでやねん。

このコンピュータは明らかに私を馬鹿にしています。
許せません。

…と言うか誰か馬鹿な俺に教えて下さい。
0178デフォルトの名無しさんNGNG
>>177
> あれれ。もしかして、この記述では実行ファイルと同じ場所には出来ないで、他の場所に出来るのかな?
カレントディレクトリって知ってる?
0179デフォルトの名無しさんNGNG
今やり直した所、超誤爆してました。
思いっきりファイル名を書き間違えてました。
ごめんなさい。
消滅してきます。

0180デフォルトの名無しさんNGNG
perl2exe V6.00 持ってる人いる?
わけがあって欲しいでした。
0181デフォルトの名無しさんNGNG
↑7.0.0じゃなくて?
0182デフォルトの名無しさんNGNG
そうそう、実は、HDD がクラッシュしちゃって、
perl2exe 6.X でコンパイルしたファイルだけが残ってるという事態で。。

6.x でコンパイルしたやつは
http://www.securityfocus.com/archive/1/312757/2003-02-20/2003-02-26/0
で復元できそうなんだけど、
コンパイルに使った perl2exe 6.x もやっぱり HDD クラッシュで消えちゃったの。

いろいろ探してるんだけど、7.00 か 5.03b しかなくてねぇ。
今年の 2/20 〜 5/5 の間に perl2exe を落とした人いたら協力お願いしました。
0183デフォルトの名無しさんNGNG
>>174
perl にもundefあるじゃないか。
上手くやってくれるけどな
0184デフォルトの名無しさんNGNG
>>176
そだな。すまそ。
0185デフォルトの名無しさんNGNG
>>182
作者にメールしてみるとか。
こうゆうことでメールするのって迷惑なのかな?
0186デフォルトの名無しさんNGNG
>>185
迷惑だ
0187デフォルトの名無しさんNGNG
すいません
GD::Graphモジュールを使用したくて
動作確認のため簡単なプログラムを走らせてみると、

Can't call method "plot" on an underfined value at ./test.pl line ***.

となってしまいます。
なにが 起きてるのか教えて下さい。 お願いします。
0188187NGNG
あ それと対処法も・・・
0189デフォルトの名無しさんNGNG
>>187
> なにが 起きてるのか教えて下さい。 お願いします。
エラー。

>>188
> あ それと対処法も・・・
デバッグ。
0190デフォルトの名無しさんNGNG
Can't call method "plot" on an underfined value at ./test.pl line ***.
^^^^^^^^^^
undefined の間違えでは?
「./test.pl の *** 行にある未定義値では"plot"というメソッドは呼び出せない」
だから、new していないとか…
0191 ◆hMJAPH9PWA NGNG
newに失敗したらundefを返すなんてよくあること。
# 個人的にはdieしてほしいけど。
0192187NGNG
>>190
>>191
あ そういうエラーなんですね。
インストに苦労したから、GD::Graph自体がおかしいのかと思ってました。
プログラムもう一度見直してきます。
ありがとうございました。
0193デフォルトの名無しさんNGNG
ハッシュから、ランダムに要素を選びたいのですが、重み付けも行いたいのです
$hash{1} = 50; $hash{2} = 30; $hash{3} = 20;
とあった場合に、大体 50%, 30%, 20% の確率で選ばれるように(randなので厳密にはなりませんが)
@array = ((1) x 50, (2) x 30, (3) x 20); $array[rand(@array)];
では流石に効率が悪いので
( 1000種類 × 100回 くらい なので、配列生成はちょっと...)

なにかスマートな or Perl的なやり方ないでしょうか。
0194通行人さん@無名タレントNGNG
$a = int rand 10;
$a = ( $a < 5 )?1:
($a < 8)?2:
3;
0195デフォルトの名無しさんNGNG
>>194
>>193は、ハッシュの要素が1000個って事じゃないかな
0196デフォルトの名無しさんNGNG
>>193
スマートでもないしあんまりperl的でもないけど。
もうちょっと考えたらperl的なの思いつきそうだけど、
今から出かけなきゃいけないのでパス。
forの所はsort使って一発でできそうな気がする。

$hash{1} = 50;
$hash{2} = 30;
$hash{3} = 20;

map {$i+=$hash{$_}} keys(%hash);
$j = int(rand($i));
for (keys(%hash)) {
 if (($j -= $hash{$_}) < 0) {
  $answer = $_;
  last
 };
}

print "$answer\n";
0197デフォルトの名無しさんNGNG
>>193
@weight = (25, 25, 150);
foreach (@weight) { $all += $_ }
until ( $weight[$key = int(rand(@weight))] > rand($all) ) {}
print $key;
0198デフォルトの名無しさんNGNG
>>197
そのやり方よりこっちの方が速いとおもわれ

$max = 0;
@weight = (25, 25, 150);
map { $max = $_ if $_ > $max } @weight;
until ( $weight[$key = int(rand(@weight))] > rand($max) ) {}
print $key;

0199197NGNG
@weight = (25, 25, 150);
foreach (@weight) { $max = $_ if $_ > $max };
until ( $weight[$key = int(rand(@weight))] > rand($max) ) {}
print $key;

要素の和じゃなくて、要素の最大値で十分だった。迂闊。
0200197NGNG
時すでに遅しか(死
ところで foreach と map って優劣ある?
0201193NGNG
割合を考えるだけでよかったのですね。
>>194 みたいに範囲のインデックスで上手くやる方法考えて詰まってました
ありがとうございました。
0202202NGNG
m/^([0-9])([0-9])$([0-9])/;

if($3 == ($1 + $2)){
#大成功
}

__END__
2 + 0 = 2。
でした。
0203デフォルトの名無しさんNGNG
>>202
m/^(\d)(\d)(\d)$/;
$3 == $1 + $2 and die;
0204202NGNG
ガ━━━(゚д゚;)━━━ン!! 
$ の付ける場所間違って覚えてた。
0205デフォルトの名無しさんNGNG
perlのサブルーチンをツリー表示してくれるような
ソフトを知っている方いましたら、教えて下さいな!
0206TkNGNG
ActivePerlのTk.pmでGUIやっている人いますか ?
最近ちょっと作るものがあったのでやっているのですが、
これすごい落ちます。Cならメモリ管理関係で何かミスがあるのかと疑いますが、
Perlなので原因不明です。
もし、Tk使っている方がいましたら、よく落ちるのは普通なのか
漏れのプログラムがおかしいのか、漏れのPC(Windows)がおかしいのか助言頼みます。

落ちるタイミングは、日本語を一気に読み込んで表示する際です。
Shift_Jisなので得に問題ないと思いますが、ここで8割落ちます。
2割は落ちなくて正常に動くのでますます意味が分かりません。

WindowsXP, ActivePerl5.8.0です。
0207nobodyさん NGNG
>>205
エディタでそういうのを使うとか・・・


まぁ、自分で作ってる場合ですけど・・・
0208デフォルトの名無しさんNGNG
>>206
日本語一気に読みこんだ事ないから分からない。
出来ればその読み込む時の記述を見せてもらいたいものだ。
また、読み込む文字列とやらは常に同じ物か?
途中正規表現にかけていないか?
などなど。条件によっては落ちる。

>>205
実行中のプログラムがルーチンを認識して出力すると言う事?
テキスト状態の時のサブルーチンをエディタなどが認識できると言う事?

後者ならperlエディタってのがある。
0209デフォルトの名無しさんNGNG
>>205
エディタでツリー表示してくれる物探してるなら・・・・
PerlEdeitを・・・・と言う人が多いようだが、
JmEditの方が、まだ俺は使えると思う。
そうじゃなく、ただルーチンの一覧を出力したいなら、
Perlでも作れる。 勉強がてら作ってみるとよい。
0210デフォルトの名無しさんNGNG
perl質問箱に書き込みがなくて寂しい。。。(正確には面白くない、つまらない)
だから勝手になんか書きます。
どうしても返信したい人も勝手になんか書いてください。

perlの乱数について。読みたくない人は飛ばしてください。
乱数はけっこう使う。
ゲームを作っていると、必ず乱数が必要になるし、CGIだと、ランダムにメッセージを表示することもある。
だけど、perl標準の乱数を使うと効率が悪い。一般的にプログラムから出てくる乱数は擬似乱数と呼ぶ。
だが、実際の所は乱数に擬似もクソもない。何が出てくるか「分からなければ乱数」だ。
乱数には、性能の良さもある。現実でもプログラムでも同じ。
トランプを全然シャッフルしないと、1/52で何が出てくるか分からないけど、乱数の性能は悪すぎる。
多分連続した数字が連発する。
でも、52枚全部引いた時点でちゃんとなるから「1/52%」になる。
だから「1/52%」と言ってもダメなのと良いのがある。

上記までのこれ。長かったけど、前置き。
調べた。perl/Tkをwinで動かし、乱数の出方を。効率の良い出しかたとか、統計取った。
かなり面白い結果が出てきたから書く事にする。

でも、2ちゃんねるは連続投稿してると規制がかかるから、イキナリレス出来なくなるかもしれない。
0211210NGNG
まず、けっこう本を読んだけど、どの本もrand関数の説明がちょっと適当すぎる。
オライリーのプログラミングperlにいたっては、気に入らなければモジュールを使ってください。
と書いてある。

で、本には必ずsrand(乱数の初期化)は最初の1回きりで良いよ。
って書いてあるけど、場合によってはそれじゃ効率が悪い事が分かった。
ところで、rand関数では、絶対にやっちゃいけない事がある。これは本に書いてあったのではなくて、自分で解析した結果だ。
srand後の「1発目」の乱数を乱数だと信じて使ったらとんでもない事になる。
解析結果を書いても良いのだけど、実際動かしてみてほしい。
そのほうが面白いと思うから。

$no = 0;
while(srand($no)){
print rand(255) . "\n";
$no ++;
last if(255 < $no);
}

※↑今、普通に書いていったのでホントに動くかは分からない。
256回、初期化後「1発目の」乱数を出すはずだ。(初期値を1づつ変えながら)

あと、数字は適当に変えたりすれば結果も変わる。

0212210NGNG
多分、イチイチ動かした人なんて居ないと思うけど、
動かした人はこれは乱数じゃないな、と思ったはず。
ほとんど全部同じような数字になる。で、ちょっとづつ増えていく(小数点未満で増えていく)。
だから、intで整数に直してやったら全部同じ数字になる。

「初期化のしかたが悪い」これはもっともな意見だと思うけど、あながちそうでもない。
初期化の数字が「一つずつ」ズレて行った所で、さほど問題にはならない。
一般的に初期化に「time」とか「$$」とかを使うのは、起動毎に似通った事にならないのが目的であって、
1回しか起動しないのならsrand(255);とか、明示的に書いてやっても問題ない。

で、疑問なのは「2発目」の数字はどうなるのか。
$no = 0;
while(srand($no)){
rand;
print rand(255) . "\n";
$no ++;
last if(255 < $no);
}

今度は、1発目の数字を捨てて、2発目の乱数を取得する。
0213210NGNG
「2発目」の数字は、見事にばらけた。
「1発目」の数字が綺麗に順番に並んでいたのに対して、2発目は全く予測がつかない。
これは「3発目」の数字を取得しても「2発目と」同じ事だった。
つまり「2発目以降」から乱数と呼べそうな物が出てくるのである。

「1発目」に関しては、初期化を「srand($$ ^ time)」とかしても、
およそ乱数の範囲は限られ、そして小数点を切り捨てる(intする)とある程度数字が似かよる。
多分「1発目」は使うべきではない。

プログラム内では「rand」を使うと暗黙の内にsrandされるらしい。(←たしか5.5あたりから)
だからsrandは書かない事を勧めているような本が多い。
だが、やはり見える形(明示的)でsrandしたほうが良いに決まっているし、今回の解析で分かった通り、
sarndの直後に、
rand;
と書いて「一発目」を切り捨ててやる必要性がある。
暗黙にsrandされたのでは切捨てられない。


本当はまだたくさん面白い結果が出たのだけど、字を書くのは疲れるし、
キーボードが苦手で遅いのでまた今度。
あとでか、また明日くらいに。
0214206NGNG
LinuxのPerlだと1回目でもかなりバラけた値になった。
同じ種で混ぜた乱数は同じタイミングで同じ値になる。
srandして次の1っ発目のrandで毎回違った値が欲しいからtime( )とプロセスIDのANDで
種を決めているんじゃない?
個人的に srand($$);で問題ないように思える。timeを入れるのは、再起動なんかして
同じプロセスID時に全く同じ数を出してしまうからいれてるんじゃないかな ?
逆に、毎回同じ乱数を発生させたいときはsrand(255)など値を指定すれば、
全く同じタイミングで同じ乱数が発生するからID生成なんかに使えると。

アア、すみません、あまり意味が分かりません。
0215210NGNG
>>206
>LinuxのPerlだと1回目でもかなりバラけた値になった。
ええと、俺の環境はActivePerlの5.8です。
俺の解析結果(の一部)を書きます。

0:0.59375
1:0.640625
2:0.703125
3:0.75
4:0.796875
5:0.84375
6:0.90625
7:0.953125
8:1
9:1.0625
10:1.109375

左側が初期値の数。
右が「1発目」で出た乱数の数。
乱数の最大値は「512」で設定(決して「2」とかじゃないです)
綺麗に順番に並びました。こりゃ乱数じゃないですね。
「2発目以降」はこのような現象は見られず、まともに出てきます。

出来れば>>206の解析結果も知りたい所です。
って言うか、perlなら必ず同じ解析結果(数字)並ぶのかと思ってたよ…。


>同じ種で混ぜた乱数は同じタイミングで同じ値になる。
あと、こりゃ当たり前っすよ。w
0216510NGNG
ちなみに、初期値は0~512までで、
それぞれの「1発目」を出してみました。
randの最大値は512です。
つまり、最大値が512の乱数を「一つづつ」初期値を変えながら「512」個出しました。
それについての解析結果はこのようになりました。
0:8
1:20
2:19
3:20
4:20
5:19
6:20
7:19
8:20
9:20
10:19
11:20
12:19
13:20
14:20
15:19
16:20
17:19
18:20
19:20
20:19
21:20
22:19
23:20
24:20
25:19
26:14
0217デフォルトの名無しさんNGNG
>>214
time や $$ は種として推測しやすい値だから、
その種によって生成される乱数列もバレやすい。
乱数列をバレにくくする為に、
srand にバレにくい種を指定するか、
srand を呼ばないか (5.005 以降)、
モジュールを利用する。

Perl のヴァージョンによる s?rand の挙動の違いは 5.005 の
perldelta に載っている。
http://www.kt.rim.or.jp/~kbk/perl5.doc/perldelta.html
0218210NGNG
ええと、
左側が、int(小数点切り捨て)した時の数字で、
右側が、その数字が出た数です。

つまり、int(rand(255))で「255回」一発目を求めた時、
26と言う数字は14回出たわけですね。

最大値が255に設定されてるにも関わらず、
0-26までの乱数しか発生しなかったのは>>215で書いたように、
1発目が「必ず順番で」出てくるからです。
0219デフォルトの名無しさんNGNG
なんか頭痛がしてきた...

とりあえず、man srandしろ
0220210NGNG
今度はまた別の解析結果について。文でアルゴリズムを書いたら頭痛とか言われたので記述で書く。

$no = 0;
while(srand($no)){
rand;
print rand(255) . "\n";
$no ++;
last if(255 < $no);
}

この記述はさっきも書いたけど、まだ本当の(?)乱数とは違う。
(これは2発目を取得するヤツ)
これはどんな結果が返って来るのかと言うと、
整数に直した(int)場合、0~255まで「ほぼ全て」返ってくる。
つまり、超バラけて同じ数字が返って来ない(きにくい)ってヤツだ。
トランプを一枚づつ引いて行くにに似ている。
しかも、連番では出なかった。やはり超バラけている。

これは「本当の効率のよい乱数」ではないけど、かなり使い道がある。
CGIなどでランダムメッセージなどを表示するのに超都合が良い。
次に何が出るのか分からない上に、重複がほとんどないのだ。
0221210NGNG
もし、上記を通常の書籍が勧めるように

srand($$ ^ time);
rand;    #書籍には書いてないが1発目は捨てる。
$no = 0;
while(1){
rand;
print rand(255) . "\n";
$no ++;
last if(255 < $no);
}

などとやってしまうと、ランダムメッセージ的には重複の連続で、
しかも出てこないものはイツまで経っても出てこないというかなり効率の悪い結果になる事がわかった。
だが、統計を取ったところ、こちらのほうが自然的な乱数に近い。
0222210NGNG

なんか、これだけ書いておいてどうでも良くなってきました。
本当はもっとイロイロなパターンを出せるプログラムを作成した上で、
様々な角度から統計を取るプログラムも作りました。

と言う事でもっと多くの発見があったのだけど、やめます。
見てて面白かったとか、興味があったとか、ちょっと変わった人(?)が居たらレス下さい。
続き書きます。

Ps,解析はまだ続けています。解析プログラムもまだ作っています。
0223デフォルトの名無しさんNGNG
>>215,>>216
ひでぇ結果だな…。
0224デフォルトの名無しさんNGNG
やっぱ ActivePerl はショボイんだなという事がわかって
勉強になりました
サンクス!
0225デフォルトの名無しさんNGNG
とりあえず 210 には Perl 5.005 以降を使用して srand を使わないことをおすすめする。
0226210NGNG
>>224
ちょ、ちょい。
perlの種類によってrandのアルゴリズムが違うの!?
標準関数の内部処理は全部同じだと思いこんでたよ…。
それと、出来ればそちらの環境と結果を書いてほしいな。
めんどうでしたらいいけど。
0227210NGNG
>>225
いえ、ランダムの解析を楽しんでる(?)だけですから…。
あと、5.8の結果ですヨ。
0228デフォルトの名無しさんNGNG
折角だから、続き書いて欲しいんだけど・・・。
0229224NGNG
>210=226
じゃあ、書いといておこう

動かしたスクリプト
$no = 0;
while(srand($no)){
print int(rand(255)) . "\n";
$no ++;
last if(255 < $no);
}

結果は次
0230224NGNG
229 の続き

二箇所で試して両方とも全く同じ結果だった。
最初の十行のみ

perl -v の結果
This is perl, v5.6.1 built for i386-linux
This is perl, v5.8.0 built for i86pc-solaris

動かした結果
43
10
232
199
166
133
100
67
34
0231224NGNG
version 5.005_03 built for i86pc-solaris もあったので、
試してみますた

最初の十行のみね

0
131
7
138
14
145
21
152
28
159
0232210NGNG
>>228
ええと、どうゆうのがお好みで?
取り敢えず適当に書きます。

引数の指定なしで
rand();
とやった場合、1未満の小数点出ます。

よく本などでこれを多いに活用してるプログラムを見ますが、
俺の解析結果によるとこの小数はかなり使いにくいと出ました。
その理由っというのは、

*最後の2桁が必ず75か25になる。
*さらに一つの理由としては、桁数が安定しないのでなんか使いにくい。
*小数点未満は、いかなる方法で出しても数字がかたよりやすい(←ちょっとこれはもう1回解析入れてみます。具体的に書けるように)

これら上記の事は、最大値を100とかの整数にしても同じです。
俺は乱数は必ず大きめの数にして、intしてから使うべきだと学びました。

でも、環境によって標準関数の仕様が違うらしいって話が出てきたので、
そっちを先に調査したいと思います。
悪しからず。
0233224NGNG
>232
すまんが、それも俺の環境ではそんな結果にならんぞ、、。
0234210NGNG
>>229-231
あ、ありがとうございます。
明らかにrandの仕様が違いますね…。

ActivePerlはショボイのか…
俺も勉強になりました。
0235210NGNG
う〜ん。
ここまで仕様が違うと解析する気なくなって来た…。
解析しても意味ないじゃん。。。
あやうく「これがperlのランダムですよ」ってサイトに文章書く所だった。
危ない危ない。

そんな訳で、プログラミングperlに
Math::TrullyRandom
と言うモジュールが紹介されていたので、次解析する時はこれ使ってみようかと思います。
モジュール使えば性能良いし、多分仕様も同じになると思うから。

でも、めんどうになってきたのでしばらく解析はやめる。
そんなわけで役に立たない迷惑なレスを書き続けてしまいました。
ごめんなさい。
0236デフォルトの名無しさんNGNG
>>232
それが perl が rand について詳しく書いてない理由。
自分の ActivePerl で以下のコードを実行すると、まあまあ再現できた。
ちなみにこういうのを線形合同法って呼ぶ。

srand($_), print rand() . "\t" . (6*$_+76+int($_ * 0.535)) / 2**16 . "\n" for (0..7);

結果:
0.00115966796875 0.00115966796875
0.001251220703125 0.001251220703125
0.001373291015625 0.0013580322265625
0.00146484375 0.0014495849609375
0.001556396484375 0.001556396484375
0.00164794921875 0.00164794921875
0.00177001953125 0.0017547607421875
0.001861572265625 0.0018463134765625
0237デフォルトの名無しさんNGNG
というかperlのrandはlibcのrand呼んでるだけだから
激しく実装依存なのだが。

無駄な努力ごくろうさん
0238デフォルトの名無しさんNGNG
>>237
あーあ、言っちゃった(w
0239デフォルトの名無しさんNGNG
読んだ。
線形合同法の場合、一発目は捨てるって言ってたけど二発目も捨てる必要あるよ。
一発目と二発目を捨てて、初めて線形合同法が意図する乱数が生まれる。といった覚えがある。

0240205NGNG
>207
>209
どうもありがとうございました。
えぇ〜〜っと、言葉が足りなかったですね。
サブルーチンを呼出し順でツリー表示してくれるのを
探してたんです。
イメージとしては
+ sub1
| + sub2
+ sub3
+ sub4
みたいな?

やっぱりないのかなぁ〜。作るしかないか(×_×;)
0241210NGNG
>>236
おおお!
最初記述の意味が全く分からなかったけど、
perlが生成するrandと全く同じ処理を作ったわけですね。
(6*$_+76+int($_ * 0.535)) / 2**16
でも、なにがなんの数字だか分からなかったり。。。

この辺は自分で調べてみます。
う〜ん…。ちゃんと乱数生成のアルゴリズムを勉強してから解析。
それからここに来れば良かったカモ。

>まあまあ再現できた
出力部を見ると完璧に見えるのですが…。

>>237
あら。。ご愁傷様、俺。
>>239
そうでしたか、アルゴリズムの名前も教えてもらった事だし、検索してみます。

じゃあ、多大に失礼しました。
0242デフォルトの名無しさんNGNG
>>240
実行時にどういう順で呼び出されたか? なら、perl debuggerとかでダンプしてちょいと手を加えれば出来るけど。

呼ばれる可能性のツリーを期待してるなら俺には出来ん、スマソ
0243デフォルトの名無しさんNGNG
perlでhttpのプロクシ経由でhttpsのURLにアクセスするにはどうしたらいいですか?
0244デフォルトの名無しさんNGNG
こんなこと調べて何か解析してる気になってる>>210 はリアル中学生ですかね?
まぁがんがれ
0245デフォルトの名無しさんNGNG
>>244
言っちゃダメだってば
0246デフォルトの名無しさんNGNG
>>244
オメェーの方がつまんねぇ。何様のつもりだ?(w
0247デフォルトの名無しさんNGNG
>>244
source読む、ってことを知らないんだろ。ほっといてやれ
0248デフォルトの名無しさんNGNG
>>247
は?なにを言ってんの?
0249デフォルトの名無しさんNGNG
なんか微妙に必死なヤツがいるな(w

0250デフォルトの名無しさんNGNG
>>210:| 現  な  闘 i::::::::::::::::::::::::::::::
:::::::::::.ゝ 実   き   わ  ノ:::::::::::::::::::::::::::: 
:::::::::::/  と。  ゃ    イ:::::::::::::::::::::::::::::
   \_          ,,-'
――--、..,ヽ__  _,,-''   
:::::::,-‐、,‐、ヽ. )ノ      ∠_:::::::: 
:::::_|/ 。|。ヽ|-i、        ,-、ヽ|::::::::: 
/. ` ' ● ' ニ 、       |・ | |, -、:: 
ニ __l___ノ      ゚r ー'  6 |::
/ ̄ _  | i        i     '- 
|( ̄`'  )/ / ,..      ヽ 、   
`ー---―' / '(__ )      ,/ニニニ
0251デフォルトの名無しさんNGNG
あの大物アイドル〇○が脱いでる〜
登録してみたら得したよ(^^)v

★http://endou.kir.jp/betu/linkvp/linkvp.html
0252210NGNG
あらら。
俺が検索不足の話してしまったせいで荒れて(?)しまって…。

話しの内容的にはperlのrandではなく線形合同法の結果になってしまったようですが。
ついでですので線形合同法、その他アルゴリズムのランダム性の特徴は、
いつか気が向いた時にでも続けて調べてみようかと思います。あ、どうでもいいですね、こんな話。

今回のコトはここに書き込んだおかげで面白いレスを複数いただく事が出来ました。
特に動作環境の依存や、アルゴリズム(線形合同法)の計算法などの報告を貰って有意義に時間を使うことが出来ました。

210から続けて大量に書き込んでしまったので目には止まるかと思いますが、
好みの内容じゃないと感じた人はスルーしてやって下さいませ。

それじゃ、今度こそ失礼しようかと思います。
0253デフォルトの名無しさんNGNG
>>252
ここはお前のメモ帳ではない。市ね。
0254デフォルトの名無しさんNGNG
windows/activeperl環境で、
画像解析のために、jpg/gif/png画像を読み込んで、
ピクセルサイズや、ピクセル単位でのrgb情報の取得を行いたいのですが、
GD.pm ver2.0以上ではgifが読み込めないし、GD.pmの旧バージョンはactiveperl5.6以上で呼び出すと
落ちてしまうのですが、他にそういったことが可能なモジュール等はあるのでしょうか?
0255デフォルトの名無しさんNGNG
まぁ、ソース読むのも面倒くさいし、
いい暇つぶしになったからいいや。
0256デフォルトの名無しさんNGNG
>>210
Perlを勉強中の漏れにとってはかなり面白かった。
これからも話題を提供してください。
0257デフォルトの名無しさんNGNG
210の能書きなんてPerlの勉強と何の関係もないじゃん。
0258デフォルトの名無しさんNGNG
210の自演ウザー
0259デフォルトの名無しさんNGNG
>>210
rand について調べる以前に、

$no = 0;
while(srand($no)){
print int(rand(255)) . "\n";
$no ++;
last if(255 < $no);
}

から、例えば

for (my $no = 0; $no <= 255; $no++) {
srand $no;
print int rand 255, "\n";
}

という感じに書けるようになって欲しい。
上じゃわかりにくくてしょうがない。
0260 ◆hMJAPH9PWA NGNG
もっとPerl的に行きたい

foreach my $no(0 .. 255){
srand $no;
print int rand 255, "\n";
}
0261デフォルトの名無しさんNGNG
既に 210はどうでもいいわけだが

foreach my $no(0 .. 255){ ← これのコストってどんくらいなんだろね
極端な話 foreach my $no (0 .. 65535) はやりたくないよね
クリティカルな場面ならベンチでも取るが、普段はどうでもいいし、256位なら大した事も無いだろうし

感覚的に、どれくらいまでならリストでやる? > all
0262デフォルトの名無しさんNGNG
($n = 0; $n < 255; $n++)
と
$n(0 .. 255)
にコストの違いってあるの?
0263デフォルトの名無しさんNGNG
コストが気になるところでPerl使うのはいかがなものか。
0264デフォルトの名無しさんNGNG
手を動かしてるといたという点では >>210 は感心できる。

use Benchmark;
$N = 10000;
timethese $coount, { a => \&a, b => \&b, c => \&c, d => \&d , e => \&e };
sub a { my $i; for ($i = 0;$i < $N;++$i) {} }
sub b { my $i; 1 while (++$i < $N) }
sub c { my $i; ++$i for (1 .. $N) }
sub d { for (1 .. $N) { 1 } }
sub e { 1 for (1 .. $N) }

a: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 173.51/s (n=549)
b: 4 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 212.83/s (n=680)
c: 4 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 209.70/s (n=670)
d: 4 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 306.12/s (n=975)
e: 4 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 267.18/s (n=840)

理由は説明しきれないので、後は任せた。
0265デフォルトの名無しさんNGNG
なんか、レベルの高い会話の所恐縮なのですが・・・。

$subj="[回覧板 No.123]タイトル"

という文字列から、123だけを抜き取って$countに入れたいんですけどスマートな方法が思い浮かびません。
無茶するなら、

#"[回覧版 "と"No.123…"に分割
@temp=split(/\s/,$subj);

#"No.123…"を"No."と"123]…"に分割
@temp=split(/\./,@temp[1]);

#"123]…"を"123"と"]…"に分割
@temp=split(/\]/,@temp[1]);

#結果の取得
$count=@temp[0];

で出来そうですが、スマートじゃないですよね(;´Д`)
せっかくperlなんで正規表現使ってドカン!と一発で出来ないでしょうか?
0266デフォルトの名無しさんNGNG
>>265
$subj =~ /No\.(\d+)/;
$count = $1;

$subj =~ /^\[回覧板 No\.(\d+)\].*$/; の方が確実だけど
0267デフォルトの名無しさんNGNG
>>265
$subj =~ /(\d+)/;
$count = $1;
0268267NGNG
もう少しで結婚できたのに・・・。
0269デフォルトの名無しさんNGNG
($subj) =~ /(\d)/g;
0270デフォルトの名無しさんNGNG
+が抜けた
0271デフォルトの名無しさんNGNG
>>269-270
できないんだけど・・・?

$ perl -e '$subj = "abc 123 efg"; ($subj) =~ /(\d+)/g; print $subj;'
abc 123 efg
0272デフォルトの名無しさんNGNG
print $subj
ではなく、
print $1

$ perl -e '"abc 123 efg" =~ /(\d+)/ and print $1'
123
0273デフォルトの名無しさんNGNG
>>271
ああねぼけてる。ごめん。
($count) = ($subj =~ /(\d+)/g);
0274デフォルトの名無しさんNGNG
jperlのスクリプトをperl5.8で動かせると聞きました。
いろいろ調べましたがどうしてもわかりません。
どなたか教えてくれませんか。
ちなみに使用OSはredhat8.0でつ。
0275265NGNG
できたー。

ありがとー。
0276デフォルトの名無しさんNGNG
ファイルtext.txtの最後の行を変数$lastにいれるには
open(F,"text.txt");
while(<F>){
$last=$&;
}
close();
しかないですか?text.txtは行数が多いので時間がかかります。
最後の行から逆に一行ずつ読み込む関数というのはありますか?
0277デフォルトの名無しさんNGNG
質問があるのですが、誰かいますか??
0278デフォルトの名無しさんNGNG
>>265
見てないと思うが、上の方にある
$subj =~ /^\[回覧板 No\.(\d+)\].*$/;
の方がいいとおもうぞ。

($count) = ($subj =~ /(\d+)/g);
にすると、タイトルに数字が入るとそれも取得してしまうよ。
0279デフォルトの名無しさんNGNG
close(F);だ・・・
0280デフォルトの名無しさんNGNG
tailを使う
0281デフォルトの名無しさんNGNG
>>280
tailってunixコマンドでは?
0282デフォルトの名無しさんNGNG
>>278
同意。

というか、
($count) = ($subj =~ /(\d+)/g);
これだと $count にはマッチしても 1 しか代入されないんじゃないか?
0283265NGNG
>>278
正規表現、今日手をつけたばかりなので詳しい事はわかりませんが、今回その
手法は使えないかな?

メールのサブジェクトを見て「[回覧板 No.dd]…」だったら回覧板宛のレスだと判断。
サーバーの保存された該当番号の回覧板ファイルを参照して、メール本文を追記。

もし、それ意外のタイトルだったら新規の回覧板(回覧板本文の意)として認識する
様に作っています。

よって、$subjはメールから取り出すのでそれ自体はいじれません。


$subj="[回覧板 No.30]タイトル123";

if ($subj=~/\[回覧板\sNo\.(\d+)\]/){
$subj=~/(\d+)/;
$count=$1;
print "$1\n";
}else{
#新規の場合の処理
}

としました。ちゃんと30が帰ってきましたよ(^-^)v
0284278NGNG
>>283
それなら大丈夫かな。

$subj =~ /(\d+)/g
のように、グローバルマッチのオプションがついてると微妙ですが、、、
0285デフォルトの名無しさんNGNG
>>276
行数にもよるが

open (F, "text.txt");
 @afo = <F>;
 $line_num = $#afo; #これでトータルの行数-1を$line_numに代入される
 print @afo[$line_num]; #多分これがファイルの最終行


最後の行から読み出す方法ってreverseを使う以外になんかあったっけ?
0286デフォルトの名無しさんNGNG
pop
0287デフォルトの名無しさんNGNG
>>285
まだ>276の方がマシ
0288デフォルトの名無しさんNGNG
seekで末尾からある程度のブロック後ろに移動したあと、
変数に代入していく、とかはダメかね。
1行の長さがある程度事前にわからないとダメだけど、
改行が見つからなかったら、今度はその2倍戻るとか。


open(FILE,"dekai.txt");

my $last;
my $offset = 1024;
TAIL: {
my $i;
seek(FILE, -$offset, 2);
until(eof) {
$i++;
$last = <FILE>;
}
if ($i == 1) { $offset *= 2; redo TAIL }
}

close(FILE);


うーん、やってみたものの、大して早くないかも知らん(−−;
まぁ276のでいいと思うのですが。ちょっと思いついたので書いてみますた。
0289デフォルトの名無しさんNGNG
mmap
0290デフォルトの名無しさんNGNG
tailはどういうアルゴリズムなんだろう?
0291デフォルトの名無しさんNGNG
後ろから前に向かって一文字ずつ読み、改行文字の数を数えればいいのでは。
0292デフォルトの名無しさんNGNG
>>291 どうやって?
0293デフォルトの名無しさんNGNG
Perl で作るのでまずここで聞かせてください。
ユリウス日を求める式みたいなのを教えてください。
入力はシステムクロックではなく年月日時分秒の数値です。
実は既にいろいろ見つけていますが、人によって係数などが違うので
何か正しそうなやつの例を1ついただければそれでいいです。
0294デフォルトの名無しさんNGNG
>>290
実装次第だが、GNUのは>>288みたいんじゃなかったかな。
0295293NGNG
補足
1年の最初から何日目とかいうやつじゃなくて
紀元前4713年から何日目ってやつです。
0296デフォルトの名無しさんNGNG
http://search.cpan.org/search?query=Julian&mode=all
中身見てないけどこの辺?
ソース見ればその係数とやらは分かると思うけど
0297デフォルトの名無しさんNGNG
>>292
fseekとfgetcを組み合わせて。
効率が悪いなら最初に行数を調べるという手もある。
0298293NGNG
>>296
あああ、そういうモジュールがあるんですね。
どうもモジュールは嫌いなので忘れてました。
そちらを見てみることにします。
どうもありがとうございました。
0299デフォルトの名無しさんNGNG
>>297
> 効率が悪いなら最初に行数を調べるという手もある。
行数を調べること自体効率悪そうだが。
0300デフォルトの名無しさんNGNG
>>297
死ぬほど遅そう。
seek ができるくらいなら mmap 使ったほうがいい。
0301デフォルトの名無しさんNGNG
>>300
標準だけでできる方法ってことで。
0302301NGNG
メモリに展開するくらいなら標準でいくらでもできるか。でもファイルがでかいと・・・
0303デフォルトの名無しさんNGNG
>>210
ttp://www.math.keio.ac.jp/~matumoto/mt.html ってどう?
0304tailNGNG
open(FILE,$ARGV[1]) or die "failed";
$list=<FILE>;
close(FILE);
$i=$#list-9;
if($i<0){ $i=0; }
while($i<=$#list){
print $list[$i++];
}

0305tailNGNG
open(FILE,$ARGV[0]) or die "failed";
@list=<FILE>;
こうだ
0306デフォルトの名無しさんNGNG
# こんなのどうよ?
my $line = 1;
my @line = ();
open(F,"file");
while(<F>) {
  push(@line, $_);
  shift(@line) while @line > $line;
}
close(F);

# shift,unshift,push,pop はウンコな位遅い気もするが。
0307デフォルトの名無しさんNGNG
お楽しみのところすみませんが
http://www.din.or.jp/~ohzaki/perl.htm#File_Reverse
0308デフォルトの名無しさんNGNG
すまん、これから会議で中見てる余裕無いんだが
http://search.cpan.org/author/MGRABNAR/File-Tail-0.98/Tail.pm
これ見てみると面白そうだな

つか、既に3分遅刻だ(ワラ
0309デフォルトの名無しさんNGNG
>>307
ややこしいのう
0310デフォルトの名無しさんNGNG
>>307 >>309
なら、少し簡単にしたものを。元のPerlメモのよりは速い。
(自分で組んだルーチンではこれに勝てなかった。)
結局、binmodeとかseek(,,0)とかがかなり影響を与えている模様。

open(FILE, "< $file");
binmode(FILE);
$pos = (-s FILE);
while (!$last_line && $pos--) {
seek(FILE, $pos, 0);
read(FILE, $buf, 1);
$buf .= $buf_tmp;
($buf_tmp, $last_line) = $buf =~ /[^\x0D\x0A]*\x0D?\x0A?/g;
}
close(FILE);
return $last_line;
0311デフォルトの名無しさんNGNG
まずどういうのを正しいとするか決めろよ
0312311NGNG
ミス スマソ
0313デフォルトの名無しさんNGNG
0とヌル文字列とundef 以外は正しい。
0314デフォルトの名無しさんNGNG
>>311
早いものじゃないのかあ
0315デフォルトの名無しさんNGNG
美しいものは正しい

さて諸君、美しいを定義したまえ
0316デフォルトの名無しさんNGNG
私は美しい
0317デフォルトの名無しさんNGNG
その前に定義を定義しようよ
0318デフォルトの名無しさんNGNG
再帰を定義しようぜ!
0319デフォルトの名無しさんNGNG
斎木しげる
0320デフォルトの名無しさんNGNG
>>320
0321デフォルトの名無しさんNGNG
>>320
0322デフォルトの名無しさんNGNG
サブルーチンの最初でmyで変数宣言みたいなことするのって
効率悪いですか?
0323デフォルトの名無しさんNGNG
sub answer {
my $res_number = shift;
print("それって普通じゃないか?$res_number\n");
}
&answer(">>322");
0324デフォルトの名無しさんNGNG
>>173は?
0325デフォルトの名無しさんNGNG
>>324
myの処理は宣言無しと同じか、それより速いと思ったが。
use strict;マンセー。
0326デフォルトの名無しさんNGNG
それは局所化の宣言だから。
早くなる。
変数は使われるたびに自分がドコに所属してるのか記述をさかのぼって調べるけど、
myの場合さかのぼる量が極端に少なくなる。

by.173

>>322
初めて使われる時にmyするのが普通。
宣言したあと、使われる前にリターンされたら宣言自体がいらん処理になる。
もし、リターンのあとにmyなら、そんな変数自体もともとなかった。って方向で落ちつく。
0327デフォルトの名無しさんNGNG
ソースいじってるうちに、
使ってからmyになりそうだ
0328デフォルトの名無しさんNGNG
>>327
use strict;
0329デフォルトの名無しさんNGNG
Hで上手いアイコラを発見っ!(*´Д`*)ハァハァ
このコラ上手すぎ!でもワレメはまずいだろ。(*´Д`*)ハァハァ
http://plaza16.mbn.or.jp/~satchel/turuturu/
0330デフォルトの名無しさんNGNG
神さま教えてください。

以下のサブルーチンの処理中、必ずdieしてしまいます。
DBへアクセスする際の書式が変な気がするのですが…よく分かりません。

sub new {
my ($pkg, $loc) = @_;
my $d = {};

tie (%{$d->{dicc}}, 'DB_File', $loc, $DB_File::O_RD, 0644, $DB_BTREE)
|| die "diccionary->new: error opening database\n";

return bless $d, $pkg;
}

Perlのバージョンは5.6.1、
DB_Fileモジュールのバージョンは1.806、
Berkeley DBのバージョンはここでは1系列です。
0331デフォルトの名無しさんNGNG
diccionary
0332330NGNG
>>331
_| ̄|○dictionary
0333 ◆hMJAPH9PWA NGNG
>>330
$DB_File::O_RDが怪しい。

open定数はO_RDONLY O_WRONLY O_RDWR で、これらは変数ではないので"$"をつける必要はないよ。
0334デフォルトの名無しさんNGNG
Net::DNS の質問です。

以下のコマンドと同じように、ROOT SERVER に問い合わせて、
jp ドメインの権威を持つサーバを検索したい場合には、どう
いうメソッドを使うのでしょう?

dig @a.root-servers.net -t NS -c IN jp

Net::DNS::Resolver の nameserver メソッドに a.root-servers.net
をセットしてから query してみても何も返って来ませんでした。
0335デフォルトの名無しさんNGNG
Perlのいいデバッガっていうか
irbみたいにちょっとコマンドラインでテストするのに使いやすいのないですか?
今はperl -de使ってるんですけど
0336 ◆hMJAPH9PWA NGNG
>>335
Devel::ptkdbがけっこう面白いよ。まだバグだらけだけど。
0337330NGNG
>>333
Thxです。

そこを疑って自分でもO_RDONLYなどに書き換えてみたのですが、
必ずdieしてしまう挙動に変わりはありませんでした。

確かに今DB_Fileのperldoc等を見てもopen定数に"$"をつけろとかはどこにも書いてありませんが、
このスクリプトが書かれたのはPerlが5.005とかの時代らしいので
DB_Fileのopen定数の書き方も違ってきてるのかもとか思ってます。
0338デフォルトの名無しさんNGNG
or or or or
0339デフォルトの名無しさんNGNG
オアオアうるさいな
0340デフォルトの名無しさんNGNG
orだよor。||じゃないんだよ。マニュアルと同じ書き方しなさいってこった。
0341 ◆hMJAPH9PWA NGNG
>>337
$locが正しいファイル名で正しいパーミッションかどうかを確認する。
あと-wスイッチの元で動かしてみる。

…ああそういえば、読み込み専用では開く事は出来なかった気がするから、
O_RDWRにしてみて。

>>340
このケースでは無関係
0342デフォルトの名無しさんNGNG
´−`)。oO( O_CREAT|O_RDWR でいけたなんてオチだとヤだな…。)
0343デフォルトの名無しさんNGNG
perlでファイルハンドルからパスを求める方法はありませんか?

ここに「どんなものであれ、そのアドレスを得ることはできない」とか
書かれてますがマジですか?
http://flex.ee.uec.ac.jp/texi/perl/perl_204.html
0344デフォルトの名無しさんNGNG
||がいいな。他言語に慣れるとorは読みにくい。

俺のソースは癖ありすぎてだめぽ。
0345デフォルトの名無しさんNGNG
>>343
そのファイルハンドルはどうやって生成したんでしょうか。
0346デフォルトの名無しさんNGNG
>>344
他言語とか言っているが実はCとそれに似せたC++、Java、C#だけのことしか言っていない罠。
実は世界が狭いのだよ。
0347デフォルトの名無しさんNGNG
PerlもCの構文をまねたものなんだから||の方があっていると思う。
0348デフォルトの名無しさんNGNG
優先順位
0349デフォルトの名無しさんNGNG
いちいち()をつけるくらいならorのほうが数倍いい。
0350デフォルトの名無しさんNGNG
>>345
適当な相対パスから生成しました。
求めたいのは絶対パスです。
0351デフォルトの名無しさんNGNG
>>343

> この日本語 perl texinfo は、基本的に perl 4.0 パッチレベル 19 のオンラインマニュアルを
> 日本語訳し、そのセクション分けに対応したノードに分割したものです。

おそらく、そのページでいうアドレスというのはCでいうところのポインターのことだと思われ。

それはさておき、「ファイルハンドルからパスを求める」というのは
open IN, '../foo/hoge.txt' or die;
したときに、IN から '../foo/hoge.txt' を求めたいということ?
0352 ◆hMJAPH9PWA NGNG
>>350
ファイルハンドルはファイルとは無関係な場合があるので、パスは格納されていない。
openのときに使ったファイル名を保存しておくしかないよ。
0353デフォルトの名無しさんNGNG
優先順位もそうだけど、orの方が「さもなければ」って直感的に読めるから好き。
open() or die; 開け。さもなければ氏ね。
0354デフォルトの名無しさんNGNG
(同じ動作なら)どっちでもいいと思って使ってる漏れはボツでしょうか?
0355330NGNG
>>341
>>342
Thxです。

ファイル名とパーミッションも問題なく、
open定数をO_RDWRやO_CREAT|O_RDWRに書き換えても変わらず。
単独で動かすといろいろ面倒なので-wオプションは試してません。

"$DB_File::"があってもなくても同じようにdieするので、
この部分は問題でもなんでもないってことなのでしょうか。

とりあえずハッシュにデータ蓄えるだけのミニマルなスクリプトを書いて、
もし動かなかったら環境の再構築を考えてみます。
もしくは開発元に問い合わせ。
0356デフォルトの名無しさんNGNG
>>354
同じじゃないもん。
局面においては同じような挙動を示すけど、それって混乱の元じゃない?
0357354NGNG
同じ動作をする場合の時って意味ね。
でも、orを使うことが多いかな。
極力||は使わないようにしてる。

記述自体を文字リテラルとして扱うとき
$aaa = q|
#記述
|;

って普段書くから。
0358デフォルトの名無しさんNGNG
$a or= $b
って使えたっけ?
0359デフォルトの名無しさんNGNG
$ perl -e "$a or= $b"
syntax error at -e line 1, near "or="
Execution of -e aborted due to compilation errors.
0360 ◆hMJAPH9PWA NGNG
>>355
いや、99%君の書き方が悪いから上手く行かないんだと思うよ。

>単独で動かすといろいろ面倒なので-wオプションは試してません。
「試してません」って…苦労したくないなら-wオプションは使うべき。

>"$DB_File::"があってもなくても同じようにdieするので、
"$DB_File::"が何を意味するのか分かって書いてる?
多分、何かを勘違いしてるよ。

とりあえずソース見せて。
0361デフォルトの名無しさんNGNG
ほっときゃいいじゃん。-w使わない>>330の自業自得だし。
0362デフォルトの名無しさんNGNG
メールをマルチパート分割して
添付ファイルと本文を抜き出す処理を工作しております。
MIME::Perser を使うとできそうなんですが
この他にも何かラクチンな方法があればご助言くださいませませ。
0363マルチNGNG
当方、WinXP, ActivePerl5.6.1です。
次のスクリプトを実行しても、ホスト名を得たいのですが、改行しか得られません。
これって、DNSに問い合わせができてないのでしょうか?
print scalar(gethostbyaddr(pack("C4", split /\./), 2)), "\n" while (<DATA>);
__END__
210.81.150.5
0364デフォルトの名無しさんNGNG
>362
munpack
0365デフォルトの名無しさんNGNG
まだ>>350はいるかー?
上の方にあがっていたスレを見てわかったぞ。
use POSIX;してPOSIX::getcwd();で得られるもの(現在の作業ディレクトリ)と相対パスをくっつければいいんだ。
開いた後にchdirしていたらそれだけではうまくゆかないけど。
0366365NGNG
いや、Cwdモジュールを使えばいいか。
0367デフォルトの名無しさんNGNG
スカラー変数(文字列)のサイズを知るにはどうすれば良いですか?
0368デフォルトの名無しさんNGNG
length($a);
0369デフォルトの名無しさんNGNG
>>368
長さじゃねーよ馬鹿
サイズを知りたいんだよ。
0370デフォルトの名無しさんNGNG
length($a)*2
0371デフォルトの名無しさんNGNG
>>370
w
0372デフォルトの名無しさんNGNG
>>370
上手く出来ました。ありがとう。
0373367NGNG
質問が悪かったです。
スカラー変数の大きさ(バイト)を知りたいです。
0374デフォルトの名無しさんNGNG
ん?スカラー波でてる人?
0375デフォルトの名無しさんNGNG
>>373
C言語のsizeofみたいなものか?
そんなものないよ。
0376デフォルトの名無しさんNGNG
Perlのプログラム実行時間を計るのには、どうしたらいいですか??
0377デフォルトの名無しさんNGNG
time
0378デフォルトの名無しさんNGNG
use Benchmark;
0379デフォルトの名無しさんNGNG
stopwatch
0380デフォルトの名無しさんNGNG
>>376
プログラムの一行目に
$start=time();
最後に
$goal=time();
print $goal-$start;

とかけ。
0381367NGNG
>>375
そうです。
どうすればいいんでしょう?
0382m.mNGNG
こんにちは!誰か教えていただきたいんですけど、
私perlを使ってCGIで掲示板作りたいんです。まだ
初心者です。でも、最近カウンターの作り方は覚えました。
掲示板作りたいんですけど、いまいち検索かけても
掲示板の作り方とか見つけられないんです。本を買っても
いいんですけどお金かかりますし。。。。
いいサイトを知ってる方がいましたら是非是非教えてください!
0383デフォルトの名無しさんNGNG
minibbsのソースでも見てろ
0384デフォルトの名無しさんNGNG
そうだね、人のスクリプト見て色々いじりながら理解していって、
それから作るのがいいと思うよ
0385名無し~3.EXENGNG
perl入門書でスタンダードなのがありましたらお教えください。
0386デフォルトの名無しさんNGNG
>>381
ないのは必要ないから。
いったいどんなことに使うんだよ。
0387デフォルトの名無しさんNGNG
>>381
バイナリでもいじるの?それなら pack,unpack 。
0388デフォルトの名無しさんNGNG
perlのクラス間(継承関係はなし)のやりとりって可能ですか?
C++だとfriendとかあったと思うけど(勉強したの昔だから忘れた)
0389 ◆hMJAPH9PWA NGNG
>>388
C++のfriendにあたるものなら、ない。というか、必要ないよ。
Perlでは基本的にメンバのアクセス制限は存在しないから。
0390デフォルトの名無しさんNGNG
プロトタイプ宣言した再帰関数って作れるの?
なんかよくプロトタイプが確定する前に呼ぶなやゴルァって
Perlタンに怒られうんだが
0391デフォルトの名無しさんNGNG
何故試さない?

#!/usr/local/bin/perl
use strict 'vars';
sub main::a($);
main::a(0);

sub main::a($){
my($c)=@_;
print "($c)\n";
(10 < $c) && return 0;
main::a($c+1);
}
0392デフォルトの名無しさんNGNG
配列の中身をランダムに入れ替える方法を教えてくだそい
0393デフォルトの名無しさんNGNG
sub fisher_yates_shuffle {
 my $array = shift;
 my $i;
 for ($i = @$array; --$i; ) {
  my $j = int rand ($i+1);
  next if $i == $j;
  @$array[$i, $j] = @$array[$j, $i];
 }
}

fisher_yates_shufftle( \@array );

クックブックから
0394デフォルトの名無しさんNGNG
リア厨のころからずっとこのアルゴリズムだな
ポケコンでトランプゲームとか作るの
0395デフォルトの名無しさんNGNG

use List::Util qw/shuffle/;
my @a = (1..10);
@a = shuffle @a;
0396デフォルトの名無しさんNGNG
@after =
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, rand] }
@before;
0397デフォルトの名無しさんNGNG
配列の中をランダムでいれかえる。

foreach($aaa[int(rand(@aaa))];){
push @bbb, $_;
}

全然動作確認してないけどこれはどうだ!?
コンパクトな感じ。でもループんとこが怪しいような…。

ランダムで抜き取る時は日頃から
$bbb = $aaa[int(rand(@aaa))];
こう書いてます。
0398デフォルトの名無しさんNGNG
駄目な気がする
0399デフォルトの名無しさんNGNG
397でsplice使えばいけそうだなぁ。それはそれで微妙そうだけど。
0400デフォルトの名無しさんNGNG
ちょっとした疑問なんですが、
連想配列ってなんで hash って言うんですか?
ハッシュドビーフの hash ですよね。
切ってゴチャゴチャにするという。
0401デフォルトの名無しさんNGNG
連想配列が配列と紛らわしいからハッシュに名前が変わったらしいです。
0402デフォルトの名無しさんNGNG
>>400
「ハッシュテーブル」という古典的構造を使ってるから。
0403デフォルトの名無しさんNGNG
flock()について勉強している者です。
前々スレ554氏の
「openしてからflockまでの間によそのプロセスが開けちゃわない?」
という言葉が気になって気になって眠れません。
開けても読み込みがまだなら大丈夫なのか、この隙には割り込めないようになっているのか、
1行くらいの隙間は諦めるしかないのか、どうなんでしょうか?
0404デフォルトの名無しさんNGNG
554がおかしい。
開いても書き込み(又はファイルサイズをゼロにする)がまだなら大丈夫。
0405403NGNG
そうなのですか・・どうもありがとうございます。

しかし、openしてからflockまでの間によそのプロセスがopenできてしまうと言う事は、
そのプロセスで何かやってもよそのプロセスによってファイルへの書き込みが
上書きされてしまうような事になるように思います。

と言う事は、アクセスの集中による入力蹴られはflockでは防げないと考えて良いのでしょうか?
0406デフォルトの名無しさんNGNG
> そのプロセスで何かやってもよそのプロセスによってファイルへの書き込みが
> 上書きされてしまうような事になるように思います。

上書きしなければよい。
0407デフォルトの名無しさんNGNG
そもそもflockは(そのファイルを扱う)他のプロセス全てがflockすることが前提。
その条件なしでは、タイミングも何もない。
0408403NGNG
多分理解しますた。
後は自分で実験して頑張ってみます。
どうもありがとうございました。
0409デフォルトの名無しさんNGNG
ところで、このスレ(前スレも)まとめてるサイトとかってありますかね
なにかと世話になってるんで、無いならママーリと作ろうかと思って
0410デフォルトの名無しさんNGNG
>>409
ママーリという言葉が謎だが、やるならがんがれ。
0411デフォルトの名無しさんNGNG
ハッシュの読み出しに使っている反復子を保存しておくことって出来るんでしょうか。

sub AAA {
  my $a=shift;
  while (($key,$val)=each %hoge) {
    if ($val=~/$a/) { # $valの一部に$keyが含まれていたら
        &AAA($key);
          :
    }
  }
}

みたいな再帰関数があるのですが、反復子を共有するので再帰になりません。
でかいハッシュなので、それだけの為にコピーしたくもありませんし。
0412デフォルトの名無しさんNGNG
携帯電話からメールを出すとweb上に掲載される掲示板を作ったのですが、
iモードの絵文字を使うと 〓 が出てしまいます。
ちゃんと絵文字を表示する良い方法はないでしょうか?
ちなみに、携帯からPC宛にメールを出しても 〓 が出ますよね?
これと同じで仕方ないことなのでしょうか?
0413デフォルトの名無しさんNGNG
>>405
もう >>407 で分かったのかもしれないけど、flock は open や write を
排他するのではなく、(他プロセスの) flock を排他するもの。

他人が書けなくなる(=write がエラーするとか)、ではないことに注意
0414デフォルトの名無しさんNGNG
>>412
Docomoの絵文字はDocomoでないと無理。代替画像でも用意すれば?
0415デフォルトの名無しさんNGNG
ケータイの絵文字を画像に置換したらよい。
Docomoとかauとかのサイト見たら
絵文字画像があるので、その辺を参考にしながら手書きすれば?
0416デフォルトの名無しさんNGNG
HTTP-Liteをインストしようとしてるのですが、
.ppdがあるフォルダに移動して、
ppm install http-liteとやると
error installing package 'http-lite':could not locate a PPD file for package http-lite
↑のエラーがでます。なにが原因なのでしょうか?
0417403NGNG
>>413
一応それは分かっているつもりですた。


仮にhage.txtに「はげ」と書かれていたとして、
以下のスクリプトを2回ほぼ同時に実行した場合、

open(FILE, "+< hage.txt"); # ←A
flock(FILE, 2); # ←B
$txt = <FILE>; # ←C
$txt = $txt."ほげ";
truncate(FILE, 0);
seek(FILE, 0, 0);
print FILE $count;
close(FILE); # ←D

早い方のプロセスのAとBの間で遅い方のプロセスがhage.txtをopenしたとすると、
flockのために遅い方のプロセスがCを実行するのは1回目のプロセスがDまで行った後となるはずですが、
その時に$txtに入るのは「はげ」なのか「はげほげ」なのか?
遅い方のプロセスが終わった時にhage.txtに入っているのは「はげほげ」なのか「はげほげほげ」なのか?

>>405で言いたかったのはこのような事ですた。
0418403NGNG
でももういいんです。
だってウチのMacPerlったらflock()使えなかったんだもの(鬱氏

長文スマソ。お騒がせしますた。逝ってきます…
0419デフォルトの名無しさんNGNG
コマンドでperl hoge.cgiだと正常に動作するが(perl -wc hoge.cgiでsyntax OK)

web上からだとforbiddenになってしまうけど、
一番考えられる原因はどこよ。
0420デフォルトの名無しさんNGNG
パーミッション
0421デフォルトの名無しさんNGNG
>>420
すまん。書き忘れた。
パーミッションぐらいで質問しないよ。
0422デフォルトの名無しさんNGNG
httpd の設定。
0423デフォルトの名無しさんNGNG
パーミッション
0424 NGNG
多分パーミッション
0425デフォルトの名無しさんNGNG
頭がパー以下略
0426デフォルトの名無しさんNGNG
>>411
リファレンスを渡すんじゃ駄目なの?
0427デフォルトの名無しさんNGNG
>>419
403ならパーミッション
0428デフォルトの名無しさんNGNG
>>419
デーモンの設定な気がするが...
cgiファイル置いてるディレクトリにCGIの実行権限はある?
って言うかCGI関連はスレ違いじゃなかったっけ?
0429411NGNG
>>426
なるほど〜、リファレンスですか。
まったく考えていませんでした。
ありがとうございました。
0430426NGNG
>>429
今見たら

sub AAA {
  my $a=shift;
  while (my ($key,$val)=each %hoge) {
    if ($val=~/$a/) { # $valの一部に$keyが含まれていたら
        &AAA($key);
          :
    }
  }
}

のような気もせんではないけど・・・・
0431411NGNG
>>430
そうでした…。
プログラム例を書き写す際に欠落しました。スマソ。
0432ぬるぽNGNG
漏れすごいあほ。

"abcde"という文字列があるとき、
それぞれの文字の前にある決まった文字列を入れる場合はどうするの?
例えば"AHO"を付加したい場合
"AHOaAHObAHOcAHOdAHOe"になって欲しいのーーん。ノンノン!
0433デフォルトの名無しさんNGNG
(σ・∀・)σゲッツ!!ならココ!
http://www3.kcn.ne.jp/~barozza/

とっても ageなサイトかもぉ
0434デフォルトの名無しさんNGNG
>>432
my @splited_chars = split('', "abcde");
my $result;
map { $result .= "AHO$_"; } @splited_chars;
print "$result\n";
0435デフォルトの名無しさんNGNG
>432
s/(.)/AHO$1/g
0436434NGNG
かぶらないようにまわりくどいほうほうをかいたんだ。
せいきひょうげんをしらなかったわけじゃないぞ。
フォルゴレはつよいんだ。みてろよー。
0437デフォルトの名無しさんNGNG
漏れも、434のかきかたするなぅ・・・

それ以前にアスキーコードでしかつかえんね・・・コレ(w
0438ぬるぽNGNG
>>434,435,437
マジ愛してる
とりあえず漏れのレベルに合わせて435のやつでいくよ!いっちゃうよ!
$1ってのがわからんかった。lvが$1上がった気分。
0439デフォルトの名無しさんNGNG
>>438は レベルが $1 あがった!

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>438
0440デフォルトの名無しさんNGNG
map { $result .= "AHO$_"; } @splited_chars;
はmapの使い方として推奨されてない気が。
434だったら、
join "" => map { "AHO", $_ } split('', "abcde");
な感じでFA。
0441デフォルトの名無しさんNGNG
>>437
perlはunicodeもサポートしてますが(w
0442デフォルトの名無しさんNGNG
Unicode以外のコードもあるのを忘れとるよ〜
0443デフォルトの名無しさんNGNG
>>442
そのためのEncodeモジュールじゃないの?
といってもEncode::JPは変換がおかしいけど。
0444デフォルトの名無しさんNGNG
漏れも split をしたら、join でつなげたくなるな

join "AHO", split( //, "abcdef")

って感じ。もうひとつ、行頭に "AHO"がいるが。
0445デフォルトの名無しさんNGNG
すみません。
複数の検索エンジンにワードを投げて、その結果をまとめてから出力する、
というcgiを書いています。

$URL{$key[$num]}に検索エンジンのアドレスとと検索ワードを付け加えたURLを格納して、

`wget $URL{$key[$num]}`や
$html = `w3m -dump_source $URL{$key[$num]}`
などのようにして、検索エンジンにワードを投げた後に出力するhtmlを取得しようと思ったのですが
どうしても上手くいきません。

どなたか、解決方法をご教授してください…(;´д`)
0446デフォルトの名無しさんNGNG
>>1
0447デフォルトの名無しさんNGNG
「どうしても上手くいきません」で解決方法がわかる人は宇宙人です。
0448デフォルトの名無しさんNGNG
あ、どもすみませんでした。Web板逝ってきます。
0449デフォルトの名無しさんNGNG
地球が宇宙にある以上、地球人も宇宙人です
0450デフォルトの名無しさんNGNG
もしかしたら、地球は宇宙じゃないのかもしれないよ。もしかしたらね。
0451デフォルトの名無しさんNGNG
× 地球 IS-A 宇宙
○ 宇宙 HAS-A 地球
045211NGNG

以下のアルファベットのAからZまでの中から「BCD」を開始位置、「TUV」を終了位置とし、
その間の文字列の抜き出しと、その文字数を調べる問題なのですが、どうもうまくいきません。
まだ勉強したてなので、どなたか教えてください。


$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$x=index($str,BCD);
$y=index($str,TUV);
print 'BCD開始位置=',"$x";
print 'TUV終了位置=',"$y";
@data=split(//,$str);
$result=scalar(@data);
print "$result";
exit;
0453デフォルトの名無しさんNGNG
>452
宿題は自分でやれ。
0454デフォルトの名無しさんNGNG
>>452
splice
045511NGNG
>453
宿題ではないですが、これを解きたいんです。
>454
ありがとうございます。
splitではなく、spliceという意味でしょうか?
0456デフォルトの名無しさんNGNG
>452
文字列の抜き出し=substr
文字数を調べる=$y-$x
自分で考えなきゃ問題解いた事にはならないだろ。
045711NGNG
>456さん
頂いたヒントを元にやってみました。
時間はかかりましたが、なんとか出来上がりました。
ありがとうございました。

str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

$x=index($str,BCD);

$y=index($str,TUV);

print 'BCD開始位置:',"$x\n";

print 'TUV開始位置:',"$y\n";

$len=length($str);

$kouho= substr($str,$x,$y+1);

print '結果=',"$kouho";

exit;



0458デフォルトの名無しさんNGNG
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str =~ s/(\w|\W)+(BCD)(\w+|\W+)(TUV)(\w|\W)+/$2$3$4/;
$len=length($str);
print "str:$str\n";
print "length:$len\n";
exit;
0459デフォルトの名無しさんNGNG
perlでは論理シフトと算術シフトってどう区別されてるんでしょうか?
0460デフォルトの名無しさんNGNG
$ perl -Minteger -e "print(-8 >> 3)"
-1

となるから算術シフト?
0461デフォルトの名無しさんNGNG
Windowsでperl -Dができるperlパッケージってないですか?
ActivePerlのFTPとかにおちてないかなぁ
0462デフォルトの名無しさんNGNG
無いだろ。自分でコンパイル汁
0463デフォルトの名無しさんNGNG
>>459
ここらへんは、perlにしては珍しく変数の型がそのまま使われる。
と言う事で、一応perlでもなんの変数なのか認識しとく必要がある。

余談だけど、型はしっかり意識して使っといたほうが良いヨ。
数字に対して「文字列比較演算」とかしたら、
内部で文字型に変換されて、比較して、その後また数字型に直す。
なんて言うようなクソ作業が始まるから。

0464デフォルトの名無しさんNGNG
while なんかで大き目のファイルをぐりぐりパーズするスクリプトは
while の部分を eval {} で囲んだ方が効率が良いらしいのですが、
本当でしょうか?
また、本当なら何故効率が良くなるのか教えていただけないでしょうか?
0465 ◆hMJAPH9PWA NGNG
>>463
内部実装を意識した方がいいというのは同意だけど、意識しすぎるのは無意味だと思うな。
型を意識する必要がないのはPerlの利点の一つだし、
単に比較演算程度なら、一旦数値が文字列化されれば
あとは数値として使おうが、文字列として使おうが、値を変更しない限り変換が行われる事はないからね。

>>464
そんなこと、聞いた事ないな。
それとも正規表現のコンパイルに時間がかかる、ってことかなぁ…。

# こういうケース
my $pattern = "foo";
while(<>){
if(/$pattern/){
# ...
}
}

eval() すると早いってのはこのこと。
パターンが何種類もある場合は、確かに考慮に値するほど変わることもある。
$pattern = "foo";
eval <<'CODE';
while(<>){
if(/$pattern/o){ # o - コンパイルを一度しかしない
# ...
}
}
CODE
パターンに定数を使える(oオプション使用を含む)のなら、わざわざeval()する意味はないけどね。
0466デフォルトの名無しさんNGNG
配列の中身(文字列)が全て同一かどうかを「スマートに」判別する方法って
ないでしょうか?
最初の要素を保持してループを回し、異なる要素が出てきたら
同一でないと判断するのはPerlっぽくない(他に手段がある)気がするので。
0467デフォルトの名無しさんNGNG
どこが違っているかを見るなら、grepという手もあるが、
単に同一かどうかだけでいいのなら、
"@array1" eq "@array2"を評価しては?
0468466NGNG
>>467
すみません、ちょっと書き方がまずかったようです。
二つの配列をマッチングさせるのではなく、一つの配列の中にある
全ての要素が同一かどうかを見たいのです。

また、配列の中身が何なのかはとりあえず考えません。
(タブ区切りの文字列をループ内で分割しながら処理するので)

grepを使えば・・・というのは良いヒントになりましたが、場合によっては
メモリを喰いそうですね。
自分でももうちょっと考えてみます。ありがとうございました。
0469デフォルトの名無しさんNGNG
ttp://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
の122
0470デフォルトの名無しさんNGNG
よく携帯サイトにある、オリジナル待ち受け画像作成プログラムみたいなのを
作りたいと思っています。例えば、背景色を選びロボットの頭、胴体、手、足の
各パーツ画像を選んで「画像作成」ボタンを押すことで、選んだすべてのパーツが
合体して表示される、といったものです。

perlよりほかの言語のほうが適しているのかもしれませんが、いろいろ調べても
よく分からなかったので、多少は分かるperlスレで質問しました。
スレ違いであれば別スレに誘導していただけると助かります。
よろしくお願いします。
0471デフォルトの名無しさんNGNG
おまいさんは何が聞きたいんだ
0472デフォルトの名無しさんNGNG
すいません。
こういうプログラムはperlで作成することが可能かどうかをお聞きしたいです。
もしできるなら、その作成例などがあるサイトを紹介していただければありがたいです。
0473デフォルトの名無しさんNGNG
そういうのをperlでやることになったら鬱だ
0474デフォルトの名無しさんNGNG
出来る
アクセスカウンターとかの画像を合成しているのを参考にするのが良いのかな
Web 系みたいだから、WebProg 板のスレの方がいいと思う
http://pc2.2ch.net/test/read.cgi/php/1054992610/
0475デフォルトの名無しさんNGNG
>>470
まず、プログラムの実行環境から整理して書け。
めっちゃ意味分からん。
0476470,472NGNG
>>474
ありがとうございました。行ってみます。
0477デフォルトの名無しさんNGNG
>>467
my @array1 = (123, 456, 789);
my @array2 = ("123 456", 789);
(つД`)
0478デフォルトの名無しさんNGNG
>>477
@array1 == @array2;
"@array1" eq "@array2";

じゃあこう。
2つとも通過でOK。
って質問主の要望に沿ってないし。
0479509NGNG
2つ(以上)の jpeg 画像ファイルを入力とし、
横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。
また、指定した位置に連結できるようにもせよ。

どなたか作っていただけませんか?
0480デフォルトの名無しさんNGNG
>479
偉そうにマルチポストか。死ね。
0481デフォルトの名無しさんNGNG
>>479
うわぁ、最悪
0482デフォルトの名無しさんNGNG
>>479
マジレスしてもいいの?
じゃ、PerlMagic使えば〜
0483デフォルトの名無しさんNGNG
>>482
やめろ。続きが想像できる。
「PerlMagicって何ですか?必死で調べましたが分かりませんでした。教えてください」
「インストールってどうすればいいんですか?」
「インストールでなんかエラーが出たんですが、どうすればいいんですか?」
以下略
0484464NGNG
>>465
答えていただきありがとうございます。
自分もそんなことしているのは cgi-lib.pl でしか見たことないです。
でも、 cgi-lib.pl は eval の始まりの辺りにコメントで
# for efficiency, compile multipart code only if needed
と書いてあるんですよね。
それから検索したらオライリーの目次みたいなのがヒットして
5.5 evalによる実行効率の向上 という内容があるわけですが
http://www.oreilly.co.jp/BOOK/adperl/contents.htm
この本は持ってないし、効率のために eval を使っているものをあまり見つけられないので
実際のところはどうなのかなと思ったわけです。
で、効率にかかわるのは正規表現が関係する時ですか?
よくわからないのでとりあえずヒットした本をどこかで探して読んでみます。
どうもありがとうございました。
0485 ◆hMJAPH9PWA NGNG
>>484
なるほど、やはり正規表現関連の事だと思うよ。
でもeval()は使い方を誤ると劇的に遅くなる事があるので、注意したほうがいい。
0486誘導屋さんNGNG
>>509@C/C++の宿題やらせてください。9代目

#!/usr/local/bin/perl

use GD;

$file1 = "test2.jpeg";
$file2 = "test1.jpeg";

open (IMG,$file1);
$image1 = newFromJpeg GD::Image(IMG);
close(IMG);
open (IMG,$file2);
$image2 = newFromJpeg GD::Image(IMG);
close(IMG);

($w1, $h1) = $image1->getBounds();
($w2, $h2) = $image2->getBounds();

$width = $w1 + $w2;
$height = ($h1>$h2)?$h1:$h2;

my $target = new GD::Image($width, $height);
$target->copy($image1, 0, 0, 0, 0, $w1, $h1);
$target->copy($image2, $w1, 0, 0, 0, $w2, $h2);

print "content-type:image/jpeg\n\n";
print $target->jpeg;
0487デフォルトの名無しさんNGNG
ごめんなさい、これもスレ違いだったか...
0488デフォルトの名無しさんNGNG
ばっかでーぇ。
0489デフォルトの名無しさんNGNG
>>484-485
適当な記憶で書くけど、ループは繰り返されるたびに再コンパイルされていて、
ループ自体をevalから実行させると1回しかコンパイルされないので良い。
ってオライリーに書いてあった気がする。

俺はループの中でやむなくeval連発するプログラム作った事あるけどね…。
0490デフォルトの名無しさんNGNG
再コンパイルされるってのは正規表現のことで
処理自体には関係ないよね。
0491デフォルトの名無しさんNGNG
積んどいた「オブジェクト指向Perlマスターコース」というのを今見てるが、
訳も悪いが誤植もひどい・・・
と思ったら、本家本も誤植が多いのね。
0492デフォルトの名無しさんNGNG
>>491
スレ違い
0493デフォルトの名無しさんNGNG
>>492
どうせしょうもない話しかしてないじゃん
0494デフォルトの名無しさんNGNG
>>490
>465の最後のケースならevalのたびにパーズから必要。
0495デフォルトの名無しさんNGNG
>>491
洩れはPerlネットワークプログラミング読んでるんだけど、
これも誤植ひどいよ。
ピアソンエデュケーションって。。。
0496デフォルトの名無しさんNGNG
次スレからは「質問箱」ってスレタイを変えて
「情報交換」とでもしないかい?
本一冊読んでりゃしないような質問と回答ばかりじゃつまらない。
0497デフォルトの名無しさんNGNG
しかし、そういう質問スレは依然として需要はあるので、
質問箱のスレも立ててくれ。

つまりトータルで見ると、情報交換のスレをお前が別に立てれ。
0498デフォルトの名無しさんNGNG
Perlの情報交換のスレなんかいらない。
間違いなくCGIの話題が溢れ返る。
0499デフォルトの名無しさんNGNG
>>497 >>498
わかったよ。もうこのスレの質問には答えない。
0500デフォルトの名無しさんNGNG
教えたがり体質の人は常に一定数いるので、
適当に新陳代謝していってくれ
コテハンとか名乗らなくていいから
0501デフォルトの名無しさんNGNG
>>499みたいのに限って、まともな回答なんて書いたことないんだよな。
自意識過剰なんだよ、役立たずのくせにw
0502デフォルトの名無しさんNGNG
やーい、ハゲ、インポ
0503デフォルトの名無しさんNGNG
えー、困りますよー。
2ちゃんでPerlの質問に答えられる天才は>>499様しかいないんですからー。



( ´,_ゝ`)プッ
0504デフォルトの名無しさんNGNG
おっと。
さらにもましてスレが下らない方向に進んでるぞー。
Q&Aのはまだましだぞー。
0505デフォルトの名無しさんNGNG
文字列中で演算結果を出力する方法を教えて下さい。
$a=1;
$b=2;
print "$a+$b=",$a+$b;

を
print "$a+$b=($a+$b)";
のような書き方で同じ出力を出したいのです。
0506デフォルトの名無しさんNGNG
>>505
$a=1;
$b=2;
$c=$a+$b;
print "$a+$b=$c";
0507デフォルトの名無しさんNGNG
>>505じゃないけど>>506ってアホ?
それをしたくないから質問してるのに。
0508デフォルトの名無しさんNGNG
>>507
なら代わりに答えてください。
0509貧乏脱出!これであなたはお金持ちNGNG
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

..............
0510デフォルトの名無しさんNGNG
>>505
my $a = 1;
my $b = 2;
print "$a+$b=@{[$a+$b]}";

こんな感じ?
0511棄教者 ◆egKIKYO7cg NGNG
>>505
Perlクックブックの第一章に同じようなネタがあったけど、
会社に置いてあるので、自宅から2CHに繋げている今は答えられない。
誰かPerlクックブック手元にある香具師いたら見て、変わりに答えておくれ。
0512505NGNG
>510
ありがとうございます。
小数も平気みたいですね。
自分には原理がまだ良くわかってないんですが。
0513デフォルトの名無しさんNGNG
$_="1/2.69**3";
print "$_=@{[eval($_)]}";

こんなんも出来るんか。
0514デフォルトの名無しさんNGNG
510なら${\( )} でよくないですか?
まぁ@の方が拡張性あるとは思うケドね。
0515デフォルトの名無しさんNGNG
どう違うの?
0516 ◆hMJAPH9PWA NGNG
$[\( )}や${\do{ }}のほうが@{[ ]}より若干高速だし、メモリも少なくてすむ。
まぁ、単純なものならsprintfでいいと思うけどね。
0517デフォルトの名無しさんNGNG
${\( )}の\ってなんで必要なんだろう。
0518デフォルトの名無しさんNGNG
なんでprint "$a+$b=",$a+$b;やprint "$a+$b=".($a+$b)を嫌がるんだろう さっぱり分からない。
0519デフォルトの名無しさんNGNG
やっぱり>>506が正解のような
0520デフォルトの名無しさんNGNG
ヒアドキュメントとか。
0521デフォルトの名無しさんNGNG
>>517
${} の中身を(スカラー)リファレンスにするため。
0522デフォルトの名無しさんNGNG
あ、デリファレンスの${}なわけか。産休
0523デフォルトの名無しさんNGNG
普通にこう

$a=1;$b=2;
printf ("\$a + \$b = %d",$a+$b);
0524デフォルトの名無しさんNGNG
""の中の変数が勝手に中身に置き換わって不思議〜、
というのを式でやりたいだけなのでは
0525デフォルトの名無しさんNGNG
>>505じゃないけど>>523ってアホ?
それをしたくないから質問してるのに。


・・・一番アホなのは>>505だが。
0526デフォルトの名無しさんNGNG
どういうデメリットがあるから何を避けたいのか、
というのが質問からさっぱり読み取れない
0527デフォルトの名無しさんNGNG
おじいちゃんの遺言なので。
0528デフォルトの名無しさんNGNG
そういうのをやってみたいだけじゃない?実用性はともかく。
みんなで質問者の知的好奇心を満たしてあげようじゃないの。
0529デフォルトの名無しさんNGNG
式が不定で実行時にevalする必要があるならともかく、
最初から決まってるなら、それを文字列の中に入れる
メリットは無い、というかフィロソフィーがおかしい
0530デフォルトの名無しさんNGNG
>>528
もしそうなら隔離板のWebProg板で聞いてほしいな。
0531デフォルトの名無しさんNGNG
このスレが6になるのとperlが6になるの
どっちが早いのですか?
0532デフォルトの名無しさんNGNG
実はこっちが隔離板
0533デフォルトの名無しさんNGNG
>529
真の正解は
print "1+2=3";
だと言いたいのだね。
0534デフォルトの名無しさんNGNG
"Perlクックブック"という本がこのスレではよく出てきますが、
その本は丸っきりの初心者向けでは無いようなので質問します。
Perlをまったく知らない状況から勉強しようとして本を買うなら、
最初歩としてはどの本が良いのですか?
なるべく分かりやすく、飽きにくいものをお願いします。
0535デフォルトの名無しさんNGNG
>>534
http://pc2.2ch.net/test/read.cgi/php/1030209573/l50
0536デフォルトの名無しさんNGNG
>>528
rubyではできるからperlではどうなのかと思ったとか

a=1
b=2
print "a+b=#{a+b}"
0537デフォルトの名無しさんNGNG
確かに、変数を中身に変換してくれる機能がありながら、
それが不十分である為にprintfに切り替えたり、
予め別変数に書き出しておいたり、という作業が入るのは
言語としてちっとも完備していない

でもそれがperl
0538デフォルトの名無しさんNGNG
確かに不十分かもしれんが、リファレンス使えりゃ問題無い
0539デフォルトの名無しさんNGNG
>>510
my $a = 1;
my $b = 2;
print "$a+$b=${\($a+$b)}\n";

こっちのほうが>>536に近いかな。
0540デフォルトの名無しさんNGNG
なんで /^.*$/ が文字列全体にマッチしないんだ〜〜?
0541デフォルトの名無しさんNGNG
というか、 ^ と $ を同時に指定できない理由はあるのでしょうか?
0542デフォルトの名無しさんNGNG
意味不明、同時に指定できるだろ?
0543デフォルトの名無しさんNGNG
>>540
取り敢えず . は改行にはマッチしない。
なお、「.*」の場合、最長マッチなので ^ と $ は全然いらない。
そもそも、この記述を使いたい意味が全く分からない。

> ^ と $ を同時に指定できない理由はあるのでしょうか?
同時に指定できる。
取り敢えず、正規表現の動作を理解してから出直して。
0544543NGNG

ああ、書き忘れたけど、
m/^.*$/
これは
!(m/\n/)
これとほぼ同義。
0545デフォルトの名無しさんNGNG
>>544
ダウソ。DOS改行の場合とか・・・。mいらんよ。
0546デフォルトの名無しさんNGNG
俺はふつー m 付けます。
デミリタの定義を目視出来るからね。

perlの改行(\n)は、システムにおいて意味合いが変わってくるのでDOSだからどーこーなる事はありません。
0547デフォルトの名無しさんNGNG

$cmd = FileHandle->new( "|command" );
print( $cmd "hogehogehoge" );
...
でコマンドにパイプでデータを流し込んでコマンドの実行結果を得るには
どうしたらいいですか?
0548デフォルトの名無しさんNGNG
>>546
CSVファイルの中身がそのスクリプトを動かしているシステムに合った改行コードとは限らない。
今回の場合は決めてあるのかもしらんけど。
0549548NGNG
>>548
別のスレと激しく勘違いした


_| ̄|○
0550 ◆hMJAPH9PWA NGNG
>>547
IPC::Open2/IPC::Open3を使う。
ただしいとも簡単にデッドロックしてしまうため、素人にはお勧めできない、
というようなことがドキュメントに書いてあるので注意されたし。
0551デフォルトの名無しさんNGNG
小数点以下第2位までの数値を得たいのですがどのようにすればいいでしょうか?

a=12.34567
0552デフォルトの名無しさんNGNG
初手からperlでない
0553デフォルトの名無しさんNGNG
>>551

int(($a/100)+0.05)*100で出るかな? 適当だけど。
0554デフォルトの名無しさんNGNG
>>553
誤爆。四捨五入じゃないのか。'sprintf'を使えば?
0555551NGNG
>>553
解決しました。
ありがとうございました。
0556デフォルトの名無しさんNGNG
print sprintf('%.2f', $a);
0557デフォルトの名無しさんNGNG
Windows2000
ActivePerl5.8
ですが
setsockopt(SOCKET,SOL_SOCKET,SO_RCVTIMEO,30)が成功しません
0558デフォルトの名無しさんNGNG
>557
あーそうですか。
報告ありがとうございます。
0559デフォルトの名無しさんNGNG
>557
乙〜
0560デフォルトの名無しさんNGNG
win環境でperl使ってポーリングしたいと思ってるんだけど、
一般的な方法ってありますかね?
ユーザーが意図してポーリングの開始、終了を制御できるようにしたいんですが。。。
サービスとして実行させようにもアプリケーションじゃないとだめそうだし。。。

どなたかいい方法知ってる方いらっしゃいませんか??
0561デフォルトの名無しさんNGNG
何をポーリングするんだ?
0562デフォルトの名無しさんNGNG
油田
0563デフォルトの名無しさんNGNG
鼻の穴
0564デフォルトの名無しさんNGNG
ケツ拭くといつも赤い
0565デフォルトの名無しさんNGNG
ストライク
0566デフォルトの名無しさんNGNG
ポーリングって、燃焼系〜燃焼系〜アミノ式、のアレ?
0567デフォルトの名無しさんNGNG
指ぱっちん
0568デフォルトの名無しさんNGNG
質問するなら
Perl コーディング初心者質問コーナー Part25
http://pc2.2ch.net/test/read.cgi/php/1056730690/
0569デフォルトの名無しさんNGNG
自分の質問のせいで荒れてしまってスイマセンでした。
0570デフォルトの名無しさんNGNG
気にするな。
0571デフォルトの名無しさんNGNG
荒れてない。
なんとなくネタスレになっただけ。
0572デフォルトの名無しさんNGNG
perlのCPANを使うときの最初に設定をするでしょ?
そのときの地域選択のときに候補が上がってこないんだけど、どうしたらいいの??
数字を入れても起こられるからまぢわからんです。
0573デフォルトの名無しさんNGNG
実効ユーザーID実効グループIDを表示させるCGIはどうするの?
0574デフォルトの名無しさんNGNG
すいますぇん。板違いでした。
0575デフォルトの名無しさんNGNG
質問です。当方あまりperlについて詳しくないので初心者でも分かるよう
ご教授いただけるとありがたいです。

トップページがCGI(top.cgi)でそこにアクセスするとURLを変えないまま
実際はA.shtmlを表示させています。
そのA.shtmlにはSSI式カウンタが設置してあります。

普通にA.shtmlを表示させればカウンタは表示できるんですが
top.cgiからアクセスしてもカウンタが表示されないで困ってます。

○A.shtml→SSIカウンタ=見える
×top.cgi(A.shtml)→SSIカウンタ=見えない

そのSSI式カウンタの設定では相対パス絶対パスも全て試しましたが
表示されません。なにか表示できる方法はありますでしょうか?

そこから先に進めず困っています。よろしくお願いします。
0576デフォルトの名無しさんNGNG
Perl関係ないし
0577デフォルトの名無しさんNGNG
>>576
すいません・・このような質問はWEB制作板とかのほうがいいんでしょうか
0578デフォルトの名無しさんNGNG
はい。
0579デフォルトの名無しさんNGNG
perlで階層化されたデータ構造って作れますか?
例えばHTMLのエレメントの構造の様なものを記憶しておきたいんですが。
(HTMLを読みたいというわけではない)

・・・ぶっちゃけた話、LISPのS式(そのものじゃなくても良い)を
perlでも扱えないかと。
0580デフォルトの名無しさんNGNG
>>579
アルゴリズムの問題じゃない。
lispでできてPerlにできないことなんてないでしょ。
この場合は、フラグ処理が適切と思われ。
開始タグと終了タグの個数を差し引きして、階層を作る。
0581デフォルトの名無しさんNGNG
>>579
単にこういう話ではなく?
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
http://perldoc.jp/docs/modules/MLDBM-2.01/MLDBM.pod
0582デフォルトの名無しさんNGNG
Windows2000
ActivePerl5.8.0を使用しています。
-Vオプションで設定を見ると
「usethreads=undef」となっているのですが、
これを有効にする方法はありますでしょうか?

0583デフォルトの名無しさんNGNG
>>582
Perl のソース拾ってきてコンパイルし直し。
0584デフォルトの名無しさんNGNG
>>579
[$a,[$b,[$c,[$d,]]]]ってのはどう?

scalar( %hoge )の返り値は何?
0585579NGNG
まだ良くわかっていませんが、多分>>581さんのリンクの
perlref の仕組みで大丈夫っぽいです。
厳密にリスト構造を似せる必要はないので。
0586579NGNG
流し読みした感じでは、perlobjというのでもよさそうです。
ありがとうございました。
0587デフォルトの名無しさんNGNG
>>584
http://tech-web.net/perlmania/perldata3.html
0588デフォルトの名無しさんNGNG
[sub{},[sub{},[sub{},[sub{},undef]]]];

LISPしっかり使ったこと無いので何ともいえないけど・・・

[
    &{sub {
        my ($data,$data2);
        my $func;
        $func=sub{
        };
        return $func;
    }},undef
    ]
];

クロジャー組み合わせたりもできるし・・・
どんな使い方できるかは分からないけど面白いことできるかも。
0589 ◆hMJAPH9PWA NGNG
>>582
useithreads
0590デフォルトの名無しさんNGNG
>>588
&nbsp じゃなくて &nbsp; が正式な(後ろにセミコロン)。
Janeだと正式な書き方しないとそのまま表示されてしまうので
0591デフォルトの名無しさんNGNG
perlスクリプトで認証サイトの画像をダウンロードしたいのですが
とってきた画像ファイルの上にヘッダ情報がテキストで入ってしますのです。
こいつを取り除く手っ取り早い方法おしえて下さいお願いします。

#!/usr/bin/perl
use LWP::UserAgent;

$url = "http://aaa/aaa.jpg";
$id = "namae";
$passwd = "password";

$ua = LWP::UserAgent->new;
$req = HTTP::Request->new(GET => "$url");
$req->authorization_basic("$id", "$passwd");
print $ua->request($req)->as_string;

0592デフォルトの名無しさんNGNG
s/as_string/content/
0593デフォルトの名無しさんNGNG
592さん
かたじけない!
0594デフォルトの名無しさんNGNG
WindowsでPerlやる場合、
cygwinの使うのとwin用の使うのの利点、欠点教えて
0595デフォルトの名無しさんNGNG
ActivePerlのほうがいいよ。
ppmでモジュール管理が楽。
0596デフォルトの名無しさんNGNG
windowsのインターフェースがなぁ。command.comとか
cmd.exeとか使いにくいから、cygwinの方がイイ!
ま、簡単なことやるなら、copalなんか使う手もあるが。
0597デフォルトの名無しさんNGNG
>>595
「ppmモジュールねぇよ」
って怒られること多くない?
どうせ perl -MCPAN すりゃ同じだし

system()とか`` 考えるなら、断然cygwinだな
0598デフォルトの名無しさんNGNG
Cygwinの方がいいだろ
0599デフォルトの名無しさんNGNG
system() になにか違いがあるんですか?
0600デフォルトの名無しさんNGNG
>>599
偉い人じゃないから、system()自体の違いは知らんけど
Windowsだったら system('echo hoge'); とか @list=`ls`; とかできないじゃん
0601デフォルトの名無しさんNGNG
両方イレトケ
bash上でActivePerl使うのが楽
どっちかでしかコンパイルできないmoduleもあるし
0602デフォルトの名無しさんNGNG
両方入れてるが、PATHとかで無駄にはまる時あって初心者にはオススメできない
分かってるならいいんだけどね
0603デフォルトの名無しさんNGNG
PATHは優先順位さえ覚えておけば問題ないんじゃないの?
オレッチはCygwin入れるときPerlは入れないでActivePerl入れてる。
0604デフォルトの名無しさんNGNG
凝ったことをしたいなら、linuxを入れる
winからperlを便利に使いたいだけならActivePerl
0605デフォルトの名無しさんNGNG
cygwinからActivePerlが最強。
0606デフォルトの名無しさんNGNG
ActivePerlのが気楽だし、個人でCGI作る程度ならそっちのがいいかと。
UNIXコマンドを使うようならcygwin...ってかUNIXいれろ、と。
0607デフォルトの名無しさんNGNG
perlを比較しているのにbashが便利wwwとか言ってる椰子は香具師
0608デフォルトの名無しさんNGNG
椰子は香具師
椰子は香具師
椰子は香具師
椰子は香具師
椰子は香具師
0609デフォルトの名無しさんNGNG
純粋にどう勘違いしていたのか気になる
> 椰子は香具師
0610デフォルトの名無しさんNGNG
perlってなんてよむんですか?
0611デフォルトの名無しさんNGNG
>>610
http://e-words.jp/?w=perl
0612デフォルトの名無しさんNGNG
ピィール
0613デフォルトの名無しさんNGNG
ぺるる
0614デフォルトの名無しさんNGNG
ピロリだろ。初心者を騙すなよ。
0615デフォルトの名無しさんNGNG
>>609
俺の予想: 彼は「香具師」をいわゆる「厨房」の意味と思っており、
        「ヤツ」の変化の歴史を知らなかった。
ありえない: 実はネタである。
0616デフォルトの名無しさんNGNG
こうぐしでも変換できるし、なんか香ばしい輩の
ことだと思っちゃったんだろうなあ
0617デフォルトの名無しさんNGNG
ピーナスだよ
0618デフォルトの名無しさんNGNG
掲示板作りたいんですが、Activeperl5.8って無料なのですか?英語わけわからない。
後、ダウソする時のメアド記入欄ってちゃんとしたメール記入した方がいいのですか?
なんか怖い
0619_NGNG
http://homepage.mac.com/hiroyuki44/
0620デフォルトの名無しさんNGNG
>>618
http://pc2.2ch.net/php/
http://pc2.2ch.net/php/
http://pc2.2ch.net/php/
http://pc2.2ch.net/php/
http://pc2.2ch.net/php/
http://pc2.2ch.net/php/

ここは痴呆専用のスレで
次からCGI・ぺrlは↑の板で聞け
ActivePerlはフリー
メアドは適当でいい
英語嫁ないならどうせそのうち挫折するだろ
0621デフォルトの名無しさんNGNG
>>618
英語がわからない人がプログラミングをするとこは法律で禁じられています。
0622デフォルトの名無しさんNGNG
>>607が大アフォということで決着。
Perlを使う環境がPerlそのものと並んで重要なことくらい
分からない>>607は・・・
0623デフォルトの名無しさんNGNG
大事だけど。でもそれはperlの比較じゃないよね?
0624デフォルトの名無しさんNGNG
どーでもいいけど、そろそろコーティングやアルゴリズムの質問が見たくなった。
0625デフォルトの名無しさんNGNG
最後言わしてくれ。
>>623、話の発端は、ActivePerlとcygwinPerlのどっち
入れたほうがいいでつか、っていう質問だっただろ。
そもそもPerlの比較じゃなかったんよ。漏れ、粘着?
0626デフォルトの名無しさんNGNG
> 英語嫁ないならどうせそのうち挫折するだろ

エラーメッセージをコピペして
「どういう意味なんでしょうか……」
0627デフォルトの名無しさんNGNG
お前らも英語わかんないくせにーwwwwwwwwwwwww
0628デフォルトの名無しさんNGNG
分かんないけど、自分で調べるよ。
0629デフォルトの名無しさんNGNG
>>626
エラーメッセージコピペするのは質問者として非常に正しい。
ダメな質問者は 「何かエラーが出て動かない」 としか言わない。
0630デフォルトの名無しさんNGNG
>>629
そのまえにエラーメッセージでググッてみるとなお良い。
0631デフォルトの名無しさんNGNG
perlでgetaddrinfo関数って使えないの?
0632デフォルトの名無しさんNGNG
>>631
ttp://search.cpan.org/author/UMEMOTO/Socket6-0.11/
0633631NGNG
>>632
サンクス
やっぱそれか
ppmないからな〜winVC6でコンパイルできるのかしら
0634デフォルトの名無しさんNGNG
マシン構成:
Win2000
ActivePerl 5.8.0

これでマルチスレッドを組むことは可能ですか??
0635デフォルトの名無しさんNGNG
リソースファイルを編集するスクリプトを書いています。
「\」が長すぎる行をコンソール上で見やすくするために、行の末尾に、次の行に
続くの意味で使われいます。
例)
aaa = bbb , \
zzz = ddd
→
aaa = bbb , zzz = ddd
と同じ意味。

これをうまく処理するためには、どんな感じにするのがよいでしょうか。

0636635NGNG
{
local $/ = undef;
$text = <STDIN> ;
}
$text =~ s/\\\n//gd ;

私はこんなのとか、$/ = " \n" ; とかしか思いつかないのですが、
もうちょっと軽い感じにできないかと。
0637デフォルトの名無しさんNGNG
>>635
それをどう処理したいの?
0638デフォルトの名無しさんNGNG
>>635
意味がわからん。出直せ。
0639デフォルトの名無しさんNGNG
まぁまぁ、636見りゃやりたい事は分かろう
日本語意味分かんないから放置するけどな

0640 ◆hMJAPH9PWA NGNG
なんかsearch.cpan.orgの色が変わってるけど、どうしたんだろう。
0641デフォルトの名無しさんNGNG
>>640
"Why is this site Orange?" ってアンカーがあって
http://search.cpan.org/orange.html
に理由が書いてあるじゃん。

俺的抄訳:
OSCON2003でPerl Foundationの募金活動としてオークションをやった。
その一環として cpan.org の色を1年間指定の色にさせる権利をセリに出した。
http://london.pm.org/ が、自分たちのオフィシャルカラーであるオレンジ色に入札して、
結局競り落としはしなかったのだが、
London.pmはイイ香具師だったので1ヶ月間だけオレンジ色にすることにした。
0642 ◆hMJAPH9PWA NGNG
>>641
あれま。見落としてた。
色の権利か〜。面白い事考えるなぁ(笑
0643デフォルトの名無しさんNGNG
※code-A
for(@array) {
/deleted/ && 配列からその要素を取り除く
}

という処理をしたいのですが、
splice で配列のoffsetを指定する必要があるので

※code-B
for(my($i=0);$i<scalar(@array);$i++) {
$array[$i] =~ /deleted/ && splice(@array, $i--, 1);
}}

こういうながったらしい書き方になってしまいます。
cod-he-A のような書き方でやれないでしょうか?
0644643NGNG

code-B で閉じ括弧二重タイプしてしまいました。
0645デフォルトの名無しさんNGNG
for(@array) {
 /deleted/ && push(@new, $_)
}

ちょっとせこいケド。
0646645NGNG
あぁ、除くのか。 && を or にしといてください(´Д`;)
0647645NGNG
@array = grep { not /deleted/ } @array
何度もすいませんw
0648デフォルトの名無しさんNGNG
for(@array) {
}
@array = grep{!/deleted/} @array;

はダメ?
0649648NGNG
かぶった(´Д`)
0650デフォルトの名無しさんNGNG
 o000O
 (⌒⌒)
  ヽ  (
  (_)


           O000o
           (⌒⌒)
            ) /
           (_/
0651デフォルトの名無しさんNGNG
activePerl5.8.0を使っている者です。
並列処理(Thread)を使いたいのですが、どなたか使われた方いらっしゃいませんか?
簡単なサンプルソースを見せていただきたいのですが。。。
初期化すらままならない状態でして。。。
0652デフォルトの名無しさんNGNG
駄目だろ、普通。
0653デフォルトの名無しさんNGNG
動かなくは無いけど、スレッドのリリース処理が上手く出来ない状態。
0654デフォルトの名無しさんNGNG
#!perl
use threads;
use threads::shared;
use Win32;
my     $global : shared =0;
sub Func
{
    my ($tmp)=@_;
    my $tmp2="0".$tmp;
    $tmp2=~s/(..)/$1/;
    $tmp*=100;
    foreach(0..10)
    {
        {
            lock($global);
            $global.=$tmp2.'::'.($tmp*$_)."\n";
        }
        Win32::Sleep($tmp);
    }
}
@t=();
foreach(0..10){
    $t[$_]=threads->new(\&Func,$_);
}
foreach(0..10){
$t[$_]->join;
}

#print "exit $global\n";

print $global;
0655654NGNG
テスト用のものの域出てないけど基本的に全ての変数はスレッドローカルになり
my $name : sheard;
でスレッド間で共有する変数は作る。
制限としてリファレンスとかが使えなかった気がする。
これ以上知りたかったら自分で調べるか実験するかしてくれい。
まあほかに試した人いたら聞きたいけど。
0656デフォルトの名無しさんNGNG
shared
0657山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0658651NGNG
>>654
ありがとうございます。
サンプルソースをベースにもう少し調べてみようと思います。
何かわかれば報告いたします。
0659デフォルトの名無しさんNGNG
perlを1からやりたいんですけど、エディッタってメモ帳とかでいいんですか?
それとも専用のエディッタが必要ですか?
0660デフォルトの名無しさんNGNG
>>659
メモ帳でもイイ!
専用のエディタがあればもっとイイ鴨
とどのつまりは自分自身が使いやすいほうを選ば吉
0661デフォルトの名無しさんNGNG
>>660
ありがとうございます!
とりあえず、ワードパットでやってみます。

無理っぽかったらフリーソフト・・・。

限界が来たら専用エディッタ買ってみます
0662デフォルトの名無しさんNGNG
>>661

使いやすいエディタって何よ?
http://pc2.2ch.net/test/read.cgi/php/991372719/l50
0663デフォルトの名無しさんNGNG
Win->xyzzy以外ありえない
Unix->vi,emcas
0664デフォルトの名無しさんNGNG
>>661
ワードパッドはどうかと思うがな……。

フリーソフトの開発環境なら「Perlを始めよう!」とか「Copal」があるな。
まぁ最終的にはテキストエディタに落ち着くわけだが、
これから始めるんであれば試しに使ってもいいと思う。
0665デフォルトの名無しさんNGNG
E(G) = ω1 ∪ ω2
0666デフォルトの名無しさんNGNG
ワードパッド使うくらいならとりあえず秀丸にしとけ
0667デフォルトの名無しさんNGNG
>>666
秀丸はシェアウェアだから、『とりあえず』で選べるものではない。
...とか言ってみるtest。
0668デフォルトの名無しさんNGNG
いまどき秀丸をすすめてる奴って何を根拠にすすめてるの?
0669デフォルトの名無しさんNGNG
つか662が誘導してるんだからこっちで討論するな、と。

http://pc2.2ch.net/test/read.cgi/php/991372719/l50
0670デフォルトの名無しさんNGNG
秀丸はシェアウエアだが警告無視すればお金払わずに使えるとか誰かがいってなかった

と言ってみるテスト。
0671デフォルトの名無しさんNGNG
学生とかフリーウェアの作者なら無料とかなかったか?
0672デフォルトの名無しさんNGNG
age
0673デフォルトの名無しさんNGNG
>>671
要登録
Perl用強調表示などもあるので選択肢の一つとしてはアリだと思うが…

そんなことよりエディタを制御するスクリプトがPerl風のエディタない?
0674デフォルトの名無しさんNGNG
ActivePerl5.8.0なんですが、Win32::APIライブラリを使えば
全てのWin32APIが使えるんですか??
0675デフォルトの名無しさんNGNG
>>674
というよりは、DLL内の関数を呼び出すモノ。
0676デフォルトの名無しさんNGNG
Win32:;APIの使い方は解っても、APIの仕様がわからないと使いにくかったりするんだけど
そこらへんの解説をしてる所って殆ど無いね・・・
0677デフォルトの名無しさんNGNG
Iriaというダウンロード用のツールが独自のAPIを持ってて、
うまくすると多分perlから使えるんだけど、
どうやればいいのか判らない
0678デフォルトの名無しさんNGNG
$c = [\ 'c'];

この¥ってなんですか?
0679_NGNG
http://homepage.mac.com/hiroyuki44/
0680デフォルトの名無しさんNGNG
> この¥ってなんですか?

リファレンスを求める演算子

$ref=\'c';
print "$$ref\n";
0681デフォルトの名無しさんNGNG

Win32:;APIの使い方

ActivePerlでLHA
川合氏(河馬屋二千年堂さん)

http://member.nifty.ne.jp/hippo2000/perltips/perllha.htm
0682デフォルトの名無しさんNGNG
難しいねえ
0683_NGNG
http://homepage.mac.com/hiroyuki44/
0684デフォルトの名無しさんNGNG
掲示板なんかで、引用符「>」「>」から先の文字の色を変えるにはどうしたらいいですか?
0685デフォルトの名無しさんNGNG
Windows98でHTTP-Liteモジュールをインストールしようとして、
PPM> set repository ACTIVESTATE http://www.activestate.com/PPMpackages/5.6plus/
PPM> install HTTP-Lite
と入力したら
Error installing package 'HTTP-Lite': Read of http://www.activestate.com/PPMpackages/5.6plus/ failed
と出てうまくいきません。
どなたか対処法をお願いしますm(_ _)m
0686デフォルトの名無しさんNGNG
>>684
Perlのコーディングと関係ないよ。
正規表現スレで聞いてみたら?
0687デフォルトの名無しさんNGNG
>>676
Win32APIの仕様ならMSDN見るしかあるまい。Perlの範疇を超えている。

>>677
Iriaは忘れたがIrvineは doc\api.txt というファイルに仕様が書いてあるな。
まぁ、ActiveXなんだが。
0688_NGNG
http://homepage.mac.com/hiroyuki44/
0689デフォルトの名無しさんNGNG
>>684
正規表現スレってドコ?
0690デフォルトの名無しさんNGNG
正規表現道場@2ch Part2
http://pc2.2ch.net/test/read.cgi/php/1038146241/l50
0691_NGNG
http://homepage.mac.com/hiroyuki44/
0692デフォルトの名無しさんNGNG
perlappで実行ファイルにコンパイルしたいのですが
やり方が分かりません
どなたか解説お願いします
0693デフォルトの名無しさんNGNG
レベルが低すぎて笑えるw
もう次刷れたてんなよ>>1
0694デフォルトの名無しさんNGNG
Win32::APIの話なんかは別にレベル低くないと思うんだが。
まぁAPIに限れば、スレ違いかも知らんケド。
さて、APIリファならASCIIの『Win32API オフィシャルリファレンス』がオススメでつ。
0695デフォルトの名無しさんNGNG
喪前は>>496=>>499だろ
まだいたのか。しっしっ。
0696デフォルトの名無しさんNGNG
教えてください.

自分の3Dソフトのオブジェクトをパイソンスクリプトでなく
Perlで一括操作したいと考えています.

3Dに限らずソフトSDKを使って,Perlを実装する話などの
書籍・HP等ございましたら,ご紹介願えないませんでしょうか.

よろしくお願い致します.
0697デフォルトの名無しさんNGNG
>>696
man perlxs perlxstut
0698696NGNG
>697さん
該当3DソフトようのPerlインタフェースPlug-inモジュールを
作るってことでしょうか?
0699696NGNG
考えてみると,Perlのデータ型と3DソフトのSDK(C++)の
データ型を正しい受け渡しと3Dソフト側のオブジェクトの
生成・廃棄を自分でやっているだけですよね...多分
0700デフォルトの名無しさんNGNG
★クリックで救えるオマ○コがあるらしい★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0701696NGNG
件のPerlxstutで検索したら
なんかそれっぽいのが見つかりました.
http://www.kt.rim.or.jp/~kbk/perl5.005/perlxstut.html
ありがとうございましたm(_ _)m
0702デフォルトの名無しさんNGNG
Win32::APIについて先月号のハッカージャパンの
大人のスクリプト講座で詳しく説明してたな。
俺はそれだけの理由で買った。
0703デフォルトの名無しさんNGNG
ハッカージャパンか
面白そうだな
0704デフォルトの名無しさんNGNG
>>702
なんか面白い使い方載ってた?
0705デフォルトの名無しさんNGNG
立ち読みしてきたけど何も載ってなかった。

って、先月号かよ_| ̄|○


先月までは何やら色々やってたみたいね。

0706デフォルトの名無しさんNGNG
ごめん今見たら5月号だから先々月号だね。
0707デフォルトの名無しさんNGNG
PC書籍の専門店は割とバックナンバー置いてるから
諦めずにGO

で、どんな内容?
0708デフォルトの名無しさんNGNG
perlで書いたスクリプトをコンパイルするにはどうしたら。。

perlcc使ってみたら
Note(probably hermless)No library found for 'kernel32.lib'
とかいうのが10行くらい出て さらに

'cl'ゆーコマンドはありまへん とMS-DOSが抜かすわけだが。。

D以下にインスコしたのがいけなかったのか??
0709デフォルトの名無しさんNGNG
Win32::APIのVer0.40を使った
「Susieのプラグインを使った、画像をBMPに変換するコンバーター」
の作り方とかが載ってます。
0710デフォルトの名無しさんNGNG
このスレ読んでると頭痛がして来る。

インターネットは義務教育が終わってから、とか規制してくれないかなー…
0711デフォルトの名無しさんNGNG
おお。結構使えそう。
0712デフォルトの名無しさんNGNG
>>710
(突っ込みたいけどやめておくよ)
0713デフォルトの名無しさんNGNG
>>708
perl filenameとしてくださいね^^;
0714デフォルトの名無しさんNGNG
system関数と`(バッククォーテーション)の違いを教えてください。
0715デフォルトの名無しさんNGNG
しばらく見ないうちに白痴化している……
0716デフォルトの名無しさんNGNG
>>709
ほほー、なかなか面白そうだな。
そのうちバックナンバー探してみるか。
0717デフォルトの名無しさんNGNG
>>714
$sys=system('ls');
print $sys;
$back=`ls`;
pritnt $back;
やってみそ。
0718デフォルトの名無しさんNGNG
>>708
C言語でもやったら?
0719デフォルトの名無しさんNGNG
'ls' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0720デフォルトの名無しさんNGNG
>>719
どこでうごかしてんだよ
0721デフォルトの名無しさんNGNG
>>717
$sys=system(ls);
な
0722デフォルトの名無しさんNGNG
jpegやGIFの画像を受け付けるCGIで、uploadされてきたファイルを
適正なサイズにリサイズして格納したいと思っています。
これは不要に大きなファイルを送られてサーバが圧迫されるのを
防ぎたいのですが、調べたら利用中のサーバにGDがインストールされて
いましたので、これでできるのかも、と自前のテストサーバにも、
GD1.19をインストールしました。(サーバはGD1.18です)

そもそもGDでこんな事は可能なんでしょうか。

またそんなGDの使い方があるサイトとかありませんか?
0723デフォルトの名無しさんNGNG
調べてからインストールしろ。
0724_NGNG
http://homepage.mac.com/hiroyuki44/hankaku05.html
0725_NGNG
http://homepage.mac.com/hiroyuki44/
0726デフォルトの名無しさんNGNG
>>722
CGIって何?
>>1の存在は無視?
お前の存在も無視していい?
0727デフォルトの名無しさんNGNG
マルチポストで申し訳ありません。こちらのほうが適切かと思いカキコしました。
行の折り返しに挑戦しています。
format や Text::Wrap を使ってみましたが
文字化けして上手くいきません。
解決方法がありましたら教えて下さい。
参考になるサイトがありましたらよろしくお願いします。
0728デフォルトの名無しさんNGNG
>>727
http://www.din.or.jp/~ohzaki/perl.htm#JP_Fold
0729722NGNG
>>726
CGIはCGIだよ。gdはライブラリ。
GDはGD.pmって言ってperのモジュール。

でperlで書いたCGIスクリプトでGD.pm経由であんな事がしたい、
って事ですが、ここはもっと話題が限定的なんですね。

了解しました。
0730デフォルトの名無しさんNGNG
>>726
この場合、「CGIについての質問」ではないと思うのだが?
背景として説明してるだけでしょ。
0731デフォルトの名無しさんNGNG
ここはム板だし、スレの流れをCGIに向かわせないために
ここではCGIという単語は一切出さない方が良い。
>>722の質問でもCGIに言及せずに書ける。
722がスレ違いじゃなくても、それに釣られてスレ違いの質問が増えてくるだろ。
0732デフォルトの名無しさんNGNG
>>731
もういいよ、そっとしといてやるから気にすんなよ。
0733デフォルトの名無しさんNGNG
フォントデータらしきファイルがあるので、
解析しようと思って、bmpファイルに変換したいけど、
bmpのデータ構造が少し厄介なので、
そのへんを面倒見てくれるモジュールはありますか?
0734デフォルトの名無しさんNGNG
>>730
「夏」ということで、過剰反応する香具師がどんどん増えるので、、
0735デフォルトの名無しさんNGNG
質問なんすけど。

全角文字・半角文字の文字数をカウントする関数を作ったんですが
local($s) = @_;
local($l) = length($s);
$s =~ s/[\x81-\x9f\xe0-\xfc].//g;
local($zl) = ($l-length($s))/2;
($l-$zl*2,$zl);
↑こんなやつ

引数の文字列のなかに半角文字が入ってないにも関わらず
半角文字が検出されるようなパターンが発生するかどうか知りたいです。
アフォっぽい質問ですがよろしくおねがいします。
0736デフォルトの名無しさんNGNG
>>735
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
0737デフォルトの名無しさんNGNG
よければ教えてください。

chompを使ってテキストの改行を取るコードを書いて、
以前はきちんと動いていたのですが、
別サーバーでやったら、改行が取れなくなりました。
もとのテキストは、自分で編集したテキストファイルです。
perlは5です。
理由がわかる方はいらっしゃるでしょうか?

もし、ここではしていけない質問だったらすいません…。
0738デフォルトの名無しさんNGNG
ま、CGIという文字列にマッチした瞬間に顔真っ赤にさせて
必死になってる>>726みたいな香具師はお前が出てけよ。な?
0739デフォルトの名無しさんNGNG
>>737
s/\x0D\x0A|\x0D|\x0A//g;

もしくは
chompを二回やるとか。
0740デフォルトの名無しさんNGNG
737です

739さん、ありがとうございます!
できました。

以前はきちんと動いていたので、理由がわからず困っていました。
とても助かりました。

「chompを二回」も試してみたのですが、こちらはダメでした。

ともあれ、ありがとうございました。
0741デフォルトの名無しさんNGNG
Perl6はParrotというVM上で動くとの話だけど、
そのParrotを作るのに手間取ってなかなかPerl6開発が進まないんだよね?
わざわざ新しいVM作らないでJavaのVMで動くようにすればいいのに。
そうすれば携帯とかもっと色々なプラットフォームでPerlが動くと
思うんだけどどうよ?
0742デフォルトの名無しさんNGNG
>>741
確かに便利だな
しかし、そうするとPerlじゃなくてJavaを使う罠
0743デフォルトの名無しさんNGNG
>>742
既存のPerlリソースがJavaVM上で動いたり、Perlソースから
Javaオブジェクトが使えたりするのは、有意義かもな。

Apache-BSF
http://jakarta.apache.org/bsf/
スクリプト言語とJavaBeansのインターフェイスを簡単に作れる
基盤は、IBMがApacheに寄贈してくれている。誰か作ってみそ。
0744デフォルトの名無しさんNGNG
>>741
Jythonつかえヴぉケ
てめーが考えるようなことはすでにPerl6以前にやってんの
JPLっていうのんで結局開発はとまった
PerlはCISCにのっとったOP命令が多い言語
JavaはRISCにのっとったOPが少ない言語
このふたつをまぜこむのは大変なの
てかparrot<−>JVMはある
ぐぐれや夏厨が
あげんな
責任もって
このスレ削除してこい
0745デフォルトの名無しさんNGNG
なんか全角記号を使ってる時点でかなり厨っぽいな
0746デフォルトの名無しさんNGNG
たぶん上司に同じような口調で怒られて
自分でもどなってみたくなったんだろ
0747デフォルトの名無しさんNGNG
Perlでアラームを短くプッって鳴らすにはどうすればいいの?
0748デフォルトの名無しさんNGNG
短いアラームのwavファイルをsystemで鳴らす
0749デフォルトの名無しさんNGNG
print "( ´,_ゝ`)プッ";
0750デフォルトの名無しさんNGNG
print "\a";
これで鳴る
0751747NGNG
\aではプーになってしまいます。そこをプッにしたいのですけど、
どうやったらいいのでしょうか?
0752デフォルトの名無しさんNGNG
>>751
>>748
0753デフォルトの名無しさんNGNG
いちいちウィンドウを出さずに、音だけ鳴らして
終了してくれるwindowsアプリを紹介して下さい
0754デフォルトの名無しさんNGNG
>753
板違い過ぎ
0755デフォルトの名無しさんNGNG
外部アプリ使わなくてもwindows標準でそういう機能無かったっけ
普通にアラーム鳴らす時に自分が使ってる奴
0756747NGNG
サウンド関係はマザーボードについてるブザーしかないですが、
wavファイルでも大丈夫でしょうか?
0757デフォルトの名無しさんNGNG
ttp://www.aa.wakwak.com/~pirafu/software/prwave/index.html
こんなのがあった

なに、サウンドボードが無い?
それはもう諦めるしか
っていうか、最初からハードウェア板の管轄だな
0758デフォルトの名無しさんNGNG
           ,.、   .,r.、
          ,! ヽ ,:'  ゙;.
          !  ゙, |   }.
         ゙;  i_i  ,/          ,.、  .,r.、
         ,r'     `ヽ、       ,! ヽ,:'  ゙;.
        ,i"  _,  ._  ゙;       !  ゙;;  }
        !.  ・     ・ ,!.      ゙;  ii ,/
        ゝ_   x    ,::''      ,r'      `ヽ、
       (^ン''`'''''''''''''' 0∞o。    i"  _,   _  ゙;
        `"!     (  ::) ∧  !. ・     ・ ,! ←>>747
         ゙'ンーr-‐-'")  / < >ゝ_=   x  _::'
          (__ノ   (_,ノ   ∨  /`''''''''(⌒';’∵∴;;゙
                    (⌒ヾ;;,    `ソ :‘
                     ゙゙`ヽ、、、__,,ノ゙
0759747NGNG
もうプ〜で我慢します。
0760デフォルトの名無しさんNGNG
あのぷーの長さは誰が決めてるんだ?
鳴ってる以上、普通にドライバがあってどっかに
指令出してるんだろうけど。
0761デフォルトの名無しさんNGNG
>>753
Dos上で動くんだからそれは無理。
0762デフォルトの名無しさんNGNG
フロップーのギコギコ音で我慢しる。

open("A:\\GIKOGIKO") while(1);
0763デフォルトの名無しさんNGNG
Win32::APIを使って再生してみるってのはどうよ。

……って、Windows限定でいいんだっけ?
0764デフォルトの名無しさんNGNG
それならWin32::Soundでよくないか?
0765デフォルトの名無しさんNGNG
バッチファイルでこれ使ってたりする
http://www.muconsulting.com/playwav/index.html
playwav.exe
0766デフォルトの名無しさんNGNG
perlスクリプトってWindowsのサービスとして登録して、
開始とか終了とかできちゃう?無理?
0767デフォルトの名無しさんNGNG
> 539 名前: 窓板住人 ◆winDOwS0aE :sage 投稿日:03/07/24 (木) 19:17 ID:???
> WIndowsとはそんなに関係ないですが、CGIでよく使われるらしい
> スクリプト、CGI.pmにクロスサイトスクリプティング脆弱性があるようです。
> CGI 職人、あるいはCGI使われている方々は最新のバージョンに
> アップデートすることを推奨します。
>
> http://archives.neohapsis.com/archives/bugtraq/2003-07/0267.html
0768デフォルトの名無しさんNGNG
>>766
exeなんかをサービスとして動かす方法があったような気がした。
win系の板で聞いた方がよさげ。
0769デフォルトの名無しさんNGNG
>>766
perl2exe?
perl/tk?
0770デフォルトの名無しさんNGNG
ファイルをオープンできなかったときメッセージを表示するには
これでいいんですか?
$file_open_flg = open(IN,"<datafile.csv");
@lines = <IN>;
close(IN);
if($file_open_flg==undefine){
print "ファイルをオープンできません";
}
0771デフォルトの名無しさんNGNG
★貴方をそそるエロティックな美女たちです・・・(;´Д`)ハァ〜★
http://endou.kir.jp/yuminet/link.html
http://endou.kir.jp/marimo/link.html
0772デフォルトの名無しさんNGNG
>>770
無条件に読み込んでいるようですが、なんのために戻り値を受けているんですか?
0773デフォルトの名無しさんNGNG
>>770
エラー処理はopen時にやっとけ。
0774デフォルトの名無しさんNGNG
>>770
#TYPE1
if(!open(FILE,"file0.txt")){
print "NO\n";
#exit
}else{
print "OK\n";}

#TYPE2
open(FILE,"file0.txt") || die print "NO\n";



あいかわらずレヴェルの低いスレだ
泣きそうだ>>1を10000回惨殺したい
ていのうどもはphp板に引っ込んでろ
0775デフォルトの名無しさんNGNG
そうやっていちいちテンポラリの変数の名前を
考える労力を使わないのがperl風
0776デフォルトの名無しさんNGNG
>>774

>あいかわらずレヴェルの低いスレだ。泣きそうだ
ワロタ。
でも、まぁ、良いんじゃない。
良くわかってなくても取り合えず動いちゃうのがPerlで、
そこが魅力でもあるんだから。
770もガンガレな。
0777デフォルトの名無しさんNGNG
#TYPE2
open(FILE,"file0.txt") or die $!;
0778デフォルトの名無しさんNGNG
eval
{
  open(FILE,"datafile.csv") || die($!);
  @lines=<FILE>;
  close(FILE);
};
if($@)
{
  die($@);
}
0779デフォルトの名無しさんNGNG
低レベルなのに、なぜか、CとPerlで同じ、すごい簡単なプログラムを書いて
どっちが楽か考えてみるべ。という話になりました。

何でもいいんですが、半径入れたら面積でるとか、全部半角にするとか
いや、ちょっとこれはいくら何でも簡単すぎるか、、。

どんなプログラム書くことにしましょう。
もちろんPerlに有利な(汗)
0780デフォルトの名無しさんNGNG
アルゴリズムの部分では、Cもperlも変わらないような
Lispとかまで行くと違ってくるけど

perlはCから面倒な部分を極力取り払った感じ
0781デフォルトの名無しさんNGNG
>>779
こういうのを作らせるのが一番Perlらしさが出るんじゃないかな。
perl -ne '/(if|while|for|switch|case)\b/ && print' hoge.cpp
正規表現の部分は色々変えて。
0782デフォルトの名無しさんNGNG
正規表現とハッシュだろうな。
0783デフォルトの名無しさんNGNG

   /⌒ヽ
  / ´_ゝ`)時間的に、ここ通らないと行けないので、通りますよ・・・
  |    /
  | /| |
  // | |
 U  .U
0784デフォルトの名無しさんNGNG
こいつの顔、まるで死神だな。まさか、死出の旅へ。
0785デフォルトの名無しさんNGNG
>perl -ne '/(if|while|for|switch|case)\b/ && print' hoge.cpp
これって何をやろうとしてるの?
0786デフォルトの名無しさんNGNG
egrep '(if|while|for|switch|case)\b' hoge.cpp と同じ。
0787デフォルトの名無しさんNGNG
質問です。

現在OSはWIndows98SEで、AcrivePerl5.8 をインストールして
Perlが正常に動作いたしました。
ところがopen関数で外部ファイルを読み込もうとすると失敗してしまいます。
具体的な例だと、

$pepfile = 'proteinseq.log';
open(PROTEINFILE,$pepfile);
$protein = <PROTEINFILE>;
print "$protein\n";

をMS-DOSで実行すると

readline() on closed filehandle PROTEINFILE at script/4-5.pl line 11.

となってしまいます。
ファイル名は間違っていません。
なぜ開けないのでしょうか?
ちなみに、これにHTMLのヘッダーをつけてCGIとしてブラウザで実行すると
proteinseq.logをちゃんと読み込んでくれました。
0788ぼるじょあ ◆yEbBEcuFOU NGNG
>>787
とりあえずopenの戻り値は必ずチェックしろ
0789デフォルトの名無しさんNGNG
↑
line 11とは$protein = <PROTEINFILE>;の部分にあたります
0790787NGNG
>>788
ごめんなさい。初心者でして、戻り値のチェックとはどういうことですか?
0791ぼるじょあ ◆yEbBEcuFOU NGNG
>>790
うーん・・・
open(PROTEINFILE,$pepfile);
print $!;
とやってみな。多分それで原因が分かる。
0792_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0793787NGNG
unless (open(PROTEINFILE,$pepfile)){
print "ファイル $pepfile は開けませんでした。";
exit;
}

としてチェックを入れるとやはり
ファイル $pepfile は開けませんでした。
が実行されてしまいます。
ファイル名は絶対に間違っていません。
このファイルとスクリプトは同じディレクトリにあるのですが、
ディレクトリの指定の仕方がまちがっているのでしょうか?
0794787NGNG
>>791 ありがとうございます
#!/usr/bin/perl -w

$pepfile = '/proteinseq';

open(PROTEINFILE,$pepfile);
print $!;

$protein = <PROTEINFILE>;
print "$protein\n";

exit;

を実行したら
readline() on closed filehandle PROTEINFILE at script/4-5.pl line 8.
Use of uninitialized value in concatenation (.) or string at script/4-5.pl line
9.
No such file or directory
となりました。やはりディレクトリの指定法が間違ってるような気がするのですが

0795ぼるじょあ ◆yEbBEcuFOU NGNG
>>794
今度はなんでルートディレクトリからの絶対パスになっているんだ?
0796787NGNG
>>795
ごめんなさい。間違えました。
でも/つけてもつけなくても同じようです。
0797ぼるじょあ ◆yEbBEcuFOU NGNG
>>796
ファイル名も変わっているんだけど・・・・
0798デフォルトの名無しさんNGNG
アルェー
0799787NGNG
お!
絶対パスで指定したらできました!
やはりパスの指定がおかしかったのですね。
でも相対パスではどうやるのでしょうかね・・・?
いろいろご迷惑おかけしました。
ありがとうございました。 >>ぼるじょあさん
0800デフォルトの名無しさんNGNG
proteinseq.logってファイルは存在するのか?
そんざいしてないファイルを読み込もうとしても、、、

あと
なんで
$pepfile = "proteinseq.log";
じゃないんだ?
0801787NGNG
>>797,800
proteinseqとproteinse.logを用意していたのです。
説明不足申し訳ありませんでした。
0802デフォルトの名無しさんNGNG
起動した時のカレントがどこかだな
0803787NGNG
>>802
そのようですね。perl.exeが置いてある位置からの相対パスだったようです・・・
違うフォルダにスクリプトファイルも読み込みファイルも置いてあったので
0804_NGNG
http://homepage.mac.com/hiroyuki44/
0805デフォルトの名無しさんNGNG
スクリプトと同じディレクトリじゃないのか!?
>>803
use Cwd;
print cwd(),"\n";
これで表示されるものがスクリプトのある場所とは異なる?
0806805NGNG
おっと、Perlを呼んだときにいるディレクトリだ(^_^;)
0807805NGNG
というわけで>>805は無視して。
0808787NGNG
>>803
perl.exeとは別のフォルダにスクリプトと読み込みファイルが置いてあるという意味です。
両ファイルは同じフォルダです。
perl.exeがある場所が C:\Perl\bin
両ファイルは C:\Perl\bin\script
に置いてました。
0809デフォルトの名無しさんNGNG
>>808
実行するときに
C:\> perl C:\Perl\bin\script\protein.pl
とかやったんでしょ?
スクリプトのある場所に移動してからやらないとね。
0810デフォルトの名無しさんNGNG
>>1
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

       ヽ(・ω・)/   ズコー
      \(.\ ノ
0811デフォルトの名無しさんNGNG
まあ、$LOGDIR = "/log" みたいに頭の方で定義して、
絶対パスで指定するのが結局楽だな
0812デフォルトの名無しさんNGNG
普通はperlのフォルダにpathを通して、実行はスクリプトのあるフォルダから
やるもんじゃないのか?
0813デフォルトの名無しさんNGNG
>>812
un
0814_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0815_NGNG
http://homepage.mac.com/hiroyuki44/
0816_NGNG
http://homepage.mac.com/hiroyuki44/
0817_NGNG
http://homepage.mac.com/hiroyuki44/
0818デフォルトの名無しさんNGNG
   /⌒ヽ
  / ´_ゝ`)時間的に、ここ通らないと行けないので、通りますよ・・・
  |    /
  | /| |
  // | |
 U  .U
0819デフォルトの名無しさんNGNG
DES3で暗号化した文字列をファイルに書き込んで
復号化しようと読み込むと途中までしか読めないのは何が悪いんでしょうか?

ちなみにどこまで読めてるのかなーとprintしてみるとピーとかビープ音が出ます。
0820デフォルトの名無しさんNGNG
>>891
コード晒せ
何のモジュールつかってるのか書けよ
2度使いまわすファイルなどは
書き込み用にopenしたファイルは必ずcloseしたあと
もういっかい読み込みようにopenするんだよ
てかopenしたらcloseすること
0821819NGNG
>>820

use DES::TripleDES;

open ( FILE_IN ,"< $file_in" ) ;
open ( FILE_OUT ,"> $file_out" ) ;

my $des = new TripleDES;

while ( $line= <FILE_IN> ){
print $line;
$content = $content.$line;
}
close ( FILE_IN );

#Encode
if ( $transaction == 1 ){
print FILE_OUT $des->encrypt3 ( $content, $pass );
}
#Decode
elsif( $transaction == 2 ){
print FILE_OUT $des->decrypt3 ( $content, $pass );
}

close ( FILE_OUT );

DESはCPANから拾ってきたやつです。
http://search.cpan.org/author/JLISHEV/WebTools-1.27/lib/modules/additionals/TripleDES.pm
0822デフォルトの名無しさんNGNG
>>891
そんなプログラム書いてると、FBIにマークされるぞ
0823デフォルトの名無しさんNGNG
>>822は預言者
0824デフォルトの名無しさんNGNG
これじゃだめか?ActivePerlだが

#!C:/perl58/bin/perl5.8.0.exe
#use DES::TripleDES;#(UNIXの場合)
use Crypt::TripleDES;#(ActivePerl/ppmの場合)
open(FILE,$ARGV[0]);
read(FILE,$plaintext,-s $ARGV[0]);
$passphrase="enigma";
my $des = new Crypt::TripleDES;
my $cyphertext = $des->encrypt3 ( $plaintext, $passphrase );
my $plaintext = $des->decrypt3 ( $cyphertext, $passphrase );

print $plaintext
0825デフォルトの名無しさんNGNG
open(FILE,$ARGV[0]);#$ARGV[0]は最初の引数 $ARGV[0]にファイル名を入れる
read(FILE,$plaintext,-s $ARGV[0]);
#-s でファイルのサイズの取得、$plaintextにバッファを詰める

>>ピーとかビープ音
うーんこれはもっとプログラムの勉強しようC言語とかアスキーコードとか
0826819NGNG
>>822
え?輸出制限はもうなくなったのでは?

>>824
それなら出来るんですけど一回ファイルに書き出して
それを読み込むと途中までしか読めないんです^^;
普通のファイルだと読めているので暗号化した文字列の問題なんでしょうか?

>>825
readで読んでも同じところで切れてしまいます。
C言語とかアスキーコードとかの勉強をするとビープ音が分かるようになるんですか?
0827デフォルトの名無しさんNGNG
binmode
0828819NGNG
>>827
解決、有難うございます。

ところでTripleDESって勝手に使っちゃいけないんですか?
0829デフォルトの名無しさんNGNG
バレなければいいんじゃない?
0830デフォルトの名無しさんNGNG
すみません、思いっきり初歩的な質問ですが2点ご教授願います。

$| = 1;
これはどういう意味でしょう?

print (pack 'H*', $1);
これも意味が分かりません。
H*は16進数文字列 (上位ビットが先)、だと思うのですが、$1は1文字???

Pascalでのプログラミングは慣れているのですが、Perlは初めてなので
どなたか教えてください。
0831デフォルトの名無しさんNGNG
>>830
$| = 1;

現在selectされている(初めはSTDOUT)をバッファリング無しに設定する。
$|=1;
$i=10;
while($i--){print '>'; sleep(1);}
これを$|の値が0の時と比べてみると違いが分かるかも。
0832デフォルトの名無しさんNGNG
×されている
○されている出力チャネル
0833デフォルトの名無しさんNGNG
>>830
$| : http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html
pack: http://homepage2.nifty.com/Catra/memo/perl_pack.html
$1: http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlre.html
0834デフォルトの名無しさんNGNG
>>831-833
Thanks!
0835デフォルトの名無しさんNGNG
すみません、830です。もう一つだけご教授願います。
my $data_format = 'Lff';
my $data_length = 20;
syswrite FILE, $data, $data_length;
この$data_formatの形式を教えてください。
解説しているサイトへのリンクだけでも結構です。
0836デフォルトの名無しさんNGNG
$data_format使ってないじゃん
0837デフォルトの名無しさんNGNG
>>835
http://www.google.co.jp/search?num=100&q=format+Lff
http://www.hyuki.com/writing/techask.html
0838デフォルトの名無しさんNGNG
>>835
man perlfunc で pack TEMPLATE のところ見れ。
つーかそれ以前にperlのマニュアルひととおり読め。
0839デフォルトの名無しさんNGNG
>>836
思いっきりお馬鹿な質問の書き方してスマソ。
引用をとちってました。使っているのは
my $data = (pack $data_format, $time, $a, $b);
です。

>>837
だよな。本来だったら回線切って逝ってこなきゃいけないよな。
これだけ聞いたらもうご迷惑は書けないのでスマソ。
ぐぐってもローパスフィルターしか出て来ないんですよ。

>>838
ゴメン。今「はじめてのperl」の到着待ちっす。
0840839NGNG
ごめん。分かった。
符号無しLongと単精度浮動小数点のことだったみたい。
回線切って逝ってくる。
0841デフォルトの名無しさんNGNG
age
0842デフォルトの名無しさんNGNG

0843山崎 渉NGNG
(^^)
0844デフォルトの名無しさんNGNG
WindowsでPerlを使ってシリアル通信をしたいんですけど、
(具体的には携帯電話のメモリ読み書きなど)
どうやればいいんでしょうか?
0845デフォルトの名無しさんNGNG
ドライバとモジュールを用意して、ファイルのように読み書き
0846デフォルトの名無しさんNGNG
open(AUX,">AUX");
select AUX;
print "ATD110\n";
0847844NGNG
>>845
ドライバというのはシリアルケーブルのドライバのことでしょうか?
モジュールとはPerlモジュールですか?

>>847
AUXというのはシリアルケーブルにつながれた携帯電話を示すのでしょうか?
0848844NGNG
>>847→>>846でした。
print "ATD110\n";
というのは110番に電話をかけるということかな?(w
0849デフォルトの名無しさんNGNG
読み書きする方法を確立するのはperl以前の話だし、
読み出した後のデータフォーマットの扱いは
既にperlの話ではないし
0850デフォルトの名無しさんNGNG
>>844
まずググったのか?CPANでモジュールの検索をしたのか?と小一時間.........(ry
0851デフォルトの名無しさんNGNG
>>850
いろいろ調べてみたら、
http://www.e-founder.net/serial.php
こうゆうのが出てきたんですけど、
open_prtの引数には何を入れれば入れればいいかが分かりません。
(そもそもWinでも使えるのか?)

他にはDevice::serialportとかありましたけど、
これもいまいち使い方がわかりません。

↓こことか見ると
http://www.att.or.jp/perl/faq/perlwin32faq/perlwin32faq8j.html#How_do_I_read_from_and_write_to_
普通に
open( PORT, "+>COM1" )
とかでいいみたいに書いてありますが。
0852デフォルトの名無しさんNGNG
>>851
CPANにWin32-SerialPortというモジュールがある。
それをインストールして試せ。 インストールの仕方を聞くなんて野暮はすんなよ。
そのドキュメント読んで使い方を理解しろ。 英語は苦手なんて泣き言はいうなよ。
成功を祈る。
0853デフォルトの名無しさんNGNG
つかレス読んでると通信自体が分かってないようだが。Perl以前の問題だな。
0854デフォルトの名無しさんNGNG
>>853
>Perl以前の問題だな。

ホー、コンピュータ全般に通じてらっしゃる方は言うことが違う
0855デフォルトの名無しさんNGNG
×言うこと
○仰ること

はい、もう一度
0856デフォルトの名無しさんNGNG
>>854
「でばいすふぁいる」ってしってまちゅか?
0857デフォルトの名無しさんNGNG
>>855
ご指摘感謝、謝々。 では、改めて

ホェー、コンピュータ全般に通じてらっしゃる方はホザクことが違う
0858デフォルトの名無しさんNGNG
コンピュータ全般以前に、目的と手段の区別が付いてない。
0859デフォルトの名無しさんNGNG
>>854
何言ってんだ?通信路さえ確保できればあとは言語に関係ないだろう。
逆切れすると誰も答えてくれなくなるよ。
0860デフォルトの名無しさんNGNG
>>859
これは、これは。全知全能のカビ様。
あバレな私めをお救いくだざいましぇ(ケケケ
0861デフォルトの名無しさんNGNG
>>859
お偉いさんの発言だね。うふ。
素人がカラスの時の苦労がわくぁんねぇだろな。
0862デフォルトの名無しさんNGNG
なんかバカがくやしがってるな。(ケケケ
0863デフォルトの名無しさんNGNG
南下、歯応江のないスレ
馬鹿は馬鹿なりに頭いいと思い込んでるんだろな
0864デフォルトの名無しさんNGNG
>>863
>>6
0865デフォルトの名無しさんNGNG
PerlはWEBプログラム言語かよ・・・狂ってるな
0866デフォルトの名無しさんNGNG
PerlはShellScriptの代わりだよ。
今時WebProg板にスレがあるのがおかしい。後方互換のためにあるようなもんだ。
0867デフォルトの名無しさんNGNG
まあ、ここは隔離スレなんだがな
0868844NGNG
>>852
了解です。Win32::SerialPort使うことにしました。
ActivePerlではPPMに対応してないみたいですが、
見た感じPurePerlなのでそのまま使おうかと思います。

英語は何とか翻訳しつつできると思いますが、
>>853の言うとおりシリアル通信についてほとんど知識がないので
まだ使いこなせないかも・・・



0869デフォルトの名無しさんNGNG
http://ingres.t.u-tokyo.ac.jp/Lecture/WebApplication/text/node223.html
のようにモジュールを作成し、
http://ingres.t.u-tokyo.ac.jp/Lecture/WebApplication/text/node224.html
のように呼び出すと

Undefined subroutine &main::tashizan called at keisantest.pl line 11.

のようなエラーがでます。

my $val3 = tashizan($val1, $val2);

のところを

my $val3 = Keisan::tashizan($val1, $val2);

すれば動きますが、これが正しいのでしょうか?
当方の環境は以下の通りです。

This is perl, v5.6.1 built for cygwin-multi
0870デフォルトの名無しさんNGNG
>>869
理解して使えよ
0871デフォルトの名無しさんNGNG
( ^▽^)<女の子理解してよ〜♪(ボエー
0872852NGNG
>>868
Win32-SerialPortはWin32-APIを使ってシリアル通信関係のAPIをPerlで
使えるようにしたモジュール。->要インストール、Win32-API
だから、「Windows RS232C API」とか「Windows シリアル通信 API」などを
キーワードにしてググればperl以外でのAPIの使用例がヒットするはず。
参考になると思う。 ガンガレ!
0873844NGNG
>>872
ありがとう、がんばります!
0874デフォルトの名無しさんNGNG
>>870
ありがとう、がんばります!

といいたいところだけど、理解してないから聞いてんだけどなぁ。
つーか使ってるんじゃなくて使おうと思ってるだけだけど。

まあ、それはいいとして「perl 名前空間」というキーワードでぐぐってみたらExporterの使い方に問題があたかもしれない。

上記URLサンプル
@EXPORT = qw(Tashizan);

私的改訂版
@EXPORT = qw(tashizan);

0875デフォルトの名無しさんNGNG
>>874
>>6
0876デフォルトの名無しさんNGNG
数字の文字列があるとして(可変長)
それを初めてある数字が出てくる場所から文字列の最後までに切り詰めるにはどうすれば?
例)
123456789というのを
初めて5が出てくるところから最後までの
56789に切り詰める(置換する)

s/(5\d+)$/$1/ とやったら全部まるまるマッチしてしまう・・・
0877876NGNG
置換対象の数字ですが
「初めて」の数字が先頭に来ることもありますし、最後の1文字(1桁目)だけになることもあるし
文字列に複数回出現することもあります
0878デフォルトの名無しさんNGNG
s/(\d*)5/5/なんてどうよ
0879デフォルトの名無しさんNGNG
s/(5\d+)/$1/ じゃだめ?
0880デフォルトの名無しさんNGNG
>>876
ちなみにそれ、「全部まるまるマッチしている」わけじゃないよ。
マッチしているのは"56789"の部分だけ。
"123456789"の中の"56789"を"56789"に置き換えた結果が
元の文字列と何も変わらないのは当然のことだよ。
0881デフォルトの名無しさんNGNG
$1をなにかに代入
0882デフォルトの名無しさんNGNG
>>876
$num = 123456789;
$num = substr $num, index($num, '5');
0883デフォルトの名無しさんNGNG
置換でやるなら
$num =~ s/^.*?(?=5)//;
0884デフォルトの名無しさんNGNG
$num = s/^[^5]*//;
0885デフォルトの名無しさんNGNG
>>880
あ、そうですね・・・(゚д゚;)

皆さんしょーもない勘違いに付き合って下さってどうもです
0886デフォルトの名無しさんNGNG
「Perlについての質問箱 4箱目」スレをどうしても見たいんですけど
どうしたらいいですか?
0887_NGNG
http://homepage.mac.com/hiroyuki44/
0888デフォルトの名無しさんNGNG
Perl5のコードをPerl6の文法で記述することができる
プラグマってありましたっけ?
0889デフォルトの名無しさんNGNG
>>886
●を買う
0890デフォルトの名無しさんNGNG
って思ったらとっくにHTML化してんじゃん。
ほれ
http://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
0891デフォルトの名無しさんNGNG
>>890 また騙されたスレ
0892デフォルトの名無しさんNGNG
悪質ないたずらはやめてください
0893デフォルトの名無しさんNGNG
>>886
2ちゃんねるプラスという雑誌に書いてあるIDとパスを(ry
0894デフォルトの名無しさんNGNG
PerlはXMLデータの送受信ってできるんかな?
HTTP(S)のPOSTで。(CGI)
0895デフォルトの名無しさんNGNG
>>894
できるよ。
> HTTP(S)のPOSTで。(CGI)
あっそ。(・∀・)カエレ
0896デフォルトの名無しさんNGNG
>>888
Perl6::Classesとかだなぁ。
http://search.cpan.org/modlist/Perl6 を山椒。

つかもうcpan色戻ったのね。
戻ったら戻ったでなんだかまた落ち着かないなぁ。
0897デフォルトの名無しさんNGNG
ファイルをカレントディレクトリ以外に作るとき、
open(FILE, ">c:\\dir\\file.txt");
と書けば作れますか?
chdirを使わないとダメですかねぇ?

まぁ自分で書いてみればいいんですけど…。
0898デフォルトの名無しさんNGNG
>まぁ自分で書いてみればいいんですけど…。

分かってんならやれ
0899デフォルトの名無しさんNGNG
釣れた
0900デフォルトの名無しさんNGNG
釣れた
0901デフォルトの名無しさんNGNG
釣れた
0902デフォルトの名無しさんNGNG
釣られちゃった
0903デフォルトの名無しさんNGNG
     /V\
    /◎;;;,;,,,,ヽ
 _ ム::::(,,゚Д゚)::| < (ry
ヽツ.(ノ:::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
0904デフォルトの名無しさんNGNG
釣れた
0905デフォルトの名無しさんNGNG
HTMLファイルを読んで解析するCPANにあるモジュールの定番って
何でしょうか?
例えば、
<font size="+2" color="red">大きな赤い文字</font>
だと、タグ名=font、size="+2"、color="red"、値=大きな赤い文字
みたいに取り出すイメージです。
0906デフォルトの名無しさんNGNG
>>905
perlをインストールしても、モジュールは何がインストールされていて
どういう事ができるか、ドキュメントを読みもしない香具師がこういう
クソな質問をする。
0907デフォルトの名無しさんNGNG
>>906
まぁ落ち着け。
>>905は定番を聞いてるだけなんだからいいじゃないか。
それぐらい答えてあげようよ。

>>905
定番なんか聞いてどうすんだ。自分の使いやすい奴を使えばいい。
0908デフォルトの名無しさんNGNG
>>905
質問する前に
http://www.cpan.org/modules/by-category/15_World_Wide_Web_HTML_HTTP_CGI/ を
眺めたのか?と小一時間.....(ry
HTMLを(構文)解析するを英訳すると何になるか考えたことがあるのか?と小一時間.....(ry
0909デフォルトの名無しさんNGNG
>>905
HTML::Parserだべ。解析するHTMLはutf8に変換した方が吉。
package FontParser;
use strict;
use HTML::Parser;
use base qw (HTML::Parser);
sub start {
my( $self, $tagname, $attr, $attrseq, $origtext ) = @_;
if ($tagname eq 'font') {
$self->{font}++;
for my $key (@$attrseq) {
my $value = $attr->{$key};
print "$key: $value\n";
}
}
}
sub text {
my($self, $origtext, $is_cdata) = @_;
print "text:$origtext\n" if $self->{font};
}
sub end {
my( $self, $tagname, $origtext ) = @_;
$self->{font} ='';
}
1;
use FontParser;
my $str = '<font size="+2" color="red">大きな赤い文字</font>';
$p = new FontParser;
$p->parse($str);
0910デフォルトの名無しさんNGNG
>>909
s/$self->{font} ='';/$self->{font} ='' if ($tagname eq 'font');/
0911デフォルトの名無しさんNGNG
perlまたはphpで、次のようなプログラムを作りたいと考えています。

スクリプトを置いているサーバーから、別のサーバーにおいてあるphpで書かれた
ファイルを実行したときに出力されるHTMLソースをコピーし、スクリプトを置いてある
サーバーに保存する。

どういう方法があるかお願いします。
0912_NGNG
http://homepage.mac.com/hiroyuki45/
0913デフォルトの名無しさんNGNG
>>911
ブラウザで〜.phpや〜.cgiにアクセスして表示されたページをファイルに保存する

これと同じ働きをするプログラムを組めばいい
0914デフォルトの名無しさんNGNG
つーかPerl|php以前の話だな・・・
0915デフォルトの名無しさんNGNG
>>913
いや、だからperlで〜.phpや〜.cgiにアクセスする方法を知りたいんですが。
0916デフォルトの名無しさんNGNG
>>913
LWPモジュールを使えばできる。
0917デフォルトの名無しさんNGNG
ヒント
LWP

あとはググれ
じゃーな
0918デフォルトの名無しさんNGNG
>>913
http://digit.que.ne.jp/work/index.cgi?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FLWP
0919デフォルトの名無しさんNGNG
>>916-918
ありがとうございます。LPWは入っているようなので、試してみたらできました。
・・・意外と簡単なんですね・・・
0920913NGNG
おい、俺はLWPぐらい知ってるっての^^;
0921デフォルトの名無しさんNGNG
おまえらケコーンしすぎだろ
0922デフォルトの名無しさんNGNG
素朴な疑問なんだけどCGIは一切作らないけど、
perlを頻繁に使ってるって人はこの板にどのくらいいるの?

出来ればOSの種類とかも教えてくれると面白いカモ。
0923デフォルトの名無しさんNGNG
ちなみに俺はCGIのperlだったから。
で、案外perlはやるなってコトでwinでもTk入れて遊びで動かしたりしてる。
unix系は持ってないし。
0924デフォルトの名無しさんNGNG
漏れは、cgiもつくるけど、データコンバータなどを作ったりして重宝しとる。

あと、他にもやってるが素性がバレるでな(w
0925デフォルトの名無しさんNGNG
cgiは作ったことないけど、各種テキスト処理とか、
ネットワーク絡みとか、何でもやらせてる。
バイナリも扱う。
モジュールは殆ど使ってない。

昔ならCで書いてたのを、より楽な言語でやってるだけ。
0926デフォルトの名無しさんNGNG
4のころはいろいろツールを作るのに使ってたよ。
5で挫折した。
0927デフォルトの名無しさんNGNG
俺も>924みたいな感じ。
簡単に組めるし文字列にも強いからちょっとしたデータコンバータに便利だな。
0928デフォルトの名無しさんNGNG
>>924はアヤシイ会社のスパマー
0929デフォルトの名無しさんNGNG
データコンバータってなんですか?
0930デフォルトの名無しさんNGNG
データをコンバートするプログラム
0931デフォルトの名無しさんNGNG
INCMのプラグイン作成とか
0932デフォルトの名無しさんNGNG
>>922
漏れがそうだよ。翻訳をやっていて、辞書のデータをコンバートするために
覚えた。その後もユーザ管理とかデータ処理などに使っている。
0933デフォルトの名無しさんNGNG
特定用途のシェアウェアがごろごろしてるのを見ると、
簡単なperlくらい必須科目にしたくなるな
0934659NGNG
必須科目にしても使わない人のほうが多そうだから、あれじゃないかな。

CGI以外ではプログラマのための言語って匂いがするなぁ。。
自作実行、みたいな。
そうでもない?
0935デフォルトの名無しさんNGNG
名前に変な数字入った。気にしないでくれ。
0936デフォルトの名無しさんNGNG
ネタニマジレ(ry
0937デフォルトの名無しさんNGNG
Perlのサクッと作ってサクッと実行できる感覚が止められない。
これでGUIもサクッとできたら(俺の中では)完璧だなぁ。
(Tkはかっちょ悪いので使いたくないです)
0938デフォルトの名無しさんNGNG
>>934=Windowsしか使ったこと無い
0939デフォルトの名無しさんNGNG
>938 = MZ-80K しか使ったことない。
0940905NGNG
>>909
ありがとうございました。

そのモジュール、スレッド対応Perlでは動かなかった...
0941デフォルトの名無しさんNGNG
>>939
キーボード半田付けした人
0942デフォルトの名無しさんNGNG
>>940
> そのモジュール、スレッド対応Perlでは動かなかった...

HTML::Parserがスレッドセーフじゃないってことか?信じられんな。
HTML-Parser-3.28のソース眺めたけど、無問題と思えるのだが。

オイ、オマイ等の中で分かる香具師いらっしゃいますか?
0943デフォルトの名無しさんNGNG
system("find data/ -type f -atime +1 -exec rm {} \\;");

このようにして1日更新のないファイルを削除するようにしているのですが
XREAというレンタルサーバーでは動いてくれません。
なにか回避方法はないでしょうか?
0944デフォルトの名無しさんNGNG
>>943 perl で書きなおす。
0945デフォルトの名無しさんNGNG
open(FH,"+>data.dat");
$line = <FH>;
print $line;

てやってもdata.datの内容が表示されないんだけどなんでですか?
data.datには文字列が一行だけ入ってます。
0946デフォルトの名無しさんNGNG
open した時点で内容が消されるから
0947デフォルトの名無しさんNGNG
>>945
何故それで読めると思いましたか?
0948945NGNG
   / ̄ ̄ ̄ ̄ ̄ ミ
  /  ,―――─―-ミ
 /  //     \|
 |  / ,(・ )   ( ・)  ハァ
  (6       つ   |    ハァ
  |      ∪__  |
  |      /__/ /
/|     ∪   /\

夏厨だから
0949デフォルトの名無しさんNGNG
スレッドセーフじゃないモジュールをスレッドで使用するのに
何か回避策はありますか?
0950(・∀・)ニヤニヤ ◆IuDnGO5LnY NGNG
Rubyでライブラリをセルフテストする方法として

if $0 == __FILE__
  xxx
end

ってのがありますが、Perlで同等のことはできませんか?

Perlにはちゃんとテスト用の機構があるのは知ってますが、
・require/use等で使われたときは実行されず、
・直接起動したときだけ実行される
・Perl4でも動作する記法
を知りたいのです。

よろしくおながいします。
0951デフォルトの名無しさんNGNG
>>942
5.005_03なのですが、Can't load ..... Parser.so
DynaLoader.pmでPL_stack_max(だったかな)でundefinedうんぬんて出てきました。
Perlのバージョンが悪いのかな。
Parser.pmはバージョン3.08でした。
0952デフォルトの名無しさんNGNG
>>950
もともとPerlで使われてた手法だろ。
0953ハッカ飴NGNG
CPANモジュールのAlgorithm::Diffってちゃんと動く?
少なくとも俺の環境では正しい結果を返さないんだが。
0954デフォルトの名無しさんNGNG
なにやっても動かぬ。
0955デフォルトの名無しさんNGNG
そうですか。
0956ハッカ飴NGNG
そんなわけあるか。
ドキュメントにある
a x b y c z p d q
a b c a x b y c z
でさえ
a x b y c z p d q
a b c a x b y c z
になっちゃうんだぜ?
0957デフォルトの名無しさんNGNG
へー・・
0958ハッカ飴NGNG
違う違う、こうだこうだ。
a    x b y c z p d q
a b c a x b y c z
0959デフォルトの名無しさんNGNG
ほー・・・
0960デフォルトの名無しさんNGNG
ハッカ飴って人は、ただ単にメルフレ募集の人だね。
寂しそう。
0961ハッカ飴NGNG
上手くいかないな。
じゃあ、こう。.は空白だと思ってくれ。

a.......x.b.y.c.z.p.d.q
a.b.c.a.x.b.y.c.z

サンプルスクリプトも載せようか?
俺はググってもこの話が見つからないことが不思議でしょうがないんだ。
何か教えてくれるなら、労力は惜しまないぞ。
0962ハッカ飴NGNG
>>960
俺のポリシーだ。
それにここに書き込む話じゃない。
0963デフォルトの名無しさんNGNG
以上、使えぬデシャバリさんですた。


ここ、スレッドあぼーんするかな。
0964デフォルトの名無しさんNGNG
夏。
0965デフォルトの名無しさんNGNG
>>963
どっちが使えないんだか分からん
0966デフォルトの名無しさんNGNG
>>963
このスレッドに恨みでもあるの?
0967デフォルトの名無しさんNGNG
   ∧_∧ 
   ( ´Д`) <みなさーん、お茶が入りましたよ〜 
  /    \ 
  | l    l |     ..,. ., .,
  | |    | _|。.:_::゜。-.;.:゜。:.:;。
  ヽ \_ .。'゚/   `。:、`;゜:;.::.。:.:。 
   /\_ン∩ソ\    ::..゜:: ゚。:.:.::.。.。:.  
.  /  /`ー'ー'\ \  ゜: ::..゜:: ゚。:.:.:,。:.:.
 〈  く     / / ::..゜:: ゚。:.:.:,.:.:.:。:.:,
.  \ L   ./ / _::..゜:: ゚。:.:.:,.:.:,.:.:.:,
    〉 )  ( .::旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦.
   (_,ノ    .`ー'旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦.
09682バイト文字に対応したカレントディレクトリを取得するには?NGNG
getcwd()で、カレントディレクトリ名を得る時、
カレントパス名に、文字化けする40種の文字列
(「表」「能」等、所謂「\」コードを含む文字列)
があると、正しく処理されないのですが…

Windows のActive State Perlで、
例えばカレントが
 C:\表示\
である場合、

 use Cwd;
 print getcwd();
の結果は

C:/・示
となります。

どうしたら回避できるでしょう?
(2バイト文字を含むカレントパスを正しく得られるgetcwd
等はないのでしょうか?)
(EUCで書いても同じです。jperlはNGです)
0969デフォルトの名無しさんNGNG
>>968
$path=`cd`;
`はバッククォート。
0970デフォルトの名無しさんNGNG
>>969
cdは帰ってこないでしょ
09712バイト文字に対応したカレントディレクトリを取得するには?NGNG
>>969
ごめんなさい。perlappに内包したいので、
例え標準関数でも外部プログラムは使わず、
perlの中だけで済ませたいのですが…
何か方法はないでしょうか?
0972デフォルトの名無しさんNGNG
>>968
use Cwd;
use File::Spec;

my $cwd = getcwd();
$cwd = File::Spec->canonpath($cwd);

print $cwd;
0973972NGNG
>>972
自分で書いておいてなんだが、いいのか、これで?(w
なんかやばそうな気が。
0974972NGNG
Cwd の _os2_cwd と _win32_cwd で \ を / に置換してるのが原因で、
File::Spec(File::Spec::Win32) の canonpath で / を \ に戻してるわけだから、
とりあえずWin32環境では問題なさそう。
他の環境も大丈夫だとは思う。
0975デフォルトの名無しさんNGNG
WindowsでPerlによるGUIアプリを組むのにVBのように簡単に作りたいんですが、
探してたらこんなの見つけました(既出だったらごめん)。

http://www.bahnhof.se/~johanl/perl/Loft/

ただこれはソフトもマニュアルも英語なんですよね。
別に英語でもなんとか使えると思いますが、
二本のPerl界の発展のためにソフト・マニュアルのの日本語化を
してくれるような素敵な香具師はいらっしゃいませんか?

(By 日本のPerl界を憂うもの)
0976デフォルトの名無しさんNGNG
>>975
二本→日本でした。
0977デフォルトの名無しさんNGNG
>>975
あんたがやったら?
0978デフォルトの名無しさんNGNG
ActivePerl ver6まだ〜?
0979デフォルトの名無しさんNGNG
>>977
それ言われると思った。
残念ながら英語に関してはあまり得意ではないので、
誰か英語得意な方にお願いしたいなと思っております。
0980ハッカ飴NGNG
diffの件なんだけどさー、Rubyのalgorithm/diffもCygwinのdiffも同じようになるんだが、おかしいよな?
ググっても相変わらずこの話は見つからないし。ホント謎だよ。

例1
テキスト1:
abc
テキスト2:
ababc

結果1
ab[ab]c
(テキスト1のbc間にabを追加しろ)

例2
テキスト1:
a
b
c
テキスト2:
a
b
a
b
c

結果2
a
b
[a]
[b]
c
(テキスト1の3行目にa、次の行にbを追加しろ)
0981デフォルトの名無しさんNGNG
>>974
ActivePerl build 805 +WindowsXPでは駄目。
ActivePerlはMS-WindowsでShift-JISが
使われているということを無視してる。
0982デフォルトの名無しさんNGNG
>>979
>残念ながら英語に関してはあまり得意ではない

得意になればいいじゃん
0983ハッカ飴NGNG
>>974
/ 全てを \ に置き換えてもダメだろう。
シフトJISについて調べて、置き換えるべき / だけを置き換えないと。

シフトJISだから、第1バイトを探すのは簡単。
use Cwd;
$cwd = getcwd();
のあとで、$cwd =~ s%(シフトJISの第1バイトにあうパターン)/%\1\\%g;
0984デフォルトの名無しさんNGNG
>>982
いや〜誰かにやって欲しいなぁ。
ホント他力本願なんだけど・・・

もう少しでこのスレも6箱目に突入ですなぁ。
(しみじみと)
0985ハッカ飴NGNG
>>971
getcwd()だって内部でcdコマンド使ってるんじゃない?
0986デフォルトの名無しさんNGNG
Cで使えるPerlライブラリみたいのってありませんか?
09872バイト文字に対応したカレントディレクトリを取得するには?NGNG
>>972
で無事解決しました。感謝ですm(__)m

canonpathというの自体初めて知りました。。
書き込み入れる前にも色々調べはしたんですけど…
こういうのって、何を参考に調べれば良いんでしょう?
0988デフォルトの名無しさんNGNG
>>983
シフトJISなら2バイト文字で /(0x2F) が出てくることはないし、
Windowsじゃファイル名に / も使えないから、元々含まれてる
ことはないと判断して単純に全置換でいいと思ったんだけど……なんか抜けてる?

あ、それとも / 区切りのパスを得るために、ってこと?
0989デフォルトの名無しさんNGNG
「\x9A」という16進数のデータを「\x9A」という文字列データに
変換したいのですがどうすればいいでしょうか?
0990デフォルトの名無しさんNGNG
>>989
$str .= '\x9A";
0991デフォルトの名無しさんNGNG
クオテーション間違えている上にだめじゃん。

$ch = char(0x9A);
0992ハッカ飴NGNG
>>988
そうか。
全部置き換えて良かったのか。
0993デフォルトの名無しさんNGNG
>>970
ハァ?
0994(・∀・;)ニヤニヤ ◆IuDnGO5LnY NGNG
>>952
そうなんですか?

そうすると、Rubyの↓を

  if $0 == __FILE__
    xxx
  end

Perlに直すにはどうすればいいんでしょう。

  if ($0 eq ??) {
    xxx;
  }

??の部分が分かりません。。
0995デフォルトの名無しさんNGNG
$ perl -e 'print __FILE__, "\n"'
-e
0996デフォルトの名無しさんNGNG
次スレは?
0997(・∀・;)ニヤニヤ ◆IuDnGO5LnY NGNG
>>995
えっ、えっ、・・・なんだかものすごい勘違いをしていたようです。

if ($0 eq __FILE__) {
  xxx;
}

これでいいのれすね。ありがとうございました。

んでは、逝ってきます★
0998デフォルトの名無しさんNGNG
>>997
逝くまえに新スレ立てて
0999(・∀・)ニヤニヤ ◆IuDnGO5LnY NGNG
>>998
建てますた。
1000デフォルトの名無しさんNGNG
1000000000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。