Perl言語に詳しい人に質問!

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Perl言語で、(x+1)の2乗やら、(x+y)*(x+2y) などといった
計算を行うにはどうすればよいでしょう?
もちろん2乗は「(x+1)**2」なんて事は承知してますが、
このまま計算するとモロにエラーw(当たり前)
ちなみに欲しい出力結果として、
前者は「x^2+2x+1」後者は「x^2+3xy+2y^2」。

分かる方お願いしますm(_ _)m
mathematica 買え。
単発質問するな。
終了。
MATLABの方がいい、と思う23の秋。
4デフォルトの名無しさん:02/11/16 03:12
ってか質問自体が(´ー`)ワケワカンネーヨ
5デフォルトの名無しさん:02/11/16 03:12
>>2.3
やっぱこのプログラム組むのって難しいもんかな??
一度組んでみたいんやけども。
>>5
C++で、ひたすら演算子をオーバーロードして、多項式オブジェクトを
返すようにすれば出来ない事も無いんじゃない?

つーか俺の大学の某研究室で、上のようなことをやりつつ、さらに微分まで
同時に計算する、みたいなパラダイムを研究している教授がいたはずだか。
Splusがいい!
重複スレです。
既存の Perl スレで質問してください。

Perlについての質問箱 2箱目
http://pc3.2ch.net/test/read.cgi/tech/1033688230/
print (x*x)+2*x+1;
print "\n";
print (x*x)+2*x*y+2*(y*y)
あぼーん
#!/usr/bin/perl

exit 0 unless (@ARGV);

$ARGV[0] =~ s/\(//g;
$ARGV[0] =~ s/\)//g;
$ARGV[0] =~ s/ //g;
($hoge, $hero) = split(/\*/, $ARGV[0]);
@hoge = split(/\+/, $hoge);
@hero = split(/\+/, $hero);
@result = undef;
for ($i = 0; $i <= $#hoge; $i ++) {
for ($j = 0; $j <= $#hero; $j ++) {
$hogen = int($hoge[$i]);
$hogen = 1 unless($hogen);
$hogec = $hoge[$i];
$hogec =~ s/\d//;
$heron = int($hero[$j]);
$heron = 1 unless($heron);
$heroc = $hero[$j];
$heroc =~ s/\d//;
$resultn = $hogen * $heron;
if (($hogec eq "") && ($heroc eq "")) {
$resultc = "";
} elsif ($hogec eq $heroc) {
$resultc = $hogec . "^2";
} else {
if (ord($hogec) < ord($heroc)) {
$resultc = $hogec . $heroc;
} else {
$resultc = $heroc . $hogec;
}
}
$resultc =~ s/ //g;
push(@result, $resultn . $resultc);
}
}
for ($i = 0; $i < $#result; $i ++) {
for ($j = $i + 1; $j <= $#result; $j ++) {
$in = int($result[$i]);
$ic = $result[$i];
$ic =~ s/\d//;
$jn = int($result[$j]);
$jc = $result[$j];
$jc =~ s/\d//;
if ($ic eq $jc) {
$result[$i] = sprintf("%d%s", $in + $jn, $ic);
$result[$j] = 0;
}
}
}
# ここで @result をソートする。未完。
$out = undef;
foreach (@result) {
$_ =~ s/\d// if (int($_) == 1);
$out .= sprintf("%s + ", $_) if ($_);
}
$out =~ s/ \+ $//;
print "$out\n";
__END__

>>1
いいヒマつぶしになったよ。
【使い方】
数式を " " でくくってコマンドライン引数としてわたす。
( ... ) * ( ... ) の形式のみ対応。
括弧内の項はいつくあってもいい。
このスレ乗っ取れそうだな。
しばらく保守しとこう。
お腹空いた。
ねむねむ。
あさあさ。
      ミ ミ
〜√グラ(,,゚Д゚)    釣られてみまつた
  (/(/ ̄U U
                      しかもこの板はくっきがいるのでつね・・・
トリップつけとこ・・・
ギコタンども。
上の方ではトリップだけで割とまじめに振舞ってます。
22巡礼者 ◆ejITJunReI :02/12/13 22:36
足跡ペタペタ



ってここ何板?
巡礼者さんども。
プログラム板です。
簡単な質問に答えて自己満足に浸ってます(-w-)
こんな底のほうで何やってんだか。
暇してますw
暇してるとこ悪いけど、posって関数知ってる?
perl5で入ったのかな。手元にあるラクダ本には出てないんだけど。
test
>>26
遅レスすまそ。仕事で二泊の当直でしたw

----perlmanjより引用----
>pos SCALAR
>対象の変数に対して、前回の m//g が終了した場所のオフ
>セットを返します。 そのオフセットを変えるために、変
>更することができます。
----perlmanjより引用----

つまり $s = "abacadaeaf" について $s =~ m/a/g を行ったとき
"a" は 1byte 目にあるので pos($s) は 1 を返します。
ここで pos($s) ++ として $s =~ m/a/g すると pos($s) は 3 を返します。
サンプルプログラムと実行結果を示します。

$s = "abacadaeaf";
$s =~ m/a/g;
printf("%d\n", pos($s));
pos($s) ++;
$s =~ m/a/g;
printf("%d\n", pos($s));
__END__

1
3


ああ、マジレスしてしまったよ。
>>28
tnx
gを付けなきゃ関係ないわけね。

> ああ、マジレスしてしまったよ。
んじゃまた底のほうでマターリとたゆとうててくだちい。
>gを付けなきゃ関係ないわけね。
g 無しで試したら役に立たなかったよ。
指摘されて気付きました。どもです。
この板は底の方は静かだなあ。
保守っぽい。
暇っぽい。
記念かきこ
おこしやす〜(^^)
ム板は底の方は静かでつ。
時々えびえびだんと読みそうになる。
なぜにえびえび?(^^;)
なぜか虫偏と間違えちゃうんだろうな。
おお!蝦って字があったのか!!
海老しか知らなかったよ(^^;;
鯣なんて字は知ってるくせに…。
読めなくてkakasiに聞いちゃったよ。
知りませんでした。
「するめ」と入力してスペースバーを押したら出てきました。
ことえりマンセーvv
風邪ひいてへろへろです。
でも午後から出勤です。
学生のころは無責任に休めてよかったなと。
今、一番底のスレに記念カキコしてきた。
一瞬、上げちゃってこれを底にしようかという誘惑にかられたけど、我慢しますた。
えらいぞ
ほめられちった。
では、崖っ淵ギリギリ進行で。
相変わらず風邪でへろへろです。
昨晩は夜勤だけやって今朝早々に帰ってきました。
底スレにも書き込んできました。
引き続き潜行します。
肴はあぶったイカで(・∀・)イイ!!
お酒はぬるぽの燗が(・∀・)イイ!!
お前と二人酒〜ってほんとに二人切りのような(藁
おはようございますー。
一人でもム板でかまってくれる人がいただけ嬉しいです(藁
ずっと一人上手しなきゃいけないかと思ってました(^-^;

   ( ・∀・)   | | ガッ 
  と    )    | |
    Y /ノ    人
     / )    <  >_∧∩
   _/し' //. V`Д´)/ ← >>48
  (_フ彡        /
500/500
ヤター(・∀・)底ダー!!
53デフォルトの名無しさん:02/12/26 22:58
馬鹿晒し上げ
ウワー(・∀・)アゲラレター!!
55 ◆F52DmOxJlc :02/12/27 17:50
69/501
地道に潜行中。
うーむ、少し目を離してたら上げられてしまった。
冬休みだなぁ。
57 ◆F52DmOxJlc :02/12/28 20:04
109/503
また沈みますヨー。
58デフォルトの名無しさん:02/12/28 23:43
冬休み上げ
59デフォルトの名無しさん:02/12/28 23:58
1/503
また沈みますヨー。
藻毎ら、あげるのはスルメじゃなくてタコに汁!
61 ◆F52DmOxJlc :02/12/29 15:49
60/503
(´-`) 。oO(最近、浮き沈みが激しいなあ…。)
62デフォルトの名無しさん:02/12/29 17:32
掲示板を自作しはじめた者です。だいたい完成したという状況です。

投稿された本文の中に何らかのURLが入っていた場合、それをリンク表示
させる記述はどうやったらよいのでしょうか。この2chのようにです。

下らない質問ですいませんが、どなたかマジレスして頂ければと思います。
宜しくお願いします。
>>62
アンカー
64 ◆F52DmOxJlc :02/12/29 19:18
>>62
$text =~ s/(http:[\/\w\d\.\?\&@-~=:%]+)/<a href=\"$1\">$1<\/a>/g;

http から始まる英数字と _ / . ? & @ - ~ = : % の連続を見付けてアンカータグに置換。
他に URL を構成しそうな文字があれば [ ] の中に追加すればいい。

まともな質問で嬉しいので age w
65 ◆OWvri48Ioo :02/12/29 19:24
>>62
ごめん、修正。
$text =~ s/(http:[\/\w\.\d@\-~=:%\?\&]+)/<a href="$1">$1<\/a>/g;

- の前にバックスラッシュつけないとダメみたい。
恥ずかしいので sage w
66 ◆F52DmOxJlc :02/12/29 19:25
しかもトリップ間違えるし……(鬱
67デフォルトの名無しさん:02/12/29 20:00
>>64さん、どうもありがとうございまつ。
ちなみに、$1ってのは環境変数なんですかね…?
参考までに、知ってたら教えて下さいまし。
68 ◆F52DmOxJlc :02/12/29 20:20
>>67
$1 は「一番目の () がマッチした部分文字列」。
() が複数あれば $2, $3 .. なども使える。

例:
$text = 'foo bxr bxz';
$text =~ s/(\w)x(\w)/$1a$2/g;
print "$text\n";

結果:
foo bar baz

ちなみに本スレw
http://pc3.2ch.net/test/read.cgi/tech/1033688230/
>>67
$1?$9には、正規表現のマッチ結果が自動的に格納される。
こんな板初めてだ・・・
あぼんぬさんこんばんはー。
このスレ底にいたんだけどあげられてしまいました。
またぼちぼち潜行するです(-w-)
>>71
どもでつ、潜水開始・・・・・・・・・
73 ◆F52DmOxJlc :02/12/30 19:16
81/508
俺も他のスレに顔出さなきゃな。
では潜行ー(-w-)~゜
74 ◆F52DmOxJlc :02/12/31 09:02
95/505
大晦日ですヨー。
潜りますヨー。
75あぼんぬNO.53:02/12/31 14:42
1/505
大晦日ですヨー。
潜りますヨー。
76 ◆F52DmOxJlc :02/12/31 15:08
ウワー(・∀・)アゲラレター!!

age age ...
77デフォルトの名無しさん:02/12/31 15:40
sub hoge{100000};
if (&hoge){print &hoge};

$hoge = '100000';
if ($hoge){print $hoge};
って、どっちの方がパフォーマンス良いの?
79 ◆F52DmOxJlc :02/12/31 16:00
>>77
それぞれ for ($i = 0; $i < 10000000; $i ++) で時間計ってみた。
上:37秒。
下:30秒。
年越しsage!!
新年おめでとーvv
82あぼんぬNO.53:03/01/01 14:45
ことよろー
>>74
>>82
えーーーーっと、・・・・・・どちらさん?
>>83
大丈夫、我々團員は常にトリップ着用。
本人と騙りの区別は一目瞭然です。
しかし騙りは騙りとして生暖かく受け入れるのが良いと思います。

ってゆーか糞スレageるなYO!!>>82 (・∀・)コトヨロー!!
>>84
わかりました、>>82さんを生温く受け入れます、どうぞイラッシャイ・・・
86 ◆F52DmOxJlc :03/01/01 15:48
>>85
やほー。こんにちはー。
偽あぼんぬさんも入團しないかな?w
87デフォルトの名無しさん:03/01/01 16:14
地下で糞スレを保守しつづける荒らしって何荒らしって言うの??
88 ◆F52DmOxJlc :03/01/01 16:18
地下糞スレ保守荒らしかな?
てゆうか保守は荒らしなの?
自覚無いみたい・・・
閉鎖的な利用を目的として保守をするなら立派な荒らしだよ。
ヽ( ´ー`)ノ 別にいいんじゃない?
92 ◆F52DmOxJlc :03/01/01 18:30
みのがしてくれよー。
ちゃんと Perl の質問には答えてるんだしさー。
てか、気に入らないんなら age なきゃいいじゃん(^^;;
9390:03/01/01 18:35
気に入る入らないの問題じゃないけどね。
削除するほどではないけど一応注意ということで。
9490:03/01/01 18:41
良スレはageる、糞スレは流れてdat落ちするのが自然なわけで
おまえらは板の目的に沿った使い方をしてるんじゃなく
ただ糞スレに棲み付いた害虫に過ぎないわけで
立派な荒らしなわけで
でかい口きくな、しねよ
95 ◆F52DmOxJlc :03/01/01 18:54
叱られちゃった…(´・ω・`)ショボーン
96デフォルトの名無しさん:03/01/01 19:08
あたまもあそこもコッチコチ!


                    Å
                   / \
                 ヽ(´Д` )ノ
                    ( へ)
                     くω
97 ◆F52DmOxJlc :03/01/01 19:24
なんにせよ>>90の言ってることは正しいと思うので撤収します。

Perl の質問はこちらへどうぞ。
http://pc3.2ch.net/test/read.cgi/tech/1041205885/

__END__
荒らしちゃってごめんよー(つД`)
9890:03/01/01 19:47
うっせーしね
おまえのかーちゃんでーべーそっ
おまえのかーちゃんでーべーそっ
おまえのかーちゃんでーべーそっ
おまえのかーちゃんでーべーそっ
おまえのかーちゃんでーべーそっ
99IP記録実験:03/01/08 22:18
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
100ゲトー!
ひろゆきプロ固定になりたいんすけど
雇ってくれません??
>>310
ぶっちゃけ2chはどれくらいもちますか?
僕のIP返してください
携帯から記念カキコ(>.<)ナノ
漏れ達がひろゆきを愛したように、ひろゆきも漏れ達を愛してほしい!
まぁ、匿名掲示板なんかいくらでもあるから
まとめて引越ししたらいいだけなんだけどね
面白い書き込みの割合のうち、法人・会社からの書き込みが
そんなに高いだろうか?ちくり板とかを除けばそうでもないと思うが。

でもUNIX板やプログラム板とかは厳しいかなー
有益な回答レスが減ってしまうかも。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
>>745
相手がその程度で、わざわざ内容証明や令状とって訴えに来るような粘着君なら、狂犬にでも噛まれたと思って諦めれ。
今まで悪ふざけで出来たものがあったような気がするけど、そういうのが出来なくなるような?
>>196
また明け方に現われる・・・・(´Д⊂)
>>196
いや、そんなことはないですよ。
>>813
IP記録スレは有るよ

IP記録実験2
http://news2.2ch.net/test/read.cgi/newsplus/1042030554/
叱られちゃった…('・ω・`)ショボーン
保険板と違ってジサクジエンできないからコピペしてるのかな。
さて、winnyへいくか...
ネタ系でもエロゲとかのネタはかなりやばいだろうな。
ょぅι゛ょネタとかSSとかね。
PTAが見たらぶち切れだよ(w

883 :名無しさん :02/12/28 10:40 HOST:
メグ ◆TOKIQKfFYAさん このスレ見てるか判らないけどちょっとお呼び出しです・・・

★ボランティアさんと一緒★ Part8
http://qb.2ch.net/test/read.cgi/accuse/1039532593/563-
2chは全部IP表示すればよい
>>336
インペリアル・パカ
ならお売りいたしましょうか?
今のところ実験ですが
うまく動いていますよ

これからトラブルは当事者間で解決してもらう方針です。

踏み台にされて書き込まれたらどうなるの?
踏み台にされた奴が訴えられる?
ところで掲示板のS/N比が上がるように、との理由付けが成されているが、
IP記録されると明言されているにも関わらず糞スレは毎日嫌と言うほど立つよね。。
もともと2ちゃんの鯖所在地は、アメリカ国内ですが、何か?
うん、私も暴力にはからきし弱い。ちっぽけなプライドのために痛い思いはしたくない。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
ひろよし良くがんばた。
あまり美咲タン情報を真に受けるのはどうかと・・・・・
敢えて2ちゃん(というかチク裏板)の功績を考えてみると、
世の中はドス黒いってことを漠然と印象づけてくれたことぐらいだろうね。

で、そんなことは大人になれば誰でもわかっていくことだろうし。

漠然としたもの以上に、具体的に2ちゃん発で成功した告発なんてあったっけ?
OSレベルで相手からIPデータ取得の要求があった時にそれに応じるか拒否するか選択できるようにすべきだな
2ちゃんねるができる前はさぞ平和だったんだろうなぁ…
嗚呼、哀しい。
リモホって何?
リモートホストって、用語辞典に載ってないよ
誰かおせーて
2ちゃんねる知らない人4%と言う事は、
96%の人が、2ちゃんねるの存在を知っていると言う事?
お と な で す ね (プ
イパーイ釣れてヨカタね。
どこに報告したの?
批判要望?
( ´,_ゝ`)プッ
遊ぶネタが無くなったら訴えると思う。
絶対勝てるし。
http://wow.bbspink.com/test/read.cgi/feti/1039253916/

の522からなんか出てるんですけど
2chってこんなに変わるの?
アフォか! 2ch に入り浸っているから見えないんだろうな。。

閲覧してなくとも 2ch で書かれていることで名誉毀損を受けているという事実があれば
実際に閲覧していなくとも削除要求は有効だ。

そして、2ch は既に名誉毀損の要件となり得る公共のメディアとして認知度がある、
と裁判所が判断した。わかる?
3.今日は2ちゃんを忘れてゲーセン逝って、喪前の腕を磨いて来る
142山崎渉:03/01/13 18:54
(^^)
2ちゃんねるに近いあるインターネット関連会社の社長は、
2ちゃんねるの幹部から得た話として証言する。
「2ちゃんねるは、運営者や幹部などが
それぞれ別々に会社を作りカネの流れを見え難くしているが、
実際の資金源は複数の大手通信会社系からの調査費名目のカネ。
月額で計約700万円と言い、年間にすれば1億円近く。
額はともあれ、これは通信会社系的には、
ぼう大なトラフィックを調査すると言う表向きの理由が一応は立つ。
自社系に都合の悪い書き込みがされた時に優先的に削除してもらうことも期待している」と前置きし
「通信会社系の削除の期待も含めて、2ちゃんねるは総会屋と同じになっている」と言うのだ。
144山崎渉:03/01/15 18:09
(^^)
Perl 以外は糞!
146デフォルトの名無しさん:03/01/25 19:40
Perlはカス!
147デフォルトの名無しさん:03/02/11 15:57
そろそろ、Ruby にいってもいいんじゃない?
Perl を勉強するための必携の本は何?
お酒はぬるぽの燗が(・∀・)イイ!!
アサカラノンデンジャナイ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>149
151山崎渉:03/04/17 15:56
(^^)
152山崎渉:03/04/20 04:06
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
>>1
Perlの 'l'の意味を考えてみろ。
154デフォルトの名無しさん:03/05/10 16:06
ActivePerlでテンキーの「-」「+」はどのようにしたら送れますか?
155山崎渉:03/05/28 13:04
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
ジオシティーズってCGIできないの?
鼬害
( ',_ゝ`)プッ
なぜにえびえび?(^^;)
160山崎 渉:03/07/15 10:16

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
161山崎 渉:03/08/02 02:54
(^^)
162山崎 渉:03/08/15 17:59
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
163デフォルトの名無しさん:03/09/18 11:42
下がりすぎなので浮上&質問

Date: Thu, 18 Sep 2003 02:34:15 GMT
これを
+9時間するために1900年からの秒数へ変換する必要がある

1900年からの秒数にするにはどうすればいい?
>>163
Time::Local
>>164
ありがと♪
まるちしてやる(付けたししてるけどな)
<img src="hoge">hogehoge<br><a href="hoge/">hogehoge</a><br>

となってるやつから"<"と">"でくくられた所だけを取り出したい
どうすればいい?

・"<"と">"の間に改行コードがある場合もある
・"<"と">"でくくられたやつの数は固定ではない
自分で数えろよ
それぐらい誰だってできる
>>166
エディタでファイルを開く。
<を と置換。
>を と置換。
以上。
169デフォルトの名無しさん:03/10/13 17:24
#(x+1)の2乗
x = 123; #例えば
A = x+1;
print A**2,"\n";

#(x+y)*(x+2y)
x = 1;y=2;#例えば
A = x+y;
B = x+2*y;
print A*B,"\n";

これでいいのだろうか。
170デフォルトの名無しさん:03/10/13 17:27
↑やべ。$つけんの忘れた!

>>169-170
落書きはメモ帳に。
172デフォルトの名無しさん:03/10/14 12:50
偶数と奇数を見分けるプログラムってどうやればできるんでしょうか?
if ($var % 2) {
1,3,5,7,9
}else{
2,4,6,8,10
}
白痴天才が集うスレはここですか
175デフォルトの名無しさん:03/10/15 00:15
>173
そういう手もあったか。
>>172
use Jcode;

my $odd = "\xb4\xf1\xbf\xf4";
my $even = "\xb6\xf6\xbf\xf4";

my $str = "偶数";

my $euc_str = Jcode->new($str)->euc;

if ($euc_str eq $odd){
print "Odd.\n";
} elsif ($euc_str eq $even){
print "Even.\n";
} else {
print "Invalid.\n";
}
2で割ると馬鹿にされるよ
if ($var & 0xFFFFFFFE) {

}else{

}
なにか間違ってるかも知れん
頑なに定石を外すスレはここですか?
activeperlでタイムアウト処理出来ないですかね?
$var & 1 で 0 か 1 の解が得られるかと思う。
$var%2 ? print "奇数\n" : print "偶数\n" ;
183デフォルトの名無しさん:03/11/18 01:58
シリアルポートを下記でオープンして
open(COM1, "+>COM1") or die "Can't open COM1: $!";
read($Port,$response,1);
ってやると永久に待っているのですが、10secで
タイムアウトなんて出来ないんですか?
184デフォルトの名無しさん:03/11/18 02:43
>>183
select
185デフォルトの名無しさん:03/11/18 22:56
>>184
そんなんで、分かるかボケ
ここ1週間くらい、あちこちのスレで煽り逃げしてる暇人がいるね。
2ch に来たばかりの中学生なんだろか。
187デフォルトの名無しさん:03/11/18 23:07
>>186
2chに居座って引篭もってるお前より、マシ
ママン、馬鹿がいじめるよー
>>185
(´-`).。oO(組込関数である事ぐらいは知っておいて欲しいものだ…)
http://perldoc.com/perl5.8.0/pod/func/select.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlipc.html#UDP_Message_Passing

(´-`).。oO(Win32じゃ使えんと思うがな…)
>>189
だから何?
他人の知らない事、知ってるからって偉そうにしないでよ。
>>190
あぁ、ごめん。
組込関数のリファレンスぐらいは調べて欲しいものだ、と書くべきだったな。
http://perldoc.com/perl5.8.0/pod/perlfunc.html

alarm とシグナルの組み合わせが駄目なら、fork して子プロセス側で
open し、親でカウントして時間が来たら kill するという力業で何とか
ならんか?
192デフォルトの名無しさん:03/11/19 10:17
組み込み関数のマニュアルに目を通さず質問だけで解決しようとするのは甘えた白痴
193デフォルトの名無しさん:03/11/21 17:11
while (1) {
  if (!($input_socket && $input_socket->connected())) {
   $input_socket = $server_socket->accept();
  } else {
  クライアントが接続したときの処理
  }
  別の処理
}
とやると
TCP 127.0.0.1:6900 127.0.0.1:1030
TCP 127.0.0.1:1030 127.0.0.1:6900
こんな感じに二重接続してるんだがどうにかならんか?

TCP 127.0.0.1:6900 127.0.0.1:1030
こうしたい
195デフォルトの名無しさん:03/12/16 12:52
大変申し訳ないです。素人なんですがPerlからC言語へ変換できるソフトって
存在するんでしょうか?教えてください。よろしくおねがいします。
>>195
http://perldoc.com/perl5.8.0/pod/perlcompile.html

ちなみにココは廃棄スレ。以後、Perl の話題はこちらへ。
http://pc2.2ch.net/test/read.cgi/tech/1068051036/

197195:03/12/16 15:25
>>196
ありがとうございました。へぼいSOHOなんで困ってました。
198デフォルトの名無しさん:03/12/16 15:37
すまんっ、聞く所無いんで質問させてくれ。
最近始めたばっかりで、漏れ厨房なんだが、理科の元素記号覚えるテストがでた!
だからお遊び用で作ってみたんだが・・・というか作りかけ・・・

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

#↓作りかけだから
#require 'cgi-lib.pl';
#&ReadParse( *form );

$mode = int rand(2);
$rand = int rand(5);

@atom = ("H","O","Cl","C","N");
@molecular =("水素","酸素","塩素","炭素","窒素");

199デフォルトの名無しさん:03/12/16 15:37
if ($mode){
foreach (@no0){
if ($_ eq "$rand"){
$rand = int rand(5);
}
else{
$key = "$atom[$rand]";
$mode = "物質";
unshift(@no0,"$rand");
last;
}
}
}
else{
foreach (@no1){
if ($_ eq "$rand"){
$rand = int rand(5);
}
else{
$key = "$molecular[$rand]";
$mode = "元素記号";
unshift(@no1,"$rand");
last;
}
}
200デフォルトの名無しさん:03/12/16 15:38


print <<"EOM";


$answer<BR>
$ask<BR>
<BR>
「$key」の$modeは何でしょう?<BR>
<FORM METHOD="POST" ACTION="script.cgi">
<INPUT type="hidden" name="no0" value="@no0">
<INPUT type="hidden" name="no1" value="@no1">
<INPUT TYPE="text" NAME="name">
</FORM>

EOM

__END__

#↑このENDがおかしいって言ってくるんだ・・・ じゃっ


最後のENDがおかしいって出るんだが・・・
もう一度言っておくが、お遊び用で、作りかけだからな。
サブルーチン使った方がいいところあるけど、修正めんどくさい・・・・
たのむっ、ドコがおかしいのか教えてくれ。(俺の頭はおかしくないからな。)
               マジでタスケテッ!
括弧が足りんだけだろ。
http://www5a.biglobe.ne.jp/~n_rieko/perl/environment.htm#chapter2

それと >>196 を声に出して10回読め。
>>201
10 回っていうリアルな数に笑った
ROのBANされないBOTをperlで作ってください^^
初心者ですが質問させてください
キーワード検索作っているのですが検索単語が空白だと
全件表示されてしまいます。
どのように作ったらそれを回避できるのでしょうか
よろしくおねがいします。
>>204
検索語がブランクなら
エラーメッセージを出して
検索しなければよい。
if ($ENV{'HTTP_COOKIE'}) {
*data = GetCookie($ENV{'HTTP_COOKIE'});
@w = split(/\,/, $data{cookie_mkdia});
$cdata1 = @w[0];
$cdata2 = @w[1];
$cdata3 = @w[2];
}
else {
$cdata1 = '$name';
$cdata2 = '$mail';
$cdata3 = '$address';
}

print "Set-Cookie: cookie_mkdia=$cdata1\,$cdata2\,$cdata3\,; expires=$time_up\n";

sub GetCookie
{
local($cookie) = $ENV{'HTTP_COOKIE'};
local(*data, @cookie, $key, $val);

@cookie = split(/ /, $cookie);
foreach (@cookie) {
($key, $val) = split(/=/);
$data{$key} = $val;
}
return *data;
}
と書いてみたのですが・・、動きません。何故ですか?
Cookieムズカシイです・・・。
Perlの基本分かってない。

誤  正
*data %data
@w[0] $w[0]
@w[1] $w[1]
@w[2] $w[2]

これでやるよろし。

if ($ENV{'HTTP_COOKIE'}) {
%data = GetCookie($ENV{'HTTP_COOKIE'});
@w = split(/\,/, $data{cookie_mkdia});
$cdata1 = $w[0];
$cdata2 = $w[1];
$cdata3 = $w[2];
}
else {
$cdata1 = '$name';
$cdata2 = '$mail';
$cdata3 = '$address';
}

$cooky = "name=$cdata1\,mail=$cdata2\,address=$cdata3\,";
print "Set-Cookie: cookie_mkdia=$cooky; expires=$time_up\n";

sub GetCookie
{
local($cookie) = $ENV{'HTTP_COOKIE'};
local(%data, @cookie, $key, $val);

@cookie = split(/ /, $cookie);
foreach (@cookie) {
($key, $val) = split(/=/);
$data{$key} = $val;
}
return %data;
}

としたのですが・・・。やはりダメでした・・・。何故でしょう??
基本がなってない
サブルーティンが後ろにあるやから
&GetCookieやろ!(&は小文字や)

それ以前の問題のような気がするんだけど、、、
>>209 有難うございます・・・。
でも、やはりダメでした・・・。
因みに、入力フォームは、
<input type="text" name="name" value="$name" />です。
若しかして、、、$nameに$cdata1が代入されてないのですか??
>>210 すいません・・・。
如何すればよいのか・・、具体的に教えて戴けると有難いのですが。
213デフォルトの名無しさん:04/01/18 19:00
掲示板スクリプトでIPがENV{REMOTE ADDR}に入っている場合IPを見られるようにするには
if ($host = $ENV{'REMOTE_HOST'} eq '') {
$host = $ENV{'REMOTE_ADDR'};
} else {
$host = $ENV{'REMOTE_HOST'};
}
if ($host=~/^(\d+)\.(\d+)\.(\d+)\.(\d+)/) {
$host = &nslook($host);
}
#-------------------------------------------------------------------------#
# ■ IPを変換 [ nslook ] ■ #
#-------------------------------------------------------------------------#
sub nslook {
my ($x) = @_;
my ($ip,$addr);
if ($x =~ /([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/) {
$ip = "$1.$2.$3.$4";
$addr = (gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0];
if ($addr ne "") {
return $addr;
} else {
return $ip;
}
}
return "$x";
}

print OUT "$date<>$name<>$sub<>$com<>1<>$email<><>$FORM{mode3}<>$host<>\n";
print OUT "$date<>$name<>$com<>$resno<>$email<><>$shouryaku<>$host<>\n";

でいいはずですよね?表示されないのですがどこに問題があるのでしょう・・・
{
my @data = ($ENV{ HTTP_COOKIE } =~ m/cookie_mkdia=([^ ]+)/)?
split /,/, $1:
($name, $mail, $adress );

print "Set-Cookie: cookie_mkdia=$data[0],$data[1],$data[2],; expires=$time_up\n";
}
>>213
あなたの質問はWebProg板ですべきだな。
ま、一応答えておく。
そのスクリプトは、ホスト名が空なら、IPからホスト名を引き出してログに記録している部分。
gethostbyaddrでホスト名が返ってこない場合、IPをログに記録している。

「IPを見られるようにするには」という質問なら、こんなマンドクセー事せずに、
print OUT "$date<>$name<>$sub<>$com<>1<>$email<><>$FORM{mode3}<>$ENV{'REMOTE_ADDR'}<>\n";
とかでIPをログに記録すればいいじゃん。
それを見えるところに表示したいというなら、WebProg板逝け!
>>214 は何処に入れればよいのでしょう・・。
217214:04/01/18 21:58
>>216
すまん。206のコードを書きなおしただけのコード
実際のところ、仕様ようわからんから、あってるかどうかもわからん。
>>217 有難うございました・・。動きませんでしたが・・。
219214:04/01/18 22:57
{
my @data = ($ENV{ HTTP_COOKIE } =~ m/cookie_mkdia=([^ ]+)/)?
split /,/, $1:
($name, $mail, $adress );

$cooky = "name=$data[0],mail=$data[1],address=$data[2],";
}
print "Content-type: text/html\n";
print "Set-Cookie: cookie_mkdia=$cooky; expires=$time_up\n";
#html部分出力

これで、動かんかったら俺にはわからね。
220214:04/01/18 23:03
上のコード下2行これに変えてみて
print "Set-Cookie: cookie_mkdia=$cooky; expires=$time_up\n";
print "\n";
#html部分出力
>>219 && >>220 さん有難うございます。。
未だ、、ダメみたいです。。若しかして$time_upに問題ありですか??
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time + 60*60*24*30);
@day = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
@month = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
$time_up = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT", $day[$wday], $mday, $month[$mon], $year+1900, $hour, $min, $sec);
   です。
http://www.studyinghttp.net/cookies.html
でも読んでマターリしる
>>207 >>209 >>210 >>214 >>217 >>219 >>220 >>222一応出来ました。
今まで・・・有難うございました。
224デフォルトの名無しさん:04/02/02 02:54
すみません。

use XXX;

とした場合、XXXの絶対アドレスを指定する方法を教えて下さい。
特定のディレクトリにあるモジュールを使いたいのですが、カレント
ディレクトリでは無いため、読み込みが出来ない模様です。

おながいしまつ。
use lib
>>224
#!usr/local/bin/perl -IC:/Document(ry/N224
use XXX;

C:/Document(ry/N224/XXX.pmを読める
227デフォルトの名無しさん:04/02/03 05:39
>>226

できますた!
どーもです。
228デフォルトの名無しさん:04/02/04 02:24
>>227
225が書いたようにlibモジュールを使うのが王道
use lib 'C:/Document(ry/N224';
use XXX;
で226と同じことができる
もしくは@INCに直で書き込み
BEGIN { push(@INC, 'C:/Document(ry/N224') }
とか
226のはかなりの裏技
もう伊藤家並ですよ
229デフォルトの名無しさん:04/02/04 03:10
>>228
>226のはかなりの裏技

ケッ、perl -helpで出てくるもんが何で裏技なんだよ。
嘘ぶっこいてんじゃぁねぇよ。
230デフォルトの名無しさん:04/02/04 10:07
裏技ではない、まっとうな解決策であることは認めるが、
一行目の魔法のコメントに長さの限界があるOS(UNIX系)や、
最初から魔法のコメントを無視する腐ったOS(Windows)が蔓延している現状を考慮すると
use lib 以外の選択肢は無いのではないだろうか。
そのために#!行のオプションを自前で解析してるわけだが。

$ cat x.pl
#!perl -I/tmp/hoge
print $INC[-1],"\n"
$ perl x.pl
/tmp/hoge
>>230
何ウダウダ言い訳してんだよ、糞して寝ちまいな
-I だと push で use lib だと unshift だけどね。
234デフォルトの名無しさん:04/02/04 19:10
>>233
また嘘つきが。呆れ返っちゃうね。
座りションベンしてそのまま寝ちまいな。
# これは unshift
perl -I/foo/bar -e "print join qq/\n/, @INC;"

# これは push
#!/usr/local/bin/perl -I/foo/bar
print join "\n", @INC;
__END__

# これは unshift
#!/usr/local/bin/perl
use lib '/foo/bar';
print join "\n", @INC;
__END__
236デフォルトの名無しさん:04/02/06 13:51
>>235
大嘘つきだな(w

少なくとも、perlをソースからコンパイルした事ないな(藁
w)なのか藁なのかどっちかにしてほしい
238大学生:04/02/09 17:14
大学の情報の授業の追試なんですが

perlのプログラムでproc loge(x) {
eps = 1e-30
k = 1
dd = -x
z = x
s = 0
while ( z^2 > eps ) {
s = s + z/k
z = z * dd
k = k + 1
}
return s
}
----------------------------------------------

このプログラムを用いて(Perlでコーディングして)

log(2) = 0.693147180559...

となることを確かめよ。
プログラムを示すこと。
とありますが 意味が分かりません 一年生のわたしのクラスだれもわかる人
いないんです。 おしえてください(>ー<)
w)(w
>>238
テーラー展開習ってないのか?
まあ、分かんなきゃ留年して勉強し直せ、お前の為だ。
正直
while ( z^2 > eps ) {
の式の意味が分からん。∞ループになるような
242デフォルトの名無しさん:04/02/10 00:16
UNIX の tail -f を実現するようなものを作成しようと思っています。
以下のコードでは、select でブロックせずにぶんぶん回ってしまいます。
何故でしょうか? ちなみに fileno(STDIN) にした場合にはちゃんと
ブロックしてくれます。教えてください。

use strict;
my ($a, $b);
open(LOG, "/path/to/file");
seek(LOG, 0, 2);
vec($a, fileno(LOG), 1) = 1;
while(1) {
  $b = $a;
  select($b, undef, undef, undef);
}
close(LOG);
>>241
while ( z^2 > eps ) {は間違っている。
収束判定の式はそれじゃない。
>>242
selectがブロックするんじゃない。どのデバイスファイルが入出力可能か調べるだけ。
ブロック云々はデバイス自体の状態。STDINはリターンキーが押されるまでブロックする。
>>242
select(2)は、通常ファイルに対しては常に入出力可能を返す。
>>244
>>245
なるほど、ありがとうございます。では tail -f 相当のものを
実現するにはどうしたら良いでしょうか? FreeBSD のtail(1)
では kqueue(2) が使われているので移植性が低そうです。
EOFになったら適当にsleep()、fseek(f, 0L, SEEK_CUR)でEOFをクリア
のループ。
>>247
わかりますた。やってみます。
こんな感じでできました。sleep の代わりに select を使っています。

use strict;
open(LOG, "</path/to/file");
seek(LOG, 0, 2);
while(1) {
  my $buf;
  if( eof(LOG) ) {
    seek(LOG, 0, 1);
    select(undef, undef, undef, 0.5);
  } else {
    $buf = <LOG>;
  }
}
close(LOG);
25062:04/04/29 09:14
perlmagick を使って、ポップ体の文字を画像に埋め込みたいのですが、
指定すべきフォントが分かりません。
環境は
OS : debian woody
perl : 5.6.1-8.7
perlmagick : 5.4.4.5-1woody
です。
ご存知の方、よろしくお願いいたします。
getのところで処理が止まってctrl Cで中断するしかなくなることが
たまにあるんですが、うまい回避方法はないでしょうか?

use LWP::Simple;

for ($code = 1000; $code <= 9999; $code++) {
$doc = get "http://www.abc/t?$code";
}
>>251
LWP::UserAgent timeout
>>252
回避できました。ありがトン。
254デフォルトの名無しさん:04/07/29 16:45
質問です。
Makefileに$(pixmapdir)という字句があり、これを%buildroot/usr/share/pixmapsに替
えたいのですが、
perl -pi -e "s|\$\(pixmapdir\)|%buildroot/usr/share/pixmaps|" Makefile
とすると
Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE pixmapdir\)/ at -e line 1, <> line 1.
といわれて置換できません。試しに、\$\(pixmapdir\)|を\$\(pixmapdir\)|に替える
とエラーはでませんが()がおそらくパターングループと認識されて何も置換されません。
どうすれば()を含むパターンの置換ができるでしょうか。
>>254
シェルで \ が処理されてたりしませんか?
とりあえず perl -pi -e "..." を perl -pi -e '...' に変更するか
\ を \\ に変更してみてはどうでしょう。
>>255
とても親切な方。ありがとうございました。シングルクオートでうまくいきました。
感謝申し上げます。
セレブって頭悪いよね
ゴメン、実況しながら過去スレ読んで誤爆しちゃった(´・ω・`)
259科学 ◆3Zqk5DmAz2 :04/08/22 11:24
[システム]プログラム言語など学習スレ[初心者]
http://money3.2ch.net/test/read.cgi/deal/1093135975/
というスレを作りました。

マーケットの分析をperlとか使ってやろう、という趣旨の
スレです。詳しい方とかおりましたら力になってやって下さい。
260デフォルトの名無しさん:04/08/27 20:58
perl初心者です。

>dnaK
atgacgtgggttacgaccccatttagtagtcaaccgcagtga
atgaaattgggcagttga
>dnaJ
>gef
atgaagagataa
atgcgaggcgtcttccggattagaatcgataaaacagaatgggttaaagagagcgatataatagcggcgggtgcttga
atgggttaa
>nhaA
atgattatcagggcttag
atggcgcaaattcttctatag
atgattcgtgcggggtaa
>nhaR
というような出力結果から、
>dnaK
2
>dnaJ
0
>gef
3
>nhaA
3
>nhaR
0
という結果( つまり、「>名前」に対応させた、塩基配列の行の数)を出力し
たいのですが、プログラムがわかりません。どなたか教えてくださるかたがい
らっしゃるとうれいしです。よろしくお願いします。
261デフォルトの名無しさん:04/08/27 21:00
260の続きです。
>dnaK
2
>dnaJ
0
>gef
3
>nhaA
3
>nhaR
0
という結果( つまり、「>名前」に対応させた、塩基配列の行の数)を出力し
たいのですが、プログラムがわかりません。どなたか教えてくださるかたがい
らっしゃるとうれいしです。よろしくお願いします。
>>260
マルチになってますがどうなさいますか?
質問です。
perlの処理で、”Enterキーを押す”っていう操作は
perlでは、どう記述するのでしょうか?
ご存知の方是非教えて頂きたいのですが?
>>263
マルチになってますがどうなさいますか?
265デフォルトの名無しさん:04/09/09 21:48
[システム]プログラム言語など学習スレ[初心者]
http://money3.2ch.net/test/read.cgi/deal/1093135975/
で困ってます。どなたか助けて下さい。
実行してうまくいくときといかないときがあるのはどうして
でしょうか?
266デフォルトの名無しさん:04/10/09 12:07:04
別のスレでも書いたのですが

課題が出たのですが分からないので教えてください

この間に、英文テキストファイル(単語数100語程度)を用意し、
これを処理するプログラムをつくります。

プログラムは、
(1)テキストファイルを単語ごとに区切る
(2)単語をソートして並べ替える
(3)ファイルに保存する
という流れで作ってください

↑という問題です
初心者にも分かりやすくお願いします


267デフォルトの名無しさん:04/10/09 18:56:17
課題を人にやらせて、それが自分のためになるとでもいうのか?
そうなら喜んで回答するが、少なくとも漏れはそうは思わない。
268デフォルトの名無しさん:04/10/09 21:08:36
>266
最初の「この間に」ってのは何だ?
269デフォルトの名無しさん:04/10/29 16:39:22
すいません、初心者なんですが教えてください。
登録や削除のできるCGIを作っています。
一つのフォームから、いくつかのsubmitを使って、それぞれ処理を変えたいのですが、
どのようにすればよいでしょうか?
なんとなく、nameを使ったり、受ける側でif文を書けばいいのかな?という感じなのですが、
どうやって、if文でsubmitのnameを受けたり、分岐したりすれば良いのか分からない状態
です。
どうぞ、よろしくお願いします。
270デフォルトの名無しさん:04/10/29 18:49:30
>>269
その質問はWeb製作板の方がいいな。
271デフォルトの名無しさん:04/10/29 18:49:55
>>270
じゃねぇ。WebProg板だ。
272デフォルトの名無しさん:04/10/29 21:04:45
>>270さん
ありがとうございます、行って来ます!
273デフォルトの名無しさん:04/11/03 02:21:29
perlで[1]を[2]のようにデータを整える作業をしたいと考えています。
「全角同士で挟まれたスペースの削除(例)中 央→中央」と「全角数字と並んでいるところに,(カンマ)を挿入する(例) 篠崎11→篠崎,11」の2点の作業をしたいです。
何方か、アドバイスを下さいお願いします。

[1]
中 央1丁目591 281 310 218 2丁目602 315 287 227
2丁目522 256 266 179 大字南篠崎1130 559 571 352
本 町831 396 435 301 花 崎1丁目1459 749 710 604

[2]
中央1丁目,591,281,310,218,2丁目,602,315,287,227
2丁目,522,256,266,179,大字南篠崎,1130,559,571,352
本町,831,396,435,301,花崎1丁目,1459,749,710,
274初心者:04/11/03 04:27:31
273です。
レスPerlについての質問箱にて解決しました。
礼儀を知らなくてすいませんでした。
275デフォルトの名無しさん:04/11/03 12:17:28
>>274
解決して、ヨカーです。
あなたも詳しくなって、困った人を助けて下さい。

もみage!
276デフォルトの名無しさん:04/11/17 17:58:04
すみません。

入力内容をカンマ区切りでcsvデータとして吐き出すコードを作成中なのですが、
入力内容のテキストエリアなどで改行を入れられてしまうと、csvが想定どおりに
いきません。

そこで、ファイルに書込む前に改行コードをすべて強制的に削除してしまいたいのですが、
どのようにしたらいいか教えてください。

よろしくお願いいたします。
277デフォルトの名無しさん:04/11/17 19:54:04
>>276
s/[\r\n]+//g;
278デフォルトの名無しさん:04/11/17 22:31:16
>>277
ありがとうございます。
279デフォルトの名無しさん:04/11/17 23:01:14
trを使う方が速いよ。 tr/\x0D\x0A//d;
280デフォルトの名無しさん:04/11/18 03:35:11
s/[\r\n]+//g;

tr/\x0D\x0A//d;
は等価じゃないよ
281デフォルトの名無しさん:04/11/18 12:43:35
>>280

むむ?\r\n と\x0D\x0Aとどっちにしたら良いのでしょうか?
ちなみに、これでmacからの入力でも対応できますでしょうか?
(改行コードが違うんですよね、確か。)
282デフォルトの名無しさん:04/11/18 23:14:40
>>281
それくらい調べる
283279:04/11/18 23:25:23
>>280
dosの場合は、単独のLFを残すってこと?
そのココロは?漏れ、アホなので教えてちょ。
284デフォルトの名無しさん:04/11/19 00:48:42
>>283
何をどうしたら単独のLFが残ると思うの?
285279:04/11/19 01:41:46
>>284
s/[\r\n]+//g;  は、
unix CR or LF
dos CR or CR,LF
mac LF or CR
の「1ヶ以上の繰り返しを削除」を繰り返す。で、ここまでオケー?
んで、dos上でCRが前にないLFが残るのかと。
ちがうの?つか、[\r\n]ってCR,LFのCRだけ先に消したりせんの?
もしかして慣用句?もったいつけんと教えれ。
286デフォルトの名無しさん:04/11/19 02:03:39
>>285
> の「1ヶ以上の繰り返しを削除」を繰り返す。で、ここまでオケー?

だからCRLFはまとめて消えるわけだが。
えっと、[\r\n]がCRにマッチしたらそのあとLFにはマッチしないと思ってるのかな?

$a = "223620679";
$a =~ s/[23]+//g;
とか試してみたら?
287279:04/11/19 03:15:10
>>286
これに近いと思ったんだが?

$_ = "\f\f\r\f\r\r\r\f";
s/(\f|\f\r)+//g;
for( split('',$_) ){
print ord$_, "\n";
}

訊くが、
macでは、\nと\fがCRで、\rはLFなんだが、それはご存じか?
macPerlだと[\r\n]じゃ、[LF CR]となり、dosの改行(CR,LF)消せないし。
[\r\f]+か、\n+だけならまだしも[\r\n]+ってのは、何故?
そして、なぜtrじゃイカンのか?
288279:04/11/19 03:23:43
もしかして、\n eq \f(x0a) と思ってないか?
289279:04/11/19 03:42:44
[\n\r] と\nを先に持ってくるならともかく、
\nがCR,LFだった場合、先にCRを喰っちゃうのでLFは残る。

以下、二点をご存じないと判断した。
・ tr/\x0D\x0A//d; が s/[\r\f]+//g; と等価かつ高速であること
・ メタ文字 \n,\r,\f が、環境によって異なる文字になること
290デフォルトの名無しさん:04/11/19 08:58:23
>>286
$a = "22360679";
だと思う
291デフォルトの名無しさん:04/11/19 11:43:00
[\n\r] の中の順番は(-を使うときを除いて)関係ないだろ
292デフォルトの名無しさん:04/11/19 11:44:33
っていうか、仮に>279がマカーだとしても自分で検証できないのか?
293デフォルトの名無しさん:04/11/19 20:02:41
>>287
無茶苦茶だな
294279:04/11/19 21:14:27
マジわからん。
仮に\nがCR,LFだった場合 s/[\n]//g; で 単独のCRもLFも消えるのか?
なら、勉強になったよ。

でもな、だったら[\r\f]としないのはなぜ?なぜ¥nを使う?
dosでは [\x0D\x0D\x0A] となって、なんだか余分じゃないか?

で、そもそもの発端だが「 tr/\x0D\x0A//d; と等価でない」とは?





295デフォルトの名無しさん:04/11/19 23:59:52
> 仮に\nがCR,LFだった場合 s/[\n]//g; で 単独のCRもLFも消えるのか?

それはない。なんでそんな仮定が出てくるんだ?
296279:04/11/20 00:14:53
>>294
276の質問に対し、
 277 名前:デフォルトの名無しさん メェル:sage 投稿日:04/11/17 19:54:04
  >>276
 s/[\r\n]+//g;

ここから、はじまった話。
\fではなく\nを使っていることに疑問を持ち、個人的見解を述べたら
叩かれ気味になってる。

藻前らハッキリ汁。 \nがCR,LFだった場合限定でいい。
s/[\r\n]//;と等価なのは、s/[\r\r\f]//;なのか、s/\r|\r\f//;なのか。
297279:04/11/20 00:20:50
あ〜、それから、コッチの質問を無視したあげく
「なんでそんな…疑問型で終わる」は、もうナシな。
目の前にいたら殴ってますよ。


それとも、釣りなのか…orz
298デフォルトの名無しさん:04/11/20 00:27:35
> s/[\r\n]//;と等価なのは、s/[\r\r\f]//;なのか、s/\r|\r\f//;なのか。

s/\r|\n//;
ところで「macでは、\nと\fがCR」となっているMac OS のバージョンとMacPerlのバージョンを教えてもらえますか?
299デフォルトの名無しさん:04/11/20 00:36:37
>>296
> 仮に\nがCR,LFだった場合
\nがCRになったりCRLFになったりするのは出力した時だけ。
300デフォルトの名無しさん:04/11/20 00:43:38
279に贈る言葉
「プログラムは個人的見解通りに実行されるのではなく、書かれた通りに実行される」
301279:04/11/20 00:55:17
>>298
> ところで「macでは、\nと\fがCR」となっているMac OS のバージョンと
> MacPerlのバージョンを教えてもらえますか?
ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify

>>299
うそつけ!

てか、300含めて同一人物だよね?んで277だよね?
名前覧入れろ、卑怯ものがっっ。
302295=298:04/11/20 01:13:43
じゃあ、名前つけてみる(他のレスは知らん)

>>301
> >>298
> > ところで「macでは、\nと\fがCR」となっているMac OS のバージョンと
> > MacPerlのバージョンを教えてもらえますか?
> ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify

そのページのどこに「\fがCR」って書いてあるの?
っていうかOSとMacPerlのバージョン聞いてるんですけど。
303 ◆T/vF7nflsQ :04/11/20 06:13:34
>>301
277です。277以降静観してましたが、とりあえずその他発言とは
別人だと表明しておきます。
>>279の言ってるようなことは意識したことがなく、
\r=0x0d、\n=0x0aだと思ってました。
実際のところ、自らは未検証の内容なので、
確認が取れたら書き込もうと思ってたんだけど、
>>301で勝手に同一人物とか書かれたもので出てきました。

あと、+はなくてもよかったかな
s/[\r\n]//g;
304279:04/11/20 15:30:00
本当〜〜に、ごめんなさい m(_ _)m
不快な思いを皆様にさせてしまい、猛省しております。
漏れが超バカな勘違いしていました。・・・(;´Д`)ウウッ…
¥fをLFだと思ってました。しかも、ずぅぅっとorz

今日、会社に行って、旧mac,win98,で
for( "\n","\r","\f"){
printf "\\x%02X\n",ord;
}
を実行して、はじめて知りました。情けない、恥ずかしい。

trと等価でない理由は、式全体が返す置換数が異なるって
ことで、勝手に納得しました。

撤退して、勉強し直します。
お騒がせして、申し訳ありませんでした。
305デフォルトの名無しさん:04/11/20 15:50:05
306デフォルトの名無しさん:04/11/20 20:30:37
おめでとう♥
307デフォルトの名無しさん:04/11/21 23:12:08
今日はどのスレでも「おめでとう」ばかりだな
308デフォルトの名無しさん:04/11/22 00:12:30
(?(条件)真なら|偽なら)
という拡張構文の使い方と使用例を教えてください。
なんとなく便利そうなんだけど、意味わかんないし、本みても具体的なことは載ってませんでした。
309デフォルトの名無しさん:04/11/22 00:14:39
三項演算子でぐぐれ
310デフォルトの名無しさん:04/11/22 00:43:19
ぐぐってみましたが、なんか違うような気がするんですが。。
311デフォルトの名無しさん:04/11/22 00:47:33
必要も無いのに新しいからと言うだけで使いたがるなよ醜くなるだけだぞ
312デフォルトの名無しさん:04/11/22 00:47:55
何が言いたいのか分からん。
313309:04/11/22 01:02:30

 ∧||∧
(  ⌒ ヽ  素で間違えた
 ∪  ノ  perlreに載ってるるるるぢゃん…そんなものあるの知らんかたた
  ∪∪

お詫びに首吊り
314デフォルトの名無しさん:04/11/22 02:03:06
>>308

正しくは、

$hoge = 条件式? 真値 : 偽値;

じゃないのか?
315デフォルトの名無しさん:04/11/22 03:52:01
>>307
おめでとうって、なんかあったの?
316デフォルトの名無しさん:04/11/22 11:15:09
おめでとう
317デフォルトの名無しさん:04/11/22 15:04:01
318デフォルトの名無しさん:04/11/25 12:17:36
perl言語に詳しい人がいないスレ
319デフォルトの名無しさん:04/11/25 20:02:26
Encodeとjcode.pl
どっち使うのがいいですか
320デフォルトの名無しさん:04/11/26 02:15:50
サーバのperlが古すぎて、jcode.plでサーバエラー食らったことがある。
対処法をググろうと思っても、上手くググれず困っていたら、
昔、独学用に買った初心者向けのperl本に対処法載っていた。

本は大事にするべきだなと思った。
321デフォルトの名無しさん:04/11/26 16:47:41
>>319
systemでnkf使えば? w
322デフォルトの名無しさん:04/11/28 19:33:50
本スレ?が1000来てるのでこちらで質問させて下さい。
ハッシュの配列をソートしたいのです。
@a = (
{'c' => "mixa",'time' => 1},
{'c' => "fox",'time' => 3},
{'c' => "miaa",'time' => 2}
);

このようなハッシュの配列を、timeにてソートしたいのですが

$a[0]{'time'} が 1
$a[1]{'time'} が 3
$a[2]{'time'} が 2

なのを

$a[0]{'time'} が 1
$a[1]{'time'} が 2
$a[2]{'time'} が 3

として、c側もこれについてくる

$a[0]{'c'} が mixa
$a[1]{'c'} が miaa
$a[2]{'c'} が fox

このような結果になるソースを知りたいです。なるべくスマートに書ければ嬉しいです。
323デフォルトの名無しさん:04/11/28 19:43:58
my @new_array = sort { $a->{time} <=> $b->{time} } @a;
324デフォルトの名無しさん:04/11/28 19:45:29
PerlではできないRubyでは簡単
325デフォルトの名無しさん:04/11/28 19:52:18
志村!上、上!
326デフォルトの名無しさん:04/11/28 21:13:40
Perlについての質問箱はどこ行っちゃったんでしょ。
誰か作ってくらはい。ペコリ
327デフォルトの名無しさん:04/11/28 22:42:27
Perlについての質問箱 14箱目
http://pc5.2ch.net/test/read.cgi/tech/1101649274/l50
328デフォルトの名無しさん:04/11/28 22:48:28
>>327
ありがとん。
329デフォルトの名無しさん:04/11/29 21:42:00
>>323
本当にどうも有り難うございました。
$a->{'time'}で参照出来るのですね
$a{'time'}とやって上手く行かなかったのでてっきりもっと難しいのかと思っていました。
なぜ前者が可能で後者が不可なのか宜しければ説明して頂ければ幸いです。
330デフォルトの名無しさん:04/11/30 00:22:02
ハッシュ、リファレンスを勉強品晴れ。
$a{'time'}は%aというハッシュのtimeをキーとする値。
$a->{'time'}は、無名ハッシュ(へのリファレンス)のtimeをキーとする値。
331デフォルトの名無しさん:04/11/30 00:47:36
たぶん$a,$bを知らないのでは。
332デフォルトの名無しさん:04/11/30 01:11:41
たぶん$を知らないのでは。
たぶんa,bを知らないのでは。
333デフォルトの名無しさん:04/12/02 23:09:39
>329
たぶん、シュワルツ変換が分かれば、分かるようになると思う。
ていうか、私もこないだ覚えたばかり。

続 初めてのperl p101 から 103 のあたり。

ちなみに、シュワルツ変換とは、
ある並びを持った配列があったときに、
その要素が持つ別の属性で持って、並べ替えを効率よくやろうと
いうものだけど。
334デフォルトの名無しさん :04/12/03 11:38:10
ハッシをまだ使いこなせていません。例えば、
一つのファイルは、
106 1473
106 764
1762 48
1762 38
1762 91
と、左の数字に対して、いくつかデータがあって、もう一つのファイルは、
106 30
1762 50
と、左の数字に対して一つしかデータがないものがあった時に、
これを、
106 1473 30
106 764 30
1762 48 50
1762 38 50
1762 91 50
のようにハッシュをつかって表示させるのはどうやればいいのでしょうか?
335デフォルトの名無しさん:04/12/03 15:58:32
336デフォルトの名無しさん:04/12/04 20:44:34
標準入力からデータを読んで、標準出力に結果を吐くCプログラムを
perlで呼び出して、データを渡して結果を受け取る方法を教えてもらえませんか?
Active perl + WindowsXPです.
337デフォルトの名無しさん:04/12/05 01:48:42
exeファイル作って、コマンドとして実行すれば?
338デフォルトの名無しさん:04/12/06 14:18:53
パイプを知らんのだろう
339デフォルトの名無しさん:04/12/07 01:49:58
パイプマン!
340デフォルトの名無しさん:04/12/09 13:39:06
数値計算で吐き出された数値ファイルのちょっとした計算に使いたいです。
そのためには、整数であるか実数であるかを判定する必要があるのですが、なにかうまい方法はないでしょうか?
つまり小数部が0かそうでないかを判定したいということですが、いかがでしょう?
341デフォルトの名無しさん:04/12/09 15:30:13
if($Number == int($Number))
{print "Integer\n"}
else
{print "Not Integer\n"}
342デフォルトの名無しさん:04/12/10 04:55:35
たまたま小数点以下が0の実数データだったらどうするんだ
343デフォルトの名無しさん:04/12/10 12:16:59
>>340の質問だと、小数点以下が0なら整数扱いじゃないのか?
344デフォルトの名無しさん:04/12/10 12:19:15
「.」があるかどうかだけ見ればよい
345デフォルトの名無しさん:04/12/11 02:13:08
#!perl

$number = "5.8";#値を代入

if($number =~ m/\.\d/g) {print "$number";}#小数点以下に数字がある時、値を出力

else{print "いいえ";}#小数点以下に数字がない時、"いいえ"を出力

こんな感じか?
346デフォルトの名無しさん:04/12/11 02:21:28
いや、「小数部が0かそうでないかを判定したい」だろ?
347デフォルトの名無しさん:04/12/11 03:15:33
小数点をデリミタにして、数値をスプリット。
小数点以下の部分を全て足して、合計が0か否かをみる。

とすればいいのか?
348デフォルトの名無しさん:04/12/13 00:29:01
スプリットしたなら小数点以下が0かどうかだけ見ればいいだろ
349デフォルトの名無しさん:04/12/13 02:22:19
>>347を修正
小数点をデリミタにして、スプリット。
小数点以下の部分が、0か否かをみる。

以上!
350デフォルトの名無しさん:05/01/14 22:19:19
これじゃだめか?

$num = '23.02'; #値をセット

print $num=~/\.(\d+)/ && $1>0 ? '実数' : '整数';
351デフォルトの名無しさん:05/01/15 01:38:33
>>341でいいんじゃないの?
352デフォルトの名無しさん:05/01/15 01:57:37
だね。>>341きまりということで。
353デフォルトの名無しさん:05/01/15 02:09:08
Perl言語て。
354デフォルトの名無しさん:05/01/15 02:55:15
>>353
まあ、そう云うな。
355デフォルトの名無しさん:05/01/15 22:01:46
>>341>>349がシンプルなので、比較してみました。

use Benchmark;

timethis(1000000, sub{ useInt(1.00) });
timethis(1000000, sub{ useSprit(1.00) });

sub useSprit{
my $number = shift;
if([split(/\./, $number)]->[1] == 0){
#print "Integer\n";
}else{
#/print "Not Integer\n";
}
}

sub useInt{
my $number = shift;
if($number == int($number)){
#print "Integer\n";
}else{
#print "Not Integer\n";
}
}

結果:>>341の方が速くてコードも短い。ついでに回答も早い。
356デフォルトの名無しさん:05/01/16 05:27:44
一行でOK。

print($number == int($number) ? "Integer\n" : "Not Integer\n");
357デフォルトの名無しさん:05/01/16 11:52:24
漏れの規則結果(左が速い)
356 > 341 >>>> 356 >>>>>>>> 349
358デフォルトの名無しさん:05/01/16 12:45:06
printf qq|%sInteger\n|, ($number != int($number) ? 'Not ' : '');
359デフォルトの名無しさん:05/01/16 14:30:13
ここまでするともはや何をしたいのかわからんにょうになる

print$number!=int$number&&'Not ',"Integer\n";
360デフォルトの名無しさん:05/01/16 14:49:57
んじゃ、この件は>>356が最強ということで
361デフォルトの名無しさん:05/01/16 17:33:51
>>357

356 > 341 >>>> 356
の辺りが激しく謎。
362デフォルトの名無しさん:05/01/16 17:33:52
やっぱ、読めなきゃ意味ねーもんな!

どこかのperl本に『半年前の自分は他人』って書いてあってワラタ。
>>359までくると、自分で見返しても一瞬なんのことか判らなくなる。
363110:05/01/17 17:06:43
perlのスクリプトの中でgrepの検索パターンで
日本語を使うにはどうしたらいいんでしょうか?
誰かしているかた教えてください。お願いします。
364デフォルトの名無しさん:05/01/17 17:07:55
>363
NAMAZUをつかえ
365デフォルトの名無しさん:05/01/17 17:10:31
>363
日本語対応のPerlか?
正規表現オプションに日本語コードの種類を指定したか?
366デフォルトの名無しさん:05/01/17 17:28:25
>>363
http://www.din.or.jp/~ohzaki/perl.htm
を見ると幸せになれるかもしれない(し、なれないかもしれない)
367デフォルトの名無しさん:05/01/17 17:34:27
ここは質問箱となにが違うのでしょうか?
368デフォルトの名無しさん:05/01/17 17:39:10
>>367
ここは呪われたスレ
369363:05/01/17 18:15:16
>>364,365,366
ありがとうございます!!
がんばってみます!

370デフォルトの名無しさん:05/01/19 14:28:23
>368
呪い返しの術!
371てすと:05/01/19 15:43:17
#include <stdio.h>
int main()
{
printf ("Gonnuduba!\n");
return 0;
}
372てすと2:05/01/19 15:44:12
#include <stdio.h>
int main()
{
   printf ("Gonnuduba!\n");
   return 0;
}
373てすと3:05/01/19 15:45:53
なるほど。全角スペースならネスティングできるのが
わかりました。ありがとうございました。 m(_ _)m
#include <stdio.h>
int main()
{
 printf ("Gonnuduba!\n");
 return 0;
}
375デフォルトの名無しさん:05/01/19 20:17:16
ここは、Cスレかと
376デフォルトの名無しさん:05/01/19 20:21:50
&nbsp;
377デフォルトの名無しさん:05/02/20 10:35:34
376が、半角スペースの入力に失敗した為、このスレ終了?
378デフォルトの名無しさん:05/02/21 11:29:21
これは成功だろ
379デフォルトの名無しさん:05/02/24 02:13:02
s/(\s*$)/てすと/gm;
380デフォルトの名無しさん:2005/04/08(金) 17:40:56
教えてください。

普通の掲示板の機能にアイコンをつけるのに
<FONT SIZE=\"2\" COLOR=\"$icon!!ココガワカラナイ!!">$icon<FONT SIZE=(ry
とあるのですがname=iconとかvulue=./icon/icon1.gifとかそういった事は出来ました。

解らないのが、ラジオボタンでチェックを入れるとvulueで指定したリンク画像を表示させる
ということなのですが。
誰か教えてくれませんか?
381デフォルトの名無しさん:2005/04/08(金) 17:43:42
380です。
4行目の文は
print " <td valign=\"top\" nowrap>
の続きにそういう文があって、そこを直して、iconを追加していたのですけど
どうやって挿入とか呼び出しとかするのかわかりません。
selectとかspiceとか色々調べたのですが、いまいち把握できません
382デフォルトの名無しさん:2005/04/08(金) 18:35:54
>>381
詩ね! 丸血!!
383デフォルトの名無しさん:2005/04/11(月) 20:53:35
板違。WebProg 行け。
384デフォルトの名無しさん:2005/04/19(火) 22:12:05
変な質問ですみません。
利用のレンタルサーバーはFreeBSDでメールはAPOP POP3 IMAP が使えるらしいです。

今、メールアカウントのパスワードを変更するスクリプトを記述したいのですが、
暗号化の部分がさっぱりわかりません。

レンタルサーバーのコントロールパネルから設定したメールパスワードを直接読み取ってみた時の文字列と
単純にMD5で生成したパスワードが違っていましたので、暗号化方式はMD5でないと推測します。

WEB検索でどのように暗号化しているのか探しましたがみつかりませんでした。
このあたりの情報に詳しい方、ご教授お願いします。

<<板違いの質問かもしれませんが、質問先がわからず、ここにしました。申し訳ありません>>

>>380=381
perlの前にHTMLの勉強した方が良さそうですよ。(板違いですね。)
& 普通の掲示板って具体的には? 
385デフォルトの名無しさん:2005/04/22(金) 00:59:35
>384
サーバに保存されているパスワード情報の書式は、そのサーバで使用されているメールサーバ
プログラムの種類に依存しプロトコルとは無関係。それだけの情報ではエスパーでもなければ分からない。
386デフォルトの名無しさん:2005/04/22(金) 08:55:27
>>385
ふむふむ。ありがとうございます。
メールプログラムは何かはっきりわかりませんが、同社の他のサービスでは
qmailを使用との事ですので、同じかもしれません。

ところで、メールプログラム依存という事は
メールソフト(クライアント:outlookなど)からサーバーまではパスワードが
プレーンテキストで流れているのでしょうか?
そうなると、そっちの板で質問という事になりますが、
暗号化済で送信を前提としていたので、ここで質問させて頂いておりました。
387デフォルトの名無しさん:2005/04/24(日) 00:59:10
>>386
言ってることが混乱していないか?

あるプロトコルでパスワードをどの様に送るかはプロトコルに定められている。
クライアントでもサーバーでもプログラムの種類には関係ない。
でないと認証できないだろ?

パスワードの保存方法は各プログラムが好きにすればいいことだろ?
388デフォルトの名無しさん:2005/04/27(水) 23:55:02
レスありがとうございます。

ここでperlを考えないで、通信で、例えばtelnetなどでパスワード変更しようと
思った場合、メールサーバーのプログラム名(または内容)が判らない場合はどうしようもない、
という事なんですね。

ん〜。困りました。。。。。。
389デフォルトの名無しさん:2005/04/29(金) 11:03:26
>>388
だからさ、結局何がしたいワケ?

パスワード変更したいならパスワード変更用の手段を実行しろ。
telnetでコマンド実行するなら打とうがperl実行しようか同じだ。
そのサーバーはコマンド打つとき暗号化済みのパスワードを打たないとダメなのか?
390デフォルトの名無しさん:2005/04/29(金) 15:56:30
>>384=386=388
perlの前に日本語の勉強した方が良さそうですよ。(板違いですね。)
391デフォルトの名無しさん:2005/04/29(金) 21:52:45
ぶっちゃけ、コマンド名がわからないんですよ。
コマンド名が判るなら、システムコマンド呼び出しでいいんですけど。
392デフォルトの名無しさん:2005/04/30(土) 10:50:14
え〜、マジ?それだけ?
訊く板間違ってるし、ググってもすぐ出てくるよ。
393デフォルトの名無しさん:2005/08/23(火) 20:29:41
リャマ本を読み終えたので、Perlの勉強のために簡単なゲームでも作ろうかと思ってるんですが、
Perlでゲームを作るために参考書ってありませんよね?
C言語で書かれた本をPerlに書き換えて作るしかないんでしょうか。
394デフォルトの名無しさん:2005/08/24(水) 02:08:06
弱い言葉を使うなよ
強く見えるぞ
395デフォルトの名無しさん:2005/08/24(水) 09:02:29
>>393
アルゴリズムと言語の勉強は互いに独立したものです。
396デフォルトの名無しさん:2005/08/26(金) 00:44:22
Perlでサイト管理システム作ってるんだが
管理ページにログインした後ってセッション使ったほうがいいの?
単純にパスワードをcrypt()で暗号化して認証しただけじゃまずいよね?

ちなみにCGI::Sessionを使いたいけど、
レン鯖なんで一切モジュールの類は使えません。
397名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:50:08
どなたか優しい人、構文チェックしてもらえまえんか?
エラーログは以下の通りです。
syntax error at ./accesslog.cgi 行番号 18, near "};"
Unmatched right curly bracket at ./accesslog.cgi 行番号 41, at end of 行番号
syntax error at ./accesslog.cgi 行番号 41, near "}"
Compilation failed in require at C:\check.cgi 行番号 54.

Perlへのリンクです。
ttp://www5e.biglobe.ne.jp/~kokotubo/upbbs/img/90.txt
398名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:04:30
>>397
メモ帳使うな。色付け・インデントできるまともなエディタを使え。このレス読んだ直後に変えなかったら殺す。
17行目#addr → $addr
36行目&error}('0'); → &error('0');
52行目\n\n; → \n\n";
399名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:13:40
もすかして殺人予告キタ━━━(゚∀゚)━━━ッ!!?
400デフォルトの名無しさん:2005/09/12(月) 21:41:28
つうかこのスレ3年もってるのか…w
401デフォルトの名無しさん:2005/09/14(水) 17:54:50
Eclipse+EPICがいいよな、Perlの開発環境。
402デフォルトの名無しさん:2005/09/17(土) 23:17:34
あるサーバにPerlのパッケージファイルを設置しておいて、他のサーバの
Perlで書かれたプログラムがその他のサーバのパッケージを読み込むことは
できるのでしょうか?

どなたかご存知の方教えていただけますでしょうか
403デフォルトの名無しさん:2005/09/19(月) 08:20:13
できてもレスポンスが悪そうだなぁ・・・。
404そやな〜:2005/09/24(土) 13:44:02
402:これはできん。なぜなら、ぱけじ呼んでもその中で使われてるバイナリのライブラリ
xx.soなんか読めんやろ。
405(゚Д゚).csv:2005/09/28(水) 00:41:03
みなさんの助けが欲しく、やってきました。

今仕事でperl言語をやっています。
アンケートのページの改造をやりたいのです。
質問なんですけど、ボタンをクリックすると、
アンケートのデータが入っているテキストファイルを読み込み、
その読み込んだデータでCSVファイルを作成して、
そのCSVファイルをダウンロードさせたいのです。

どうすればいいでしょうか?

【流れ】

・データファイルの読み込み
   ↓
・CSVファイル作成して、データを書き込む
   ↓
・CSVファイルをダウンロードさせる

よろしくお願いします。
406デフォルトの名無しさん:2005/09/28(水) 07:02:21 BE:1961036-###
>>405
仕事でしたらコンサルタントにご相談を。
407デフォルトの名無しさん:2005/09/28(水) 20:53:19
>>405
問題になりそうな部分
・自動でダウンロード開始させるか?リンククリックさせるか?
・一意なファイル名をどう生成するか?

ヒント:
・リダイレクト
・MD5

これで出来なきゃ転職先探した方が良い。
408デフォルトの名無しさん:2005/09/29(木) 18:47:24
Perlだけで、ユーザーサイドのoutlook expressの登録アドレスを参照して、メールすることができますか?
409デフォルトの名無しさん:2005/09/29(木) 18:49:19
>>408
はい。
410デフォルトの名無しさん:2005/09/29(木) 19:16:43
>>409
Perl for Win32が稼動しているサーバーだけですよね。

Perl使用可のレンタルサーバーは、どこでもfor Win32なんですかね??   わかる人、教えて。ちょっとスレ違いの質問でスマソ。
411デフォルトの名無しさん:2005/09/29(木) 20:59:36
>>410
いいえ。むしろUnix系が主流でしょう。
412デフォルトの名無しさん:2005/10/06(木) 21:39:09
あんまりWin32で
Perl動かしてる人っていないんじゃないの?
俺もWin32上で開発してるけど、なんかやりにくい。
413デフォルトの名無しさん:2005/10/08(土) 04:56:32
winで書いて、サーバに上げて試していますが...
それが一般的じゃないんですか?

皆さんLinuxなんですか
414デフォルトの名無しさん:2005/10/13(木) 13:30:50
hotmailのアドレス帳に自動でアクセスして、そのアドレスにメールを一斉送付することできますか?

MAILの内容は、あるURL.で、入力するのは、hotomailのIDとpassword。実行ボタンをクリックで、MAILの送信は、hotmailのサーバーでなく、CGIが置いてあるサーバーのものを使用します。

どのくらいの工数かかりますか? 1日で、できますか?
415デフォルトの名無しさん:2005/10/13(木) 13:46:24
>>414
hotmailよくしらんがやりゃできるんじゃない?

工数はやる人の能力で100倍ぐらい違うのはザラなんで全く意味なし。
1日でできる奴はいるだろうけど、普通に開発会社にたのんだら1人日じゃ
やってくれないだろうね。
416デフォルトの名無しさん:2005/10/13(木) 18:49:00
sedのスレってどこに有るのですか?
417デフォルトの名無しさん:2005/10/14(金) 06:06:10
>>416
UNIX板
418デフォルトの名無しさん:2005/11/10(木) 20:40:15
@_ = $a->b();
my $result = shift;

をまとめて記述することは出来ないでしょうか?
ハッシュの場合は警告が出るけど %{ $a->b() }->{hoge} で良いみたいなんですが。
419デフォルトの名無しさん:2005/11/10(木) 20:41:24
本スレじゃないようなので移動します。
420デフォルトの名無しさん:2005/11/17(木) 15:45:15
cronでperlスクリプトを定期的に起動して、あるサーバが正常に機能しているかチェックしたいのですが、
HTTPサーバに接続して、ページを取得した際に、正常に取得されたかどうかはどのようにしたら分かるのでしょうか?
421デフォルトの名無しさん:2005/11/17(木) 16:50:38
MD5でも取って比較すれば?
422デフォルトの名無しさん:2005/12/12(月) 00:02:36
わかる方、力を貸して欲しいです。ほんと困ってます。
google web apiをperlで使って、検索語を含むWebページのヒット数、URL
を表示するようなプログラムを作りたくて、あるサイトのプログラムを参
考にして作ったのですが、実行したら英語のサイトのURLが表示されて、
明らかに検索語を含んでいません。
もしこうした方がいいという案がありましたら、教えていただきたいです。

自分はPerlをあまり使ったことがなく記述の仕方もいまいちわかっていない
状況です。自分なり本を読んで少しプログラムも書いてみたのですが
まだまだのようです。どうかよろしくお願いします。


use SOAP::Lite;
use Jcode;

my $googleSearch = SOAP::Lite -> service("file:GoogleSearch.wsdl");
my $key='LkML035QFHLEaaFEoFDfPd2VZFDzWGCE';
my $query="とんかつ";

my $result = $googleSearch -> doGoogleSearch($key,jcode($query)->utf8, 0, 10, "false", "", "false", "", "UTF-8", "UTF-8");
#print "About ".$result->{"estimatedTotalResultsCount"}."results.\n";

printf("query=%s %d results\n",$query,$result->{estimatedTotalResultsCount});
for $i(@{$result->{resultElements}}){
printf("%s,%s\n",jcode($i->{title})->euc,jcode($i->{URL})->euc);
}
423デフォルトの名無しさん:2005/12/12(月) 03:32:40
>>422
Net::Googleじゃだめなの?それとここにgoogleアカウントは書かないほうがいい
424デフォルトの名無しさん:2005/12/12(月) 09:42:56
>>423
最初のuseの部分をuse Net::Googleに書き換えるということですか?

ご指摘ありがとうございます。
アカウントは実験的に取得したやつなので、問題ないかと思われます。
心配してくださって、ありがとうございます。
425デフォルトの名無しさん:2005/12/12(月) 12:03:22
このスレは重複スレです。
スレッドストップを依頼しておきますので、こちらにお移り下さい。


Perlについての質問箱 21箱目
http://pc8.2ch.net/test/read.cgi/tech/1134327348/l50

>>422-424
スレッドストップ実行までに暫くかかると思います。
それまでに終わらせて下さい。
426デフォルトの名無しさん:2005/12/12(月) 19:17:16
427デフォルトの名無しさん:2005/12/13(火) 13:49:00
ワラタ
2002年かよ。
428デフォルトの名無しさん:2006/02/11(土) 11:07:17
直リンクが不可能なアップローダー cgi あったら便利だと思う

直リンクされたことによって消滅するアップローダは多いからな

perl で書かれたものキボン
429デフォルトの名無しさん:2006/03/31(金) 20:08:23
かなり遅レスだけどhtaccessかその類の物でよくね?
430デフォルトの名無しさん:2006/04/28(金) 17:16:58
すみません。教えてください。
@commentというところに

xxxxxxxxxxxxxxx(4/26)
xxxxxxxxxxxxxxx(4/27)
xxxxxxxxxxxxxxx(4/28)
xxxxxxxxxxxxxxx(4/28)

のようなデータがあって、
それの中で日付が当日の行に対して


xxxxxxxxxxxxxxx(4/26)
xxxxxxxxxxxxxxx(4/27)
xxxxxxxxxxxxxxx(4/28) New!
xxxxxxxxxxxxxxx(4/28) New!


というように行末に「New!」を加えたいんですが
どうやったらいいんでしょうか?
431デフォルトの名無しさん:2006/04/28(金) 17:30:45
入門書みながらやってるんですけど、全然わかりません。

$find = index ($comment, $date);

if ($find >= 0) {
$comment=s/\n/New!\n
}

432デフォルトの名無しさん:2006/04/28(金) 18:10:36
そりゃ酷い入門書だなw

my $mon = "4", my $day = "28";

grep {s/\(?<=\Q$mon\E\/\Q$day\E\)/ New!/} @comment;
433デフォルトの名無しさん:2006/04/28(金) 18:30:24
やべ、間違てたw

grep {s/(?>=\($mon\/$day\))/ New!/} @comment;
434デフォルトの名無しさん:2006/04/28(金) 18:30:25
ありがとうございます。試してみたけど動きませんでした。
日付のところは例に挙げていたのは正しくなくて正しくは
xxxxxxxxxxxxxx(4/26 xx:xx)
xxxxxxxxxxxxxxx(4/27 xx:xx)
xxxxxxxxxxxxxxx(4/28 xx:xx)
xxxxxxxxxxxxxxx(4/28 xx:xx)
という感じで時間も入ってました。

とりあえず時間の部分を削ってやってみましたがうまくいかず・・・
435デフォルトの名無しさん:2006/04/28(金) 18:34:18
じゃあこれで。

grep s/(?>=$date)/ New!/, @comment;
436デフォルトの名無しさん:2006/04/28(金) 18:45:31
すまん今起きたばっかりで寝ぼけていたようだ。すまん.

これで秒が入ってても大丈夫だと思うよ。
grep {/$date/ and s/$/ New!/s} @comment;
437デフォルトの名無しさん:2006/04/28(金) 18:57:21
おお、出来たっぽいです!!
マジでありがとうございます。
マジで泣けてきます
438じょー:2006/05/27(土) 16:04:39
サーバーのシェルスクリプトをsystemコールして動かないんですが、どうしたらよいんでしょうか?
初期設定が出来てないとかエラーが出てます・・・


439デフォルトの名無しさん:2006/05/28(日) 02:04:53
初期設定してみなされ
440デフォルトの名無しさん:2006/06/03(土) 22:25:24
正規表現で、目でみると実際は空行に見えるが、tabが入っていて
実は空行ではない。のを検索するにはどうしたらいいですか?
その他の空行ではない行でtabが入っていても無視する。
というものです。
441デフォルトの名無しさん:2006/06/03(土) 22:57:21
^\t+$
こっちでも怒られたら悪いがもう答えない。
442デフォルトの名無しさん:2006/06/05(月) 17:31:09
1行に同じ単語が3度以上表れる行をperl正規表現で書くとどうなりますか?
わかる人お願いします。
443デフォルトの名無しさん:2006/06/05(月) 18:57:09
正規表現1本じゃ書けない。コーディングが必要。
444デフォルトの名無しさん:2006/06/05(月) 19:23:16 BE:159193229-#
word.*?word.*?word
じゃだめかなw
445デフォルトの名無しさん:2006/06/05(月) 20:22:16
/^.*?(word.*?){3,}$/
446デフォルトの名無しさん:2006/06/05(月) 20:22:52
これではどうか?

(\Qword\E).*?$1.*?$1
447デフォルトの名無しさん:2006/06/05(月) 20:23:47
>>445
あ。それだな。
448デフォルトの名無しさん:2006/06/14(水) 14:09:08
javaのXMLEncoderで書き出したファイルをXMLDecoderライクに
扱えるperlってありませんか?
449デフォルトの名無しさん:2006/07/02(日) 19:03:01
$hoge = 'A B';
$hoge =~ s/ /\\E\\s\+\\Q/g;
if( 'A B C' !~ m/\Q$hoge\E/ig ){ print $hoge; }

if( 'A B C' !~ m/\QA\E\s+\QB\E/ig ){ print 'aaa'; }

上三行みたいな事がしたいのですが
うまくいきません
お知恵を拝借できませんか?
450デフォルトの名無しさん:2006/07/02(日) 21:03:00
もっとスマートなやり方もあるとは思うが、

my @data = map { '\Q' . $_ . '\E' } qw( A B ) ;
my $str = 'if ( \'A B C\' !~ m/' ;
$str .= join '\s+', @data ;
$str .= '/ig ){ print \'hogehoge\' . "\n" }' ;
eval $str ;
451デフォルトの名無しさん:2006/07/02(日) 22:34:24
それだとAの部分に'$a'とかが混じっていたときに期待しない動作をします
452デフォルトの名無しさん:2006/07/02(日) 22:50:13
まあ、そうだろうねw
そこらは map 中でエスケープしちゃえばいい。
453デフォルトの名無しさん:2006/08/16(水) 12:14:44
Text::CSV_XSについて教えてください。
man Text::CSV_XS.3pmを読んでも解決しませんでした。

$csv->parse($_);
@columns=$csv->fields();
としてCSVファイルの中身を@columnsに格納できるのですが、@columnsは普通の配列じゃない
みたいで、添え字指定で任意の位置(行と列を指定した位置)のデータを取り出すことができません。
foreach $factor (@columns){
print $factor,"\n";
}

foreach $factor (@columns[0]){
print $factor,"\n";
}
はできても、$columns[0][0]などではアクセスできません。このfieldsメソッドで作成された配列は
どのような構造になっているのでしょう。ご教示いただければ幸いです。
454デフォルトの名無しさん:2006/08/16(水) 12:44:36
>>453
Text::CSV_XSはCSV1行を扱うためのもので、CSV複数行で構成される2次元の表を
扱うようなものではない。
455デフォルトの名無しさん:2006/08/16(水) 14:02:03
>>453
ありがとうございます。自分の勘違いに気がつき突破口が開きました。
while($line=<IN>){
}
の中で処理していたのを忘れて悩んでいました。感謝です。
456デフォルトの名無しさん:2006/08/16(水) 19:20:08
あるフォルダの中にある全てのファイル名を拾いたいのですが、やり方がわかりません。
やり方のわかる方はお教え願います。
457デフォルトの名無しさん:2006/08/16(水) 19:38:47
456
すいません解決しました。
458デフォルトの名無しさん:2006/08/21(月) 21:02:49
大文字小文字変換に関する質問です。
例えば、CURR OPIN NEUROL NEUROSURGという文字列をCurr Opin Neurol Neurosurgと変換したい
と考えています。
$line="CURR OPIN NEUROL NEUROSURG";
foreach $i (split(/ /,$line)) {
push(@w, ucfirst(lc($i))." ");
}
print @w;
とするのは冗長である気がするのですが、もっと賢く簡潔にやる方法ないでしょうか。
459デフォルトの名無しさん:2006/08/21(月) 22:07:44 BE:4574276-BRZ(5556)
>>458
1バイトごとのビット演算なんてどうかしら?
0x4F で and して 0x60 で or するとか。

・・・でもucfirstしなきゃか。orz...
460デフォルトの名無しさん:2006/08/22(火) 07:41:15
$line =~ s/(\w+)/ucfirst lc $1/ge;
461デフォルトの名無しさん:2006/08/22(火) 11:54:36
>>460
おぉぉぉぉ素晴らしい!ありがとうございました。
なるほど、なるほど。(\w+)とgを組み合わせたらよかったんだ。
462デフォルトの名無しさん:2006/09/08(金) 18:47:31
データの中に含まれる$を\$とエスケープしたいのですが、
$hoge =~ s/\$/\\$/g;
とすると
Final $ should be \$ or $name at fuga.pl line 53, within string
とエラーになります。$を\$に置換するにはどうすればよいのでしょうか。
463462:2006/09/08(金) 18:58:57
すみません。解決しました。
=~ s/\$/\\\$/g;
464デフォルトの名無しさん:2006/10/25(水) 21:57:54
ちょっと疑問に思ったんだが、MovableTypeとかPerlで書かれてるソフトウェアってたくさんあるけど、あれってソース公開しなくていいのかな?
絶対GPLのライブラリとか使ってると思うんだが…
465デフォルトの名無しさん:2006/10/25(水) 22:45:18
>>464
Perlについての質問箱スレに回答しておいたよー
466デフォルトの名無しさん:2006/11/18(土) 02:19:05
ハッシュの配列をソートしたいんだが、どうしたらエレガントにできますか?


my @hogename = { 'apple', 'orange', 'peach' };
my @hogeval = { 200, 100, 400 };
#
# ここで、@list_of_hash の配列を作る
#
my @list_of_hash = ();
for($i=0; $i<@hoge; $i++) {
my $hash = {
  name =>@hogename[$i]; #要素名
  val =>@hogeval[$i]; #要素の値
};
push(@list_of_hash,$hash);
}
# @list_of_hash を要素の値の昇順にソートするエレガントな方法は?
# いまさっき、いわゆる「馬鹿ソート」をコーディングしたんだけど
# エレガントな方法がきっとあると思う。
#
467デフォルトの名無しさん:2006/11/18(土) 02:44:09
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [$_, $_->{val} ] } @list_of_hash;
468デフォルトの名無しさん:2006/11/25(土) 14:01:05
sub decode {
my($val) = @_;
$a=int($val/(2**40));
$b=(int($val/1048576))%1048576;
$c=(($val-($a*1048576+$b)*1048576))%1048576;

return ($a,$b,$c);
}
32ビット以上の整数$val下位から20ビット、20ビット、10ビットを別な変数$c,$b,$aに取り出す
できるだけ高速なdecode関数を作るとして、もっとよい書き方はあるんでしょうか?
469デフォルトの名無しさん:2006/11/26(日) 17:00:43
>>468
その関数自体バグってないかい?

$aには41ビット目から上が全部入ってるけど。
470デフォルトの名無しさん:2006/11/28(火) 12:06:38
>>468
先に下の20ビットを抜き出した後で残り30ビットを普通に & や >> 使って求めればいいんじゃないだろうか。
つまり、こう。

# 下 10 ビットを $c へ入れる。
$c = $val % (2**10);
# 元の値を10ビット右シフト
$val = int($val / (2**10));
# 下 20 ビットを $b へ入れる。
$b = $val & ((1 << 20) - 1);
# 残り 20 ビットを $b へ入れる。
$a = ($val >> 20) & ((1 << 20) - 1);

但しこのままだと元の値が 52 ビット以上あった場合は 32 ビット用に
コンパイルされた Perl だと正常動作しないと思います(というのは
最初の20ビット右シフトをした段階で32ビット以上存在することに
なるためです。値の保持はできてもシフト演算でまともな結果を返さない
かも知れません)。

元の値が52ビット以上だったとしても正常動作させるためには最初の
20ビット右シフトをやった直後に残り30ビットだけを残して上の桁を
なくすなどの処理が必要です。
471デフォルトの名無しさん:2006/11/28(火) 21:32:30
>>468
sub decode {
   my ( $val ) = @_;

  # 40bit右シフトした値の下位10bit
  my $a = ( $val >> 40 ) & 0x3FF;
  # 20bit右シフトした値の下位20bit
  my $b = ( $val >> 20 ) & 0xFFFFF;
  # 下位20bit
  my $c = $val & 0xFFFFF;

  return ( $a, $b, $c );
}

これでどうさね?
もちろん処理系は64bitなんだろね?
472デフォルトの名無しさん:2006/11/29(水) 17:21:03
>>471
IEEE754の64ビット倍精度(よく32bitマシンのC言語のdoubleで使われているやつ)
だと仮数部が52ビットある。
http://ja.wikipedia.org/wiki/IEEE754
で、Perl は普通の 32 bit CPU の PC で普通にコンパイルすると数値はこれ
使ってると思うので、64ビット環境でなくても50ビットの整数は変数に入れ
られる。ただ問題は32bitを超える値の場合にそのままシフト演算ができない
ことにある。これは多分シフト演算をする時に32bit整数に変換してから行って
いるからだ。
473デフォルトの名無しさん:2006/11/29(水) 17:40:30
観客としてはもとのより速くなったかどうかが知りたいわけですが
ベントとったひといない?

手元のperlは64bit整数使えないので自分でとるのはちょっと大変
なのです。
474デフォルトの名無しさん:2006/11/29(水) 19:48:56
my ($c,$b,$a)=unpack("B20B20B10", $val);

32bit環境だとこれもうまく動作しないみたいです。
475デフォルトの名無しさん:2006/11/29(水) 19:58:08
perlの64ビット倍精度数値の仮数部のビットを一部でも抜き出すのって無理なのだろうか?
476デフォルトの名無しさん:2006/12/01(金) 13:45:15
>>473-475
>>470読んでないのか?
32ビット以下にしてしまえばビット計算できるんだから最初だけ
普通に計算して残りをビット計算すれば良いんだよ。
477デフォルトの名無しさん:2006/12/01(金) 14:44:06
>>476
ベンチは別の方法で回避したのを測定してもそれはその方法のベンチで
あって本来測定したかったものではないからだめだろ。
478デフォルトの名無しさん:2006/12/01(金) 21:57:07
数値を読んだらまず特定のバイナリ形式にpackして、
それから unpack B10 とかで取ればいい。
479デフォルトの名無しさん:2006/12/01(金) 22:04:23
>>476
>>478
解決しているのなら具体的なソースコードを書いてほしい。
480デフォルトの名無しさん:2006/12/01(金) 22:27:21
簡単には書けないから468のようなコードになっている。
>>479
481デフォルトの名無しさん:2006/12/02(土) 04:40:53
演算回数が同じならビット演算のほうが浮動小数演算よりはやい。
ベンチとるかどうかはコードを見てからだな。
>>473
環境に依存するコードでよければ高速になるようだが、32bit環境でも
動作するコードで高速なコードがかけるかどうかは、50ビットの値から
32ビット以下の複数の値を取り出すエレガントな書き方があるかどうかだ。
シフト、論理演算、モジュラ、pack全部使えないのだから、だめなんでは。

482デフォルトの名無しさん:2006/12/02(土) 11:03:53
入力データの形式が文字列なのかPerlのよくわからん数値なのかはっきりしてほしい。
483デフォルトの名無しさん:2006/12/02(土) 11:28:17
環境依存でいいならいくらでも解決方法あるよな。
たとえばWin32ならCのDLL一個書いてWin32::APIですぐだ。さすがにコード貼る気はないが。
484デフォルトの名無しさん:2006/12/02(土) 15:41:17
>>481
unpackは"d"とかも駄目なのか?まだ使えないという結論はでてない。

468,471のコード見る限り64ビット倍精度で50ビットの数値が入力されるのでは。
>>482

環境依存の場合は64ビット環境で471のコードでOK。
>>483
485デフォルトの名無しさん:2006/12/10(日) 13:01:48
#!/usr/bin/perl
use bigint;
$hexstr="100000000";
print hex($hexstr),"\n";

というスクリプトを実行すると、
Integer overflow in hexadecimal number at ./test1.pl line 5.
4294967296
と警告が出ます。結果は正しいのですが。
本来どうするべきものなのですか。
486デフォルトの名無しさん:2006/12/10(日) 14:09:53
use Math::BigInt;
$hexstr="100000000";
$b = new Math::BigInt("0x$hexstr");
print $b,"\n";

小文字のbigintは気づかぬところでバグが出るから俺は好きじゃないな。
487デフォルトの名無しさん:2006/12/14(木) 00:22:53
最近見たソースの中に@{$hoge[$num]}というような表記をしている箇所が
数カ所ありました。
@{}って何を表しているのでしょうか?^^;

それっぽいキーワードなどGoogleに入れてみたんですが、
適切なサイトを見つけることができず、どなた教えて頂けると助かります。
488デフォルトの名無しさん:2006/12/14(木) 00:27:13
変数名とかを変数にしたいときの書き方

@LIST =(1,2,3);
$hoge = 'LIST';
print @{$hoge};
489デフォルトの名無しさん:2006/12/14(木) 00:29:21
>>488
おぉ、なるほど。
そんな書き方があったんですね(^^;

ありがとうございます。
490デフォルトの名無しさん:2006/12/14(木) 02:49:05
>>487
配列へのリファレンスをデリファレンスしているのでは。

$hoge[$num] = [1,2,3];
print join(",", @{$hoge[$num]});

>>488
いまどきシンボリックリファレンスを教えないように。
491デフォルトの名無しさん:2006/12/15(金) 19:44:09
>>487
てか、その程度のことはPerlの入門書に書いてあると思うのだが。
492デフォルトの名無しさん:2006/12/26(火) 16:00:54
CGI.pmを使って、下と同じような処理をするにはどのようにすれば良いのでしょうか。
read(STDIN, $temp, $ENV{'CONTENT_LENGTH'});
@query = split(/&/, $temp);

foreach (@query) {
($name,$value) = split(/=/);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$query{$name} = $value;
}
493デフォルトの名無しさん:2006/12/26(火) 16:25:58
ググれば一発だと思うんだけど・・・
494デフォルトの名無しさん:2006/12/26(火) 16:35:28 BE:474948465-2BP(1)
$q=new CGI;
@query = $q->param;
とか
@query = param;
とか試したけどうまくいかない。
(CGI.pmバージョン3.25)
495デフォルトの名無しさん:2006/12/26(火) 16:43:07
欲しいのはこれか?
%params = $q->Vars;
496デフォルトの名無しさん:2006/12/26(火) 17:28:00
あなたは神だ
497デフォルトの名無しさん:2007/01/21(日) 01:22:04
PCの解像度を取得できませんか?
498デフォルトの名無しさん:2007/01/21(日) 21:13:10
>497
とりあえず環境依存だと思う。
499デフォルトの名無しさん:2007/01/21(日) 21:37:20
>>497
解像度というのは、デスクトップの大きさのこと?
Windows なら、GetWindowRectというAPIで取れる。
Perl での使い方は適当にググって調べてちょ。
500デフォルトの名無しさん:2007/01/22(月) 02:39:24
すまん 漫画板から来たんだが、Pealの作者があずまんが大王のファンって
このスレの人からするとどうよ?
ttp://gihyo.jp/magazine/wdpress/serial/2007/alpha-geek/0000
501デフォルトの名無しさん:2007/01/22(月) 10:57:56
やっぱそのキャラのファンか・・・
502デフォルトの名無しさん:2007/01/22(月) 16:05:41
青ラクダ本書いてたときはSamurai Xだっけ?
503デフォルトの名無しさん:2007/01/25(木) 15:58:52
>>497

$| = 1;
print "PCの解像度を入力してください >> ";
my $kaizoudo = <STDIN>;
504デフォルトの名無しさん:2007/02/06(火) 21:24:44
Win XPで”デフォルト”のプリンター名取得できませんか?

Win32::Printer::Enum
で全てのプリンタ名のリストはできるのですが。。。
505デフォルトの名無しさん:2007/02/06(火) 21:29:47
Win32::APIがあるから、あとはそっち系のスレで聞け
506デフォルトの名無しさん:2007/02/06(火) 21:34:37
>>505
やっぱりAPIか。。。
507デフォルトの名無しさん:2007/02/07(水) 03:33:21
つーかマルチしてね?その質問
508デフォルトの名無しさん:2007/02/08(木) 02:53:26
いろんなところで見るな。

WinAPIスレで親切な人が教えあげたみたいだが
509デフォルトの名無しさん:2007/02/09(金) 20:30:15
>>504
print "デフォルトのプリンター名を入力してください。\n";
my $default_printer_name = <STDIN>;
510デフォルトの名無しさん:2007/02/28(水) 02:17:18
パールが出してくれるメッセージの解説はどこかにありますか?
511デフォルトの名無しさん:2007/02/28(水) 02:34:02
perldoc perldiag
512デフォルトの名無しさん:2007/02/28(水) 05:52:33
>>511
さっそくすみません。
man perldiagでもいいんですね。助かりました。
513デフォルトの名無しさん:2007/04/23(月) 18:12:33
■ Perl言語 ■ 何でも質問コーナー ■
http://mixi.jp/view_bbs.pl?id=17607679&comm_id=1401396
Perlに関すること、cgiに関すること
なんでも質問できるコーナーです(たとえばApacheとかでもOKとします!)
(Web系であればOK)

ルール:
Google検索で調べてわかるようなことでも質問してもOKです
(初心者のうちは、どの情報を取捨選択したらイイのかわからないと思うので)
回答してくださるかたは、暖かく質問者を迎えてやってください
o(^^o) (o^^)o



514デフォルトの名無しさん:2007/05/28(月) 23:35:26
IP(ドメイン名)からアクセスポイントを取得するにはどうすればよいですか?
515デフォルトの名無しさん:2007/05/29(火) 00:15:44
アクセスポイント・・・アクセスポイント?
516デフォルトの名無しさん:2007/05/29(火) 06:21:14
IP(ドメイン名)・・・IP(ドメイン名)?
517デフォルトの名無しさん:2007/05/29(火) 10:12:40
518デフォルトの名無しさん:2007/05/29(火) 15:45:52
オブジェクト指向で、objectAのメソッドfooからobjectBのメソッドvarを呼ぶ場合って、
下記みたいな書き方でいいのかな?一般的にはどう書くの?
----main.pl
-略-
package main
Use classA;
Use classB;
objectA = new classA;
objectB = new classB;
-略-
----
----classA.pm
-略-
package classA;
sub foo
{
my $self = shift;
$self->{val} = $main::objectB->var('param');
}
-略-
----
519デフォルトの名無しさん:2007/05/29(火) 17:36:21
classA.pm から use classB; すりゃあいい。
$main:: なんかイラネ
520518:2007/05/29(火) 18:14:23
>519 dクス。

反省。質問を単純化しすぎだった。

オブジェクト複数を互いに呼び合えるように宣言するにはどうすれば良いか?って話なんだけど・・・。
>classA.pm から use classB; すりゃあいい。
した場合、objectAからobjectBのメソッドを呼べるけどobjectBからobjectAのメソッドを呼んだ場合どうなるんだろ?
他には、objectCやらobjectDが出てきた場合どうなるんだろ?
classA.pmで my objectB=new classB;したobjectBと、classC.pmでmy objectB=new classB;したobjectBは別物だよね?
漏れ、何か勘違いしてる?

漏れが思いつく範囲では、
・mainパッケージのobject保持変数を参照する(>518に書いた方法)
・各objectをお互いにセットする
ぐらいなんだが、一般的な書き方ってどうなのかと思って聞いてみました。
521デフォルトの名無しさん:2007/05/29(火) 19:18:28
何がしたいのかよくわからんが、
それはメソッドを呼び出すのではなく、fooに引数として渡せばよいだけのことでは?
あるいは各クラスにクラスデータとして持たせるとか、、、
package SomeClass;
my $objectA = ClassA->new();
my $objectB = ClassB->new();
以下、メソッドの定義(メソッド内で$objectA,$objectBを使う)
522518:2007/05/29(火) 19:56:38
実際にやりたい事:
 DBオブジェクトやセッションオブジェクトと画面表示オブジェクト(画面の種類毎にいくつかある)の連携

セッションオブジェクト(sessionObj)に格納したデータを画面表示オブジェクト(AdispObj)に渡して表示するのにメインで、
$AdispObj->setdata('dataA',$sessionObj->getdata('dataA'));
$AdispObj->setdata('dataB',$sessionObj->getdata('dataB'));
$AdispObj->displayAll();
見たいな事をしていたが、
メインが本筋の流れの制御以外の事を大量に抱え込むのでソースが見づらくなってる。

で、画面表示オブジェクトのメソッドの中でセッションオブジェクトやDBオブジェクトから
データを直接取り込んだらどうかと思ったわけ。

オブジェクト指向ってオブジェクトとオブジェクトがメソッドでやり取りして処理を進めるものなんだろ?
C++チョットかじった程度で、それから7年以上経ってるんで実際どうやってたか忘れてるんだが、
その辺のコーディングスタイルの標準がわかれば良いかと思ったんだ。

SomeClassとか、mainとは別のパッケージを作るのが一般的なの?
523デフォルトの名無しさん:2007/05/29(火) 22:53:52
オブジェクトを使う目的のひとつがカプセル化だから、結局セッターやゲッターを介してしか
クラス間でデータのやりとりはできんのよ。
mainでその操作を隠蔽したいのであれば、各クラスに静的な領域を作り、
完全修飾で直接アクセスまたはメソッドを介したアクセスをするしかないわな。
package Adisp;
sub displayAll

524デフォルトの名無しさん:2007/05/29(火) 22:54:49
すまん、途中で送ってもうた

sub displayAll {
525デフォルトの名無しさん:2007/05/29(火) 22:58:22
shiftキーうかつに押すとミスりやすいな
sub displayAll {
 Session->new->getdata($param)でSessionクラスからデータをロード
 以下処理
}
結局、最初に自分で書いたのが多少みにくくてもベストではないのかな
526518:2007/05/29(火) 23:34:42
dクス。

オブジェクト指向について、復習をはじめたよ。
ttp://www.atmarkit.co.jp/im/carc/serial/object06/object06.html
オブジェクトが別のオブジェクトのメソッドを直接呼び出すパターンは存在するみたいだな。

何かオブジェクト指向実装の参考になるフリーソフトのPerlソースとかって無いかな?
527デフォルトの名無しさん:2007/05/29(火) 23:50:12
実装の参考にはならんかもしらんが、
perlboot, perltoot, perltooc, perlbot
読めば?perl の OOP が(変態的な部分を含めて)載ってるよ。<- 当たり前

実装でハデにがちゃがちゃやってんのは、俺の専門分野の奴なら知ってるけど
専門外の人にはとてもじゃないけどお勧めできんので。スマン。
528デフォルトの名無しさん:2007/05/30(水) 00:38:40
オブジェクト同士が互いを呼び合うというのは、あんまりやるべきではない。
クラス設計をまずは見直すべき。

OOなら、そういうのはインターフェースを使うんだがな。
Perlでそこまでするのはどうなんだろうな。
529デフォルトの名無しさん:2007/05/30(水) 00:40:59
>>522
みたいのは、デザインパターンだと、コマンドパターンの典型だな。
530デフォルトの名無しさん:2007/05/30(水) 17:00:29
うむ
531518:2007/05/31(木) 01:29:27
皆様の意見大変参考になりました。勉強しなおしてきます。m(_ _)m
532デフォルトの名無しさん:2007/06/14(木) 16:25:15
>526 どっかで、perl OOPのお手本を見たければ、CPANに登録されてるMail関連を見ろって書いてあった。
533デフォルトの名無しさん:2007/07/08(日) 21:02:43
PerlでOOPしたいなら、まずは

perldoc boot
perldoc toot
perldoc tooc
perldoc perlbot

あたりを読んどけ
534デフォルトの名無しさん:2007/07/08(日) 21:50:44
PerlでOOPしたいなら、Rubyに乗り換えた方がいいだろ。
535デフォルトの名無しさん:2007/07/09(月) 05:27:29
> PerlでOOPしたいなら、Rubyに乗り換えた方がいいだろ。

Ruby に乗り換えると、Perl で OOP をしたいとう願望を達成できるのか?
いまいちよく分からないので、このスレを全部使ってでもいいから説明してくれ。
536デフォルトの名無しさん:2007/07/09(月) 11:27:14
HTML::Template使ってるんですけど、
<TMPL_INCLUDE NAME="ファイル名"> のファイル名を
動的に変更できませんか?
537デフォルトの名無しさん:2007/07/09(月) 13:20:41
もろちんできますょ
538デフォルトの名無しさん:2007/07/09(月) 18:08:39
そこをなんとか、ご教授を。
539デフォルトの名無しさん:2007/08/11(土) 01:23:31
Windows XP で Active Perl を使用してるのですが、
漢字のとりあつかいについて、ちょっと行き詰まったので教えてください。

まず分かったこと:

・Perl で Shift JIS を扱うのは自殺行為に等しい。
・EUC は C言語や Perl 専用につくられたコードなので、
 できればそっちを使うのが良いが Windows ではかえって混乱するだけ。
・今どきなら、UTF-8 を使うのが Cool。 Java も PHP も MySQL も、
 UNIX 由来の言語はみな内部で UTF-8 処理しているから。
・ちなみに Windows は内部処理では UTF-16LE を使用しており
通常の API と UNICODE 版API の2種類を持っている。
 ファイルシステムもUNICODE化されており、Shift JIS では無い文字がファイル名に使えたりする。

で、当然、use utf8 でバリバリ書こうと決心したのですが・・・
もうメチャクチャです。漢字ファイル名のファイルがぜんぜんオープンできないんです。
最初は画面表示も化けまくってたのですが、これは binmode STDOUT,":encode(cp932)" で解決しました。
でも print __FILE__ で化け化け、print $ARGV[1] も化け化け。readdir したファイル名も化け化け。
readdir で取ってきたファイル名でファイルをオープンすることもできず、もうどうにもなりません。

java、vbscript、jscript、php、c、c++、C#、j# もちろんBATファイルも、perl 以外の言語なら何も問題なくできる事が
perl に限って、漢字ファイル名が開けない、-f とか -d でもテストできないんです。
何か方法があるのでしょうか? open FILE, "<:encode(cp932)", "月間売上表.txt" じゃダメなんですかね・・・
540デフォルトの名無しさん:2007/08/11(土) 02:20:00
>>539
あんたが「漢字ファイル名」と呼称しているものがPerlからどう見えているのか
調べればいいだろ。
541デフォルトの名無しさん:2007/08/11(土) 02:21:04
>>539
Rubyでも使ってろ化す
542デフォルトの名無しさん:2007/08/11(土) 15:01:57
やっぱダメっす。
問題を切り分けるために、たった2行だけの短いプログラムにしてみました。

use utf8;
open FILE, ">:encode(cp932)", "月間売上表.txt" or die;

それでも 「Died at test.pl line 2.」 って怒られます。
こんなに短いプログラムの、いったいどこにバグがあるのか見当がつきません。

バッチファイルで

ECHO 7月,300まんえん>月間売上表.txt

だと何も問題なくファイルが作られるんです。だからディスクのエラーでは無いと思います。
もうワケワカメです (T_T)
543デフォルトの名無しさん:2007/08/11(土) 15:31:20
「表」が原因だな
544デフォルトの名無しさん:2007/08/11(土) 22:08:35
use utf8;
use Encode qw(encode);
use open ":utf8";

open FILE, ">", encode("cp932","月間売上表.txt") or die;
print FILE "Perlなんて、つかっちゃらめぇ><";
545デフォルトの名無しさん:2007/08/12(日) 00:37:08
>>544
おお、ネ申光臨!

バッチリです。そんな裏技があったとは知りませんでした。的確なご回答に感謝します。
ただ、そこまではウマクいったんですけど、処理を追加したらまた問題が発生しました。
12行目の rename で die してしまうんです。
(rename をコメントアウトすれば動くんですが、データのバックアップができなくなるんで・・・ちと不安)

use utf8;
use Encode qw(encode);
use open ":utf8";

open FILE, "<", encode("cp932","月間売上表.txt") or die;
@data = <FILE>;
close FILE;

foreach (@data) { $_ = "(済)" . $_ } # テキトーにデータ加工処理

if (-f "月間売上表.bak") { unlink "月間売上表.bak" or die }
rename "月間売上表.txt", "月間売上表.bak" or die; # <-- ここで死ぬ

open FILE, ">", encode("cp932","月間売上表.txt") or die;
print FILE @data;
close FILE;
546デフォルトの名無しさん:2007/08/12(日) 01:03:19
……(絶句)

知的障害者が来ているようだな
547デフォルトの名無しさん:2007/08/12(日) 02:19:17
svgをjpgなどに変換したいのですが、よく分からず困っています。
librsvgなどを使用するんでしょうか?
548デフォルトの名無しさん:2007/08/12(日) 08:02:39
>>546
頭の弱い子によくありそうなことじゃない。
障害って程でもなかろう。
549デフォルトの名無しさん:2007/08/13(月) 15:42:40
> ・EUC は C言語や Perl 専用につくられたコードなので、
>  できればそっちを使うのが良いが Windows ではかえって混乱するだけ。

クマーーーー
550デフォルトの名無しさん:2007/08/13(月) 15:53:51
そもそもマイクロソフトが作ったインターネットでPerlを使うのは
法律違反すれすれなんだが、今さらそんな事を言ってもしょうがない。

だけどEUCの使用は明白な犯罪。やめた方が良い。
551デフォルトの名無しさん:2007/08/13(月) 16:05:18
>>550


   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

552デフォルトの名無しさん:2007/08/13(月) 16:22:00
>539
無茶苦茶言ってるなw
PerlでもShift_JISはよく使うし、状況次第でiso-2022-jpでもeuc-jpでも使うよ。
utf8は扱いづらい。他のコード同様、それを使うのが自然な時にだけ使う。
553デフォルトの名無しさん:2007/08/13(月) 16:40:29
> utf8は扱いづらい。

老人?
554デフォルトの名無しさん:2007/08/13(月) 17:28:27
utf8 はたしかに使いづらいよ。現に >>545 のようなバカが沸いてきてるし。
誰も >>545 の謎が解けないようだから代わりにオレがバカの相手をしてやる。
いいか、正解は、こうだ。日本語にはすべて encode("cp932",○○) をつける。

use utf8;
use Encode qw(encode);

open FILE, "<:encoding(cp932)", encode("cp932","月間売上表.txt") or die;
@data = <FILE>;
close FILE;

foreach (@data) { $_ = "(済)" . $_ } # テキトーにデータ加工処理

if (-f encode("cp932","月間売上表.bak")) { unlink encode("cp932","月間売上表.bak") or die } # ここ
rename encode("cp932","月間売上表.txt"), encode("cp932","月間売上表.bak") or die; # ここ

open FILE, ">:encoding(cp932)", encode("cp932","月間売上表.txt") or die;
print FILE @data;
close FILE;

print encode("cp932","月間売上表.txt を更新しました。\n");

どうだ、cp932 だらけのすばらしいコードだろ?実にゲージュツ的だ。惚れ惚れするね。
これを業界では 「encode cp932 地獄」と言う。割と有名なハナシだ。良く覚えておけ。
555デフォルトの名無しさん:2007/08/13(月) 22:27:01
> 545のなぞが解けない

マジレスするともうutf8ネタは繰り返し繰り返し出るネタで答えるのに飽きたネタだからスルーしてるだけよ…
556デフォルトの名無しさん:2007/08/13(月) 22:54:09
>>554
どこの糞業界だよ、それ
そもそもutf8なファイル名リテラルで使ってる時点で間違いに気づけよ
557デフォルトの名無しさん:2007/08/13(月) 23:45:19
>>556
それを言うなら、「そもそも perl 使ってる時点で間違いに気づけよ」 だな。
558デフォルトの名無しさん:2007/08/14(火) 18:28:55
> それを言うなら、「そもそも perl 使ってる時点で間違いに気づけよ」 だな。

そうか。代替案があるなら提示してくれよ。
どうせ煽ってるだけの馬鹿なんだろうけど。w
559デフォルトの名無しさん:2007/08/15(水) 07:12:37
>>558
それは>>556に言えよ。代替案があるなら提示しろとな。
どうせ煽ってるだけの馬鹿なんだろうけど。w
560デフォルトの名無しさん:2007/08/15(水) 22:05:57
utf8って書いたらスクリプトをUTF-8で保存しろよ。
それで全て解決だろ。
561デフォルトの名無しさん:2007/08/15(水) 22:10:55
>>554 >>557 >>559

Rubyを貶されたからって初心者Perlユーザに嘘を教えるなよRubist君。
562デフォルトの名無しさん:2007/08/16(木) 02:15:50
あららんらんらん〜〜〜
>>554 は実際に utf8 で保存して、ちゃんと動作テストを済ませてありますよ。
これ以上弄りようの無い、カンペキなクソperlコードですがなにか?

>>560
バカですか?つうかバカですか?いやむしろバカですか?

>>561
以下同文

まぁいずれにせよ、質問に回答はしない、他人の回答はなじる罵倒する。
でも自分は代替案も何も出せない。
他の言語スレには見られない、Perl スレの決定的な特徴。
563デフォルトの名無しさん:2007/08/16(木) 07:34:08
no utf8 も使えないバカが粘着してることは分かった
564デフォルトの名無しさん:2007/08/20(月) 01:31:42
>>554
それでも良いんだけど、
ファイル名があっちこっちに散乱しているのは美しく無いですよ。
こんな風に手直ししてみてはいかがですか?

use utf8;
use Encode qw(encode);
binmode STDOUT,"encoding(cp932)";

$filename = "月間売上表.txt";
$backup = "月間売上表.bak";

open FILE, "<:encoding(cp932)", encode("cp932",$filename) or die;
@data = <FILE>;
close FILE;

foreach (@data) { $_ = "(済)" . $_ } # テキトーにデータ加工処理

if (-f encode("cp932",$backup)) { unlink encode("cp932",$backup) or die }
rename encode("cp932",$filename), encode("cp932",$backup) or die;

open FILE, ">:encoding(cp932)", encode("cp932",$filename) or die;
print FILE @data;
close FILE;

print $filename," を更新しました。\n";
565デフォルトの名無しさん:2007/09/23(日) 01:29:05
素人質問で申し訳ありません〜!!cpanシェルで
install XML::XBEL
を実行すると、途中で
Install Module::Build now from CPAN? [y]
と出るので、yをおしました

そしたら最後に
/usr/bin/make install -- OK
*** Cannot install without Module::Build. Exiting ...
Running make test
Make had some problems, maybe interrupted? Won't test
Running make install
Make had some problems, maybe interrupted? Won't install
と出て、インストールできませんー!
どうか解決のアドバイスをください・・・・。。。。

566デフォルトの名無しさん:2007/09/23(日) 05:49:18
>565
Module::Build がインストールできていないようなので、ログのもっと前の方を調べるべき。
567デフォルトの名無しさん:2007/09/23(日) 10:29:56
>>566
ありがとうございます!
568565:2007/09/23(日) 12:52:59
Module::Buildを手動でインストールすることにしまして、
make、make testは通ったんですが、その後のmake installで
ERROR: Can't create '/usr/local/lib/perl5/site_perl/5.8.8'
Do not have write permissions on '/usr/local/lib/perl5/site_perl/5.8.8'
とエラーが出ました。
レンタルサーバー上での作業のため、一般ユーザ権限しかないので
怒られるのは当然なのですが、インストール先(?)を変更するには
どうすればよいのでしょうか?

569デフォルトの名無しさん:2007/09/23(日) 13:12:07
>>568
makefileくらい自分の環境に合わせて編集しろよw
570565:2007/09/23(日) 13:42:15
低レベルの質問で申し訳ありません。
webで調べたのですが、どうしても書き方がわからなくて。
installdir=/home/(mydir)/lib/perl
といった感じに設定すればよいのでしょうか?
571デフォルトの名無しさん:2007/09/23(日) 14:38:55
>570
perl Build.PL --install_base /home/foo
あるいは
perl Makefile.PL INSTALL_BASE=/home/foo

まずは perldoc か CPAN で探してみるべきだと思うんだよ。
http://search.cpan.org/~mschwern/ExtUtils-MakeMaker-6.36/lib/ExtUtils/MakeMaker.pm
http://search.cpan.org/~kwilliams/Module-Build-0.2808/lib/Module/Build.pm
572デフォルトの名無しさん:2007/10/27(土) 03:03:32
Perl初心者の質問です。
CSVにデータを書き込むにはどうすればいいでしょうか?
モジュールで読み込むことには成功しました。
他のモジュールをいくつか試したのですが上手くいきません・・・
ご教授お願いします。
573デフォルトの名無しさん:2007/10/27(土) 03:07:13
「うまくいきません」じゃわからんよ。
とりあえず、いちばん簡単なのは、ファイルをオープンして print 文で。

574デフォルトの名無しさん:2007/12/24(月) 16:37:10
改造関係ってこのスレでいいのかな?

http://dream.lib.net/room/cgi/e_acsdeny.html

このスクリプトの「l_alog.dat」へ出力されるアクセスログに「アクセスした時間」も表示したいんですが
どうすればいいのかわかりません。

同じサイトで配布してる掲示板から時間の処理してる部分コピってみてもうまくいかず・・・
ご教授願います。
575デフォルトの名無しさん:2007/12/24(月) 16:39:38
あ、改造はWebProg板かorz
576デフォルトの名無しさん:2007/12/24(月) 17:13:37
>>575
改造だからとかじゃない。webプログラミングはWebProg板。
577デフォルトの名無しさん:2008/01/11(金) 00:10:36
ファイルとスカラーを引数に実行するプログラムを作りたいです。
以下のように書くと、ファイルは読み込んでくれるのですが、スカラーがないと言われます。
whileのところが悪いと思いますがどう書いたらいいでしょうか?お願いします。

&data_input($line, $num);

sub data_input{
  ($refline, $refnum) = @_;
  while ($refline = <>) {
  chomp $refline;
578577:2008/01/11(金) 00:32:09
shift を使って解決しましたm(__)m
579デフォルトの名無しさん:2008/01/11(金) 14:43:33
このスレでいいのかどうかわからんけど、質問させていただきます

・WindowsのActivePerlで、cpanを使ってHash::Mergeをインストールしたい
・Cloneが必要らしいから、先にこっちをインストールしよう
・cpan Cloneすると、make testの段階で「msvcr90.dllが見つからない」とエラーが出る
・msvcr90.dllまでのパスを通すと、今度はCランタイムエラー(R6034)が出る ←今ここ

もうさっぱりわからない

環境:
WindowsXP Pro SP2
ActivePerl 5.10.0
Visual C++ 2008 Express Edition
580デフォルトの名無しさん:2008/01/11(金) 16:33:57
>>579
若干スレ違い気味だけど、自分の場合(XpSP2+VC2005)での対処法。

perl Makefile.pl
で出来上がった Makefile のなかの、実際にコンパイルが走ってる行で、
”-MD” となっているところを全て ”-MT” に変更する。

でさらに、リンクライブラリが列挙してあるところの
”mscvrt.lib” を ”libcmt.lib” に変更してから、nmake && nmake test を掛ける。

これは、詳しくはMSDNのリファレンスを見てもらいたいんだけど、
.Net がWindowsに入って以降、標準のCランタイムライブラリが、
”libcmt.lib”から”msvcrt.dll”に変更された。(VCでのデフォルトになった。)
この”msvcrt.dll”は、実体は”msvcr80.dll”(XP+Net2.0+VC2005の場合)へのダイナミックリンクのローダーなんだけど、
Windows上で有効なCランタイムライブラリが、以前(VC2003以前)は、”libcmt.lib”からのstatic_linkだったのが、
2005から、”msvcrt.dll”へのdynamic_linkへ変更された模様。
(だから、以前VC2003で書いてたCソースをそのままVC2005でコンパイルしなおしても、動かないことが頻発)

ウチで以前いろいろ試した時は、”*.manifest”があっても、ロードしてくれなかったり、
実際コンパイルしたマシン上では正常に動作しても、それをパッケージングした.ppmを、他のマシンに
インストールして実行したりすると、そちらと同じように「msvcr80.dllが見つかりません」みたなエラーが出て実行出来なかった。
(しかも、その他マシンに、.Netインストール済み且つVC2005もインストールして、コンパイルしたマシンと同じ 環境設定しても、同じエラーが出た。)

msvcrt90ってことは、.Netは3.0かな?OSはひょっとしてVistaかな?

VC2008はまだ触ったこと無いんで詳しくはわからないけど、まだこの方法でいけると思う。
でもMSDNによると、将来的には”libcmt.lib”のstaticlinkオプションを切って、全て”msvcrt.dll”での動的ロードに切り替えて行く方針らしい。
581デフォルトの名無しさん:2008/01/11(金) 17:38:17
>>580
その通り置換したらいけたー
ありがとう。勉強になったよ
582デフォルトの名無しさん:2008/01/29(火) 11:07:02
perl-baseパッケージというのは以下のように説明されていますが、

Debian -- sid の perl-base パッケージに関する詳細
http://packages.debian.org/ja/sid/perl-base

基本的な部分だけ入っているというのは具体的にどういう意味なんでしょうか。

1. perlパッケージが入っていればperl-baseパッケージを入れる必要がないのでしょうか。
2. perl-baseを入れればperlインタプリタが一緒にインストールされるのでしょうか。
(perlコマンドが使えなかったのでそういうわけでもなさそうですが。)
3. perl-baseを入れると何らかのモジュールがインストールされるのでしょうか。
4. perl-baseだと具体的にどういうものが不足するのでしょうか、可能性として。

以上お願いします。

583デフォルトの名無しさん:2008/01/30(水) 18:04:43
1. perlはperl-baseとperl-modulesに依存していますから、自動で入るはずです。
2. perl-baseには/usr/bin/perlが含まれています。
3.4.5. ファイルリストをご覧ください。
http://packages.debian.org/ja/sid/i386/perl/filelist
http://packages.debian.org/ja/sid/all/perl-base/filelist
http://packages.debian.org/ja/sid/all/perl-modules/filelist
584デフォルトの名無しさん:2008/01/31(木) 01:36:27
質問箱に書き込めないので、
split で分割して foreach で処理しようとしましたが、順序が元の文字列と変わる場合があります。
これが仕様なのかわかりませんが、どう対処すればよいでしょうか?
585デフォルトの名無しさん:2008/01/31(木) 10:47:41
コードさらせよ
586デフォルトの名無しさん:2008/01/31(木) 11:45:24
>>584
なぜ順番が変わるのかを突き止めて、その原因を取り除く。
587デフォルトの名無しさん:2008/01/31(木) 14:53:38
>>585
>>586
レス有難うございます。
コード自体はそれほど長くないのであげることはできますが、必要なデータファイルが
ここに挙げるには大きすぎるので要点だけを書き射抜いたところ、再現しません。
仕様ではなさそうなので、ちまちま検討してみます。
588デフォルトの名無しさん:2008/01/31(木) 17:31:43
経験的に、そういう場合は同じところを最初からもう一回書き直せば直る。
589デフォルトの名無しさん:2008/02/02(土) 20:17:12
split に使う正規表現が間違ってるから
期待とは違う分割をされちゃって
順序が違ってしまったように見えてる、とかね
590デフォルトの名無しさん:2008/02/02(土) 23:33:45
684です。
お騒がせいたしました。
ちまちま検討した結果、なんともはやお粗末なバグであることが判明しました。

split 後の各ワード(日本語)は漢字、ひらかな、カタカナ、数字、アルファベット(全角・半角)
なのですがその語が辞書ファイルにあれば該当する語を返し、ない場合はカタカナ(全角)
である場合はひらかなにして返すと言うくだりで、件のひっくり返り事件がおきました。
この辞書ファイルというのがカタカナ・ひらかな変換ができていない時に構成されて
そのときどう言う訳か具体的には「ラッツ&スター」の「ラッツ」が「すたー」に、「スター」が
「らっつ」に登録されていたのです。
(continue)
591デフォルトの名無しさん:2008/02/02(土) 23:36:39
584の間違いでした。
続き、
したがって、要点だけを抜き出したルーティンではこの現象が再現されなくて当然です。
(各ワードをプログラム中に設定し、それをsplitして単にひらかな変換しjoinし出力)
まことに申し訳ありません。
しかし、splitの仕様かとも思ってこちらに質問し、レスの感触からそうではなさそうだと
わかり遠回りせずに済みました。有難うございました。
592デフォルトの名無しさん:2008/02/04(月) 20:04:42
誘導してくださいお願いします(´;ω;`)

下記のように代入した場合に、「aa」と「bb」の部分にあたる要素名一覧を取得する方法はありますか?
$hash{'a'}->[0]->{'aa'} = 100;
$hash{'a'}->[0]->{'bb'} = 500;


@key = keys($hash{'a'}->[0])でできる?
とか思ったばかな自分にご教授お願いしますm(_)m
593デフォルトの名無しさん:2008/02/04(月) 20:17:50
keys %{$hash{'a'}[0]}
594592:2008/02/04(月) 21:01:27
>>593
おおおお━━━━(T▽T)━━━━!!
できました!

%{ }で囲えばよかったんですね…
勉強になりました!

ご協力感謝いたします。
どうもありがとうございましたm(_)m
595デフォルトの名無しさん:2008/02/05(火) 08:28:55
sedの上位バージョンと言う位置づけでperl5.10に取り組んでいます。
日本語のマッチングに関しては、「基本的にできない」という捉え方でよいでしょうか?
perlに精通するのが目的ではなく、実用上のツールとしてどうか、ということで
アドバイスをいただければ幸です。
596デフォルトの名無しさん:2008/02/05(火) 09:30:51
>>595
だめ
597デフォルトの名無しさん:2008/02/05(火) 11:30:24
>>595
Encodeとかencodingのドキュメントを読めばできるんじゃね?
598デフォルトの名無しさん:2008/02/05(火) 11:53:58
>>594
> %{ }で囲えばよかった

Perl のリファレンスの部分を勉強したほうがいいと思う。
そうしたら $hash{'a'}、$hash{'a'}->[0] の正体と、それをどう扱ったらいいのか理解できる。
599デフォルトの名無しさん:2008/02/05(火) 14:07:04
600デフォルトの名無しさん:2008/02/13(水) 01:37:08
質問です。
JavaScriptからHTMLへ値を受け渡すときのように、
CGIからHTMLへ値を受け渡すことは可能なのでしょうか?

CGIの変数の中身をHTMLのテキストボックス内で表示する方法はあるのでしょうか?
アドバイスをいただけるとありがたいです。
601デフォルトの名無しさん:2008/02/13(水) 02:27:38
>>600
Webプログラム板で聞け。

$value = "hogehoge";
print "<input type='text' value='$value'>";
602デフォルトの名無しさん:2008/02/13(水) 03:36:09
>>601さん
ありがとうございます!!
解決しました!!!!!
603デフォルトの名無しさん:2008/02/13(水) 22:52:49
大変、初歩的な質問で申し訳ないのですが、教えてください。

今まであるサーバで使っていたCGIを新しいサーバに移設したいのです。
そこで、新しいサーバの指示通りに設定してみましたが、下記のようなエラーがでます。
何が原因なのでしょうか?・・・

: In string, @jcom now must be written as \@jcom at >form.pl line 27, near "/usr/sbin/sendmail -t -f s-hirono@jcom"
: In string, @mfi now must be written as \@mfi at >form.pl line 437, near "@mfi"
: form.pl had compilation errors.
604デフォルトの名無しさん:2008/02/13(水) 23:08:03
ちゃんと書いてあるじゃん

> In string, @jcom now must be written as \@jcom

って。
605デフォルトの名無しさん:2008/02/13(水) 23:14:17
すんません、素人なんで意味がわからないんですよ・・・
606デフォルトの名無しさん:2008/02/13(水) 23:15:14
¥をどこかに足すって意味ですか???
607デフォルトの名無しさん:2008/02/13(水) 23:41:57
ご丁寧にも自然言語でエラーメッセージだしてくれてるんだから、素人も玄人も関係ないだろ。
608デフォルトの名無しさん:2008/02/14(木) 00:12:02
でも素人の頃は、俺もこんな感じだったな。
「分からない」っていう先入観があるんだよな。
分かってしまえば、「あー、本当にそのまんまじゃん・・」って気付くんだけど。
609デフォルトの名無しさん:2008/02/14(木) 00:17:22
今朝のみのさん:その三角形のやつなんだっけ?
汚点気お姉さん:はい雲がこういう形に見えます
今朝のみのさん:いやその三角形のやつなんだっけ?
汚点気お姉さん:はい矢印ですね。風がこっちから吹いてきます
今朝のみのさん:いやその三角形のやつなんだっけ?
汚点気お姉さん:ああっ! 女神様っ
今朝のみのさん:いやその三角形のやつなんだっけ?
汚点気お姉さん:ああっ! 寒冷前線ですね。毎朝やってんだから分かれよ。
610603:2008/02/14(木) 01:23:04
すんません、\@jcom
って感じでやってみましたが、やはりだめでした。
確かにそのままの文章になってる気はしますが、根本的なところがわからないのでわかりません。
611603:2008/02/14(木) 01:24:52
ちなみに、>>603 で書いたのは、サーバに付いてるCGIチェッカーのエラーメッセージです。
実際にwebから送信してみると、下記のエラーがでます。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
612デフォルトの名無しさん:2008/02/14(木) 01:34:46
>「分からない」っていう先入観があるんだよな。

まさにそのとおり。よく読めば中学生でもわかるやさしい英語でかいてある。

> In string, @jcom now must be written as \@jcom at >form.pl line 27, near "/usr/sbin/sendmail -t -f s-hirono@jcom"
翻訳:27行目の @jcom は \@jcom って書かなきゃダメだよ〜ん

他の残りの行は宿題として取っておく。自分で解けるよね?
613デフォルトの名無しさん:2008/02/14(木) 01:41:44
師曰く 「ルーク、フォースを使え」

コンピュータだから難しい。
perl なんて使ったことが無いからわからない。
そんな先入観を捨てて、中学1年生のあの頃の素直な気持ちに帰ってみろ。
614デフォルトの名無しさん:2008/02/14(木) 03:52:13
お前らスレ違いなのに優しいな

それに対して>>603の丸投げ感は一体…
大体ソースコードも張らずにどうして欲しいんだ?
615603:2008/02/14(木) 22:33:34
返答ありがとうございます。
CGIチェッカーのエラーは解消されました。

ですが、本番のweb上ではやはり>>611のエラーがでます。

>>614
スレ違いですか?それは失礼。
他に適当なスレが見つからなかったものですから。。。
他に良いスレがあるようなら教えてください。
616デフォルトの名無しさん:2008/02/14(木) 23:03:41
web上のエラーはweb制作板に言え
617デフォルトの名無しさん:2008/02/14(木) 23:05:01
スレ違い厨は気にせんでもいいよ。

でもな、>>611 は、書いてることを読め、としか言いようが無い。
英語が読めないんだったら、読める人に頼んで訳してもらうとか、何か自分で考えろや。
この先一生つきまとう問題だぞ。
618603:2008/02/15(金) 00:21:54
web制作に行っても適当なのがなさそうでした・・・
ソースはってもいいすか?

>>611を読んでも、結局わからないのですが・・・ 管理者に聞けみたいな話ですよね?
619デフォルトの名無しさん:2008/02/15(金) 01:14:11
620デフォルトの名無しさん:2008/02/16(土) 23:45:29
スレ違いの懸念濃厚ですが…
windows上で *.pl を実行する場合(一般的かどうかわかりませんが私の環境では)、
ウィンドウが開かず全画面で一瞬真っ黒になります。
これを避けるため、batに記述して起動しています。
しかし中には引数の受け渡しの関係からこれができない場合が生じました。
batを使わずにウィンドウ上で起動する方法があればご教示ください。
621デフォルトの名無しさん:2008/02/17(日) 00:11:04
>>620
よくわからんけど、Perl.exeにPIFファイル設定すりゃなんとかなるんじゃね?
622デフォルトの名無しさん:2008/02/17(日) 00:22:25
>>621
レス有難うございます。やってみます。
623デフォルトの名無しさん:2008/02/17(日) 03:07:42
ファイル名のリストから数字の付いていないものをみつけ出し、それらのファイル名に数字の付いたものを出力しようとしました。
期待する出力は

aa
aa86.txt
ww
ww873.txt
q
q12.txt

なのですが実際は

aa
ww
q

となります。どこが悪いのかご教示ください。

ソース:
use utf8;
@f = ("aa.txt","aa86.txt","fff73.txt","ww.txt","ww873.txt","q.txt","q12.txt","mm55.txt",
"gg21.txt",);
@nn = grep(/^\D+$/, @f);
foreach $nn(@nn){
$nn =~ s/\.txt//;
print "$nn\n";
@n = grep(/^$nn\d+$/, @f);
print join("\n", @n);
}
624デフォルトの名無しさん:2008/02/17(日) 03:49:09
>>623
@n = grep(/^$nn\d+\.txt$/, @f);
625デフォルトの名無しさん:2008/02/17(日) 03:58:30
@n = grep(/^$nn\d+$/, @f);
         ↓
@n = grep(/^$nn\d+\.txt$/, @f);

じゃない?^ とか $ の意味がわかってて使ってるのかな?
626623:2008/02/17(日) 14:35:25
>>624
>>625
レス有難うございます。そんなポカだったか…、と思って元ソースでやってみると
問題は違っていました。
ここに書き込むためにいろいろ端折っているうちに余計なところまで削ったようです。
その所為で同じような出力になりそれを書き込んでしまった次第です。
そこで元ソースをそのまま書き込もうとしましたが、長すぎてできません。
627623:2008/02/17(日) 14:36:27
元ソースです。
use utf8;
use Encode;
$movepath = encode('sjis', "パソコン\\番号なし");
chdir "E:\\My Documents";
chdir $movepath;
@files = glob("*.txt");
@nonumfiles = grep(/^\D+$/, @files);
print join("\n",@nonumfiles),"\n-----------------------\n";
foreach $nonumfile(@nonumfiles){
$nonumfile =~ s/\.txt//;
print $nonumfile,
"\n=======================\n";
@numfiles = grep(/^$nonumfile\d+\.txt$/, @files);
foreach(@numfiles){
print $_, "\n";
}
print "\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
}
628623:2008/02/17(日) 14:37:33
で、該当ディレクトリには
---------------------------------
"お助けパソコントラブル救急隊.txt",
"お助けパソコントラブル救急隊886.txt",
"お助けパソコントラブル救急隊887.txt",
"お助けパソコントラブル救急隊888.txt",
"なっとく!ワード773.txt",
"なっとく!ワード774.txt",
"なっとく!ワード775.txt",
"なっとく!ウインドウズXP.txt",
"なっとく!ウインドウズXP873.txt",
"なっとく!ウインドウズXP874.txt",
"なっとく!ウインドウズXP875.txt",
"なっとく!ウインドウズXP876.txt",
"なっとく!エクセル836.txt",
"なっとく!エクセル837.txt",
"なっとく!エクセル838.txt",
"なっとく!エクセル839.txt",
"なっとく!パソコン用語.txt",
"なっとく!パソコン用語1265.txt",
"なっとく!パソコン用語1266.txt",
"なっとく!パソコン用語1267.txt",
"なっとく!パソコン用語1268.txt",
"WindowsXPの便利技と裏技855.txt",
"WindowsXPの便利技と裏技856.txt",
"WindowsXPの便利技と裏技857.txt",
"WindowsXPの便利技と裏技858.txt",
"グーグルの便利技と裏技212.txt",
"グーグルの便利技と裏技213.txt",
"グーグルの便利技と裏技214.txt",
629623:2008/02/17(日) 14:40:35
上のようなファイル群があり、
これをスクリプト内におけば問題は起きません。
ところが実際にディレクトリを読んで動かすと

お助けパソコントラブル救急隊.txt
なっとく!ウインドウズXP.txt
なっとく!パソコン用語.txt
-----------------------
お助けパソコントラブル救急隊
=======================

~~~~~~~~~~~~~~~~~~~~~~~~~~
なっとく!ウインドウズXP
=======================
なっとく!ウインドウズXP873.txt
なっとく!ウインドウズXP874.txt
なっとく!ウインドウズXP875.txt
なっとく!ウインドウズXP876.txt

~~~~~~~~~~~~~~~~~~~~~~~~~~
なっとく!パソコン用語
=======================

~~~~~~~~~~~~~~~~~~~~~~~~~~
となってしまいます。
630623:2008/02/17(日) 14:43:38
以上、長々と御見苦しい限りですが何とかなりませんでしょうか。
よろしくお願いいたします。
631デフォルトの名無しさん:2008/02/17(日) 16:38:44
>>627
(´-`).oO(「 use utf8; 」してるわりに、ファイル名の文字コードはsjisなのはなんでだろう・・・。)
(´-`).oO(とりあえず、Linuxでファイル名もUTF-8で動かしたら動いたっぽいが・・・。)
632デフォルトの名無しさん:2008/02/17(日) 22:21:32
>これをスクリプト内におけば問題は起きません。
>ところが実際にディレクトリを読んで動かすと

ここがポイントだな。
perl スクリプトは utf8 で動いてる。
Windows は ShiftJIS で動いている。
文字コードを変換してやらないとダメね。
さぁ、perl の utf8 地獄でもがき苦しみましょう。
633デフォルトの名無しさん:2008/02/23(土) 19:56:15
 アクセスログの勉強しててわからないとこがあります。
配列の一要素にオートインクリメントがついてて
++$freq[$hour]; と書いてあるのですが、実際どこの部分に1がたされてるんですか

aとbの解釈どっちが正しい?

a、$hour に1足されてループする
→$freq[0]、$freq[1]、$freq[3]、$freq[4]、$freq[5] みたいのができる

b、$freq[$hour] という値自体に1足されてループする

 一応、全体の書いとくとこんな感じです。
ちなみに$freq[ ]という配列はこのwhile文できゅうに出てきてます

while($ln = <FILE>)
{
($hour , $min , $host , $refer , $agent) = split( /\t/ , $ln);
++$freq[$hour];
}
634633:2008/02/23(土) 20:06:07
すません
自己解決しました
635デフォルトの名無しさん:2008/02/23(土) 20:09:09
>>633
b
636635:2008/02/23(土) 20:09:48
おそかった
637正志:2008/02/23(土) 21:54:58
CSVファイルで行列を入れ替えてファイルを作るプログラムない?
638デフォルトの名無しさん:2008/02/23(土) 22:26:01
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV_XS;
use List::MoreUtils qw(each_arrayref);

my $csv = Text::CSV_XS->new({binary=>1});
my @list;
while (<>) {
    next unless $csv->parse($_);
    push @list, [$csv->fields];
}
my $ea = each_arrayref(@list);
while (my @l = $ea->()) {
    $csv->combine(@l);
    print $csv->string . "\n";
}
639正志:2008/02/23(土) 23:20:56
>>638
なんかすごいものをありがとうございます。
Windowsの場合はどうしたらいいでしょう
640デフォルトの名無しさん:2008/02/23(土) 23:23:10
OS関係ないだろ
641デフォルトの名無しさん:2008/02/24(日) 15:25:58
Windows 環境は大変だ。普通の奴は C コンパイラも nmake も持ってるわけがないし
よしんば持っていても、perl Makefile.PL が吐き出す Makefile は不都合が多すぎる。
(MinGW 派はいつも疎外感にさいなまれ、泣いている)
その上 XP 以降だと、こんな状況らしい:
 ttp://harapeko.asablo.jp/blog/2006/12/21/1041020

幾多の困難を乗り越えて、ようやく Windows でも新しいモジュールを試すことが出来るのだ! ( 完 )

# でも Text::CSV_XS は新しくはないだろって?
# いいや、少なくとも去年の 6 月以前の ActivePerl には入っていないのだ orz
642正志:2008/02/24(日) 21:55:15
困ったなあ。 なあ640。
643デフォルトの名無しさん:2008/02/25(月) 11:52:51
だったらText::CSV_PPとかでよくね?
644デフォルトの名無しさん:2008/03/15(土) 01:10:04
@Dataという配列にハッシュを入れてキーはA、Bがあります、そのおのおのの値をFA1、FB1する
@Dataという配列は100個のハッシュを持ってるとします。
$Data[1]{"A"} = FA1
$Data[1]{"B"} = FB1
...
$Data[100]{"A"} = FA100
$Data[100]{"B"} = FB100

FB1〜FB100でソートし標準出力に出力したいのですが、どうすればいいか教えて下さい
645デフォルトの名無しさん:2008/03/15(土) 01:14:44
print sort {$a->{'A'} <=> $b->{'B'}} @Data;
646デフォルトの名無しさん:2008/03/15(土) 17:34:40
inlineC使おうと思ってるんだけど
LinuxではinlineCが動作するんだけど
activeperlだとVCでコンパイルしてるとあったから
VCのコンパイラ持ってきてコンパイルしてるんだけど
inlineがmakeでエラー吐く・・・
コンパイラがactiveperlと非同期のせいだと思うんだけど
どうすればいいのかな???
647デフォルトの名無しさん:2008/03/15(土) 17:37:29
ちなみにVCはexpressバージョンです。
648デフォルトの名無しさん:2008/03/18(火) 02:41:07
Pod::Textで日本語(utf8)のテキストを出力しているんだけど、
width指定が真っ当に動いてくれないのな。
まぁ1文字の幅がASCII文字と違うから当然なんだけども。
なにか簡単な解決策とかある?
649648:2008/03/18(火) 05:10:25
とりあえずやっつけてみた。
Pod/Text.pmをローカルに持ってきてuse lib。以下のように修正。
もっといい方法があれば教えてエロい人。
sub wrap {
my $self = shift;
local $_ = shift;
my $output = '';
my $spaces = ' ' x $$self{MARGIN};
my $width = $$self{width} - $$self{MARGIN};
my @chars = grep(/[^\n]/, split(//));
my $len = 0;
my $tmp = '';
while (@chars) {
my $c = shift(@chars);
$tmp .= $c;
if ($c gt chr(0xff)) { $len += 2; } else { $len++; }
if ($len+1 > $width) {
if ($chars[0] =~ /[。、]/) {
$tmp .= shift(@chars);
}
$output .= $spaces . $tmp . "\n";
$tmp = '';
$len = 0;
}
}
if ($tmp) {
$output .= $spaces . $tmp;
}
$output =~ s/\s+$/\n\n/;
$output;
}
650デフォルトの名無しさん:2008/03/18(火) 10:59:30
ちゃんと検証してないので的外れかもしれないけど。

・ファイルを直接編集せずに、Pod::Text::wrap(でいいのか?未確認)を上書きしたほうが楽かと
・「0xffより上」は不正確(不正確でもいいならいいけど)
・Jcodeのjfold()を使うのも手かも(あれも正確じゃないけど)

 そういや昔、ちゃんと禁則処理して桁折りするモジュール探したけどなかったんだよな……。
 いまもないのかな?
651648:2008/03/18(火) 22:56:30
>>650

「0xffより上」に関しては不正確でも構わないのでこのままでいきます。
いわゆる半角カナとか使わなければ問題にはならなさそうですし。


>・ファイルを直接編集せずに、Pod::Text::wrap(でいいのか?未確認)を上書きしたほうが楽かと

やってみました。
これは楽でいいですね。ありがd!!

sub _Pod_Text_wrap { ... }

undef *Pod::Text::wrap;
*Pod::Text::wrap = \&_Pod_Text_wrap;

関数のオーバーライドは初めてやったのですけど、
こんな感じでいいのかな? いちおう動いてますが。

652デフォルトの名無しさん:2008/03/21(金) 11:10:42
それでいいんじゃない?
僕は
*Pod::Text::wrap = sub {
...
};
とかやっちゃいますが。
 元のを残すなら上書きする前に
my $org_wrap = Pod::Text->can('wrap');
とかすれば良かった気がする。
653デフォルトの名無しさん:2008/03/24(月) 00:29:20
こんにちは、そしてみなさんはじめまして。
macOS10.3にperlの5.10をいれて動かしたいんですが
インストールしたはいいもののその後どうしたらよひか
わかりません。どうか詳しい方おしえてください。
654デフォルトの名無しさん:2008/03/24(月) 09:42:37
ターミナルを立ち上げる
655653:2008/03/24(月) 14:35:27
ターミナルを立ち上げました!
656デフォルトの名無しさん:2008/03/24(月) 15:22:28
ターミナルに、
perl -e 'print "Hello Worldn"'
と打ち込んでリターン。
これで君も今日からPerlプログラマー
657653:2008/03/24(月) 16:16:39
ターミナルに
perl -e 'print "Hello Worldn"
と打ち込んでPerlプログラマーになりました!
しかし、perl -V と打ち込んでリターンしても
バージョンは5.8のままです…。
658デフォルトの名無しさん:2008/03/24(月) 20:34:10
そうか…。
659デフォルトの名無しさん:2008/03/24(月) 20:39:05
>>657
新しいperlがある場所をターミナルに教えるための設定変更が必要になる。
これはperlとは関係ないから、Mac板のプログラム関係のスレで聞いた方がいいと思う。
そのとき、どうやってperlをインストールしたかも書いた方がいいよ。
660 ◆TWARamEjuA :2008/03/24(月) 21:25:19
$ uname -a
Darwin **** 9.2.2 Darwin Kernel Version 9.2.2: Tue Mar 4 21:23:43 PST 2008; root:xnu-1228.4.31~1/RELEASE_PPC Power Macintosh
$ whereis perl
/usr/bin/perl
$ perl -v

This is perl, v5.8.8 built for darwin-thread-multi-2level
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

何かの参考になれば。。。
661653:2008/03/24(月) 21:28:04
なんとかできました。5.8から5.10になりました。
656さん、659さん。ありがとございます!
ちなみにperlのバージョンは5.8と5.10ってどう違うんですか?
あと5.10が使えるようになったら5.8は捨ててしまってもよいのですか。

662デフォルトの名無しさん:2008/03/24(月) 21:33:09
>>660
スレ違いだって言われてんだから大人しく引っ込んでろっての。
あっちにゃ「macをUNIXとして使う」スレだの「terminal初心者」スレ
だのあんだろーーがよお。


bash デフォだから
echo 'PATH=/usr/local/bin/:$PATH' >> ~/.bashrc
source ~/.bashrc
perl -v
してみろっての。
お前さんが、/usr/local/bin/ 以外に perl 5.10 入れたんだったら知らん。

つーか何で5.10を入れたんだ?5.86で十分だろ?変なクセつけるだけだぜ?
っての。
663デフォルトの名無しさん:2008/03/24(月) 21:35:47
あ、遅かった。遅れた煽りほどかっこわるいものはない。orz...

>>661
基本的に流儀として/usr/binの中とかからは捨てないよ。
/usr/binの中のものをupdateする時はupdate相手のbackupを取って置くものだし。
664653:2008/03/24(月) 22:10:16
了解しました。とっときます。
665デフォルトの名無しさん:2008/04/03(木) 23:54:44
$file='hoge';
・・・
foreach(sort(keys(%hoge))){
・・・
}
のように %hogeにあたる部分を $file を用いて参照する方法があればご教示ください。
666デフォルトの名無しさん:2008/04/04(金) 00:02:58
eval
667デフォルトの名無しさん:2008/04/04(金) 00:09:53
>>666
有難うございます。
668デフォルトの名無しさん:2008/04/04(金) 03:37:51
chdirで移動した後、元のディレクトリに戻る方法がわかりません。
ご教示ください。
669デフォルトの名無しさん:2008/04/04(金) 04:15:22
ごめんなさい。668です。直前のevalの{ }のあとに ; がないために
できなかっただけのようです。
取り消します。

670デフォルトの名無しさん:2008/04/04(金) 23:30:57
@zcap = qw(aa po);
$zra{'def'}='abc';
foreach( @zcap){
eval{
print "(%z$_){'def'}\n";
};
}
を修正して、 abc と出力させる方法を教えてください。
671デフォルトの名無しさん:2008/04/04(金) 23:43:41
スイマセン
$zpo{'def'}='abc';
でした。
672デフォルトの名無しさん:2008/04/05(土) 00:14:37
@zcap = qw(aa po);
$zpo{'def'}='abc';
foreach( @zcap){
eval('print "$z' . $_ . '{'def'}n"' );
}
673デフォルトの名無しさん:2008/04/05(土) 00:42:26
>>672
有難うございます。できました。
674デフォルトの名無しさん:2008/04/06(日) 02:57:02
>>671
イタタタタタタタタタタタタタタタタタタタタタタ
675デフォルトの名無しさん:2008/04/11(金) 23:23:16
@cap = qw(aa po);
eval{
foreach(@cap){
push(@acap, '\@a$_');
}
};
foreach (@acap){
$$_[0] = 6;
}
print $aaa[0], $apo[0];
で 66 を出力したいのですが修正をお願いします。
676デフォルトの名無しさん:2008/04/11(金) 23:28:14
またおまえか
677デフォルトの名無しさん:2008/04/12(土) 01:01:39
cgiに送ったデーターはどこに格納されるんですか?
678デフォルトの名無しさん:2008/04/12(土) 01:28:30
679デフォルトの名無しさん:2008/04/12(土) 01:41:38
おちんちんにperlを埋め込みたいんですが、腕のいいクリニックをご存知ありませんか?
680デフォルトの名無しさん:2008/04/12(土) 01:52:23
>>676
また、"おまえ"です。
よろしくお取り計らいください。
681デフォルトの名無しさん:2008/04/12(土) 11:15:18
>>675
シンボリックリンク相当の処理をevalで無理矢理やりたいのですね。
しかも全部グローバル変数で。
そんなことをしなければならない理由がわからない…いまやリファレンスを使えば
同等のことができますよ。

@aaaと@apoを、
my %array = ( aaa => [], apo => []);
として、
my @acap;
foreach (keys %array){
push(@acap, $array{$_});
}
foreach (@acap){
$_->[0] = 6;
}
print $array{aaa}[0], $array{apo}[0];
ではだめなの?
もっともこのコード自体なにしたいかわからんけど。
682デフォルトの名無しさん:2008/04/12(土) 21:47:50
>>681
ご指導有難うございます。
理解できない部分が大半なので、じっくり検討します。
なにせ古い解説書しか持たないもので…。
新しいのが欲しいが高いもので。
683”おまえ”:2008/04/13(日) 00:23:33
>>681
「シンボリックリンク」というのがまず分からなかったのですが、UNIXの
概念で、エイリアスかショートカットのようなものですね。
グローバルにしているのはローカルである必要がないことと、my の理解ができていない
ためかサブルーチンにいちいち argumentを渡すのが面倒なことが理由です。
aaa=> [] の記法は知らなくて、無名の配列のアドレスを aaa というポインタで参照できる
というふうに理解しました。
eval を使ったのは次の理由です。
@cap = qw(aa po); は実は aa とpo の間に50ほどの2文字があり、このセットをもう一組
必要とします。それらの2文字で参照できる配列群の配列を設定しようとしました。
静的な配列なので、あらかじめポインタの配列を準備すればよいのでわざわざ push で
押し込む必要はないのですが、2セットを楽に準備できればと思い eval を使いました。
その結果他の手段の知識がないために、あのような妙で馬鹿馬鹿しいコードとなった
わけです。
教えてくださいましたコードを必要な部分だけにしたところ、
%acap = ( aa => [], po => []);
foreach (keys %acap){
$acap{$_}[0] = 6;
}
$acap{po}[12]=777;
print $acap{aa}[0], $acap{po}[0], $acap{po}[12];
となりまして、期待通り動作しました。最後の2行は配列が確かにできていることの
検証のつもりです。
で、%acap = ( aa => [], po => []) という記法が使えると、
%tcap = ( aa => [], po => []) としてコピー&ペーストすれば簡単に当初の目的が
達成できることになり、ややこしい eval は必要なくなりました。
皆様にはお目ざわりだったようですが、今回はこれで恙無く解決しました。
有難うございました。
684681:2008/04/13(日) 02:03:04
>>683
シンボリックリファレンスの間違いですorz

50個も要素があるなら、
%acap = ( aa => [], po => []);

%acap = map { $_=> [] } qw(aa po);
と書いた方が視認性が上がります。
# もっともこの初期化はなくても動きますが
685”おまえ”:2008/04/13(日) 02:20:13
>>684
またまた便利そうなものを有難うございます。
これから勉強してみます。
686デフォルトの名無しさん:2008/04/13(日) 23:51:26
このindex.cgiがエラーがでるんですが修正できますか?(属性755)
http://www.borujoa.org/upload/source/upload18138.zip
687デフォルトの名無しさん:2008/04/13(日) 23:52:28
>>686
板違い
webprog池
688デフォルトの名無しさん:2008/04/16(水) 15:19:15
はじめまして。
昨日からPerlを勉強し始めました。
今変数を勉強しています。そこで、

$a=2;
$b=3;

$a=$b;

という、変数の代入を見て不思議に思ったのですが、
なぜ、せっかく変数aで2を指定してあげたのに、
後からわざわざ変数bに代入などするのでしょうか。
この記述は、主にどういちた場合に使用されるのですか?

どうかご回答よろしくお願いします。
689デフォルトの名無しさん:2008/04/16(水) 16:27:31
ただの書き方の例だろ
690デフォルトの名無しさん:2008/04/16(水) 17:13:12
まだ「へんすう」の説明段階なんだから、こんなこともできますよぐらいの
意図で書かれてるんでしょ。

$a=2;
$b=3;

# $a の初期値 2 を使いつつ $b に対して血で血を争うような壮絶な演算処理

$a=$b;

# 再び $b は地獄のような処理をくぐり抜けて

$a=$a+$b;

なんてことがあってもいいじゃない。
参考にしてる本が変数名に $a と $b 使ってるのなら、そっちが気になる。
691688:2008/04/16(水) 19:41:12
>>689ー690
なるほど、わかりました!
どうもありがとうございます。

参考にしている本は「Perlの絵本」です。
初心者にもわかりやすいと聞いたので。
692デフォルトの名無しさん:2008/04/16(水) 20:16:40
絵本は・・・
693デフォルトの名無しさん:2008/04/16(水) 20:55:25
ダメなん?
694690:2008/04/16(水) 22:45:31
スレ見たら「血で血を争う」とか書いてる人がいたので指摘しようかと思ったら
自分だったorz

絵本は初心者さんに人気みたいだけど、さて。
695デフォルトの名無しさん:2008/04/17(木) 09:06:18
俺も絵本使ってる。
よくないなら他の書籍買うから、参考にダメな理由を教えてくれ。
696デフォルトの名無しさん:2008/04/17(木) 10:59:31
$aと$bは特殊な変数なんで使わないほうがいいよ。
697デフォルトの名無しさん:2008/04/17(木) 12:22:15
絵本は確認取れんので $a, $b の所だけ注意喚起させてくれ。
(絵本に例として $a, $b が使用されていた場合)

「$a, $b は共に定義済みの変数。」
sort { $a <=> $b } @hoge ;
なんかの時に使う。なので特に必要が無い限りは sort 以外で使わない方が良い。
熟練者が分った上で使う分には文句は言わないし、2ch で例として出して来ても
あまり気にしないが、これを初心者向けに安易に使用するのは疑問符が付く。
ただ、もっと大きな地雷を幾つも抱えてる初心者本はあるので、この一点のみで、
読んでもいない「絵本」を評価は出来ない。スマン。


参考
1. perl の定義済み変数
perldoc の perlvar ( 但し、5.8 以降。バージョンに注意。)
ググるかコマンドラインで perldoc perlvar

2. 熟練者の $a,$b 使用例
ttp://search.cpan.org/src/GBARR/Scalar-List-Utils-1.19/lib/List/Util.pm
ふんだんに使われている。perl 標準添付モジュール。

3. 大きな地雷の例
「一週間でマスターするPerl for Macintosh」
OSX が一般化しようとしている時代(2002/07)に、classic 環境の
MacPerl にて perl を解説。もちろん、OSX へのインストール等、事細か。
OS9 の人も相手にしたかった事情があるのかもしらんが…。

っと長々と書いて投げようと思ったら、696氏が既に指摘してた。ま、いいか。
698デフォルトの名無しさん:2008/04/20(日) 20:43:36
perlでクライアントの2chブラウザ作ったけど見たい人いますか?
4時間ほどで作りました
699デフォルトの名無しさん:2008/04/20(日) 20:44:14
板違い
700デフォルトの名無しさん:2008/04/21(月) 02:17:43
配列へのアクセス確認の目的で、
@acap = map { $_=> [] } qw(aa po);
foreach (@acap){
for($i=0;$i<7;$i++){
$$_[$i] = $i+11;
}
}
foreach $acap(@acap){
$j++;
foreach $cap($acap){
print '$j=', "$j\t$cap\n";
print join("\t",@$cap), "\n";
}
print "\n";
}
としました。
目論見では aa, po の2組だけが出力される筈でしたが
余計な(?)もう一組が出力され、この理由がわかりません。
ご教示いただければ幸です。
701デフォルトの名無しさん:2008/04/21(月) 02:19:57
>>700
もう一組でなく、二組でした。
702デフォルトの名無しさん:2008/04/21(月) 02:24:52
>>700
なんでデバッグしないの?
703デフォルトの名無しさん:2008/04/21(月) 02:31:41
>>702
有難うございます、そういう手がありましたか。
704デフォルトの名無しさん:2008/04/21(月) 08:45:32
>>700
> 余計な(?)もう一組が出力され、この理由がわかりません。
それは、あなたがそうなるようにコードを書いているからなのですが…。

普段からuse strictをしてコードを書くようにすると幸せになれます。
で、変なところは、1行目で@acapで受けているところ、それから、
2回目のforeachの内側のforeach $cap($acap){ の$acapです。
何をしているのか、1ステップずつ意味を確認して組んでみてください。
705デフォルトの名無しさん:2008/04/21(月) 14:57:06
>>704
丁寧なご指導有難うございます。
1行目が致命的であったことがわかりました。
map の意味がわかっていないことに加えて、
ハッシュのレファレンス表現になじみがないことが
絡まりあって=>がmapに必要なものだと思ったことが
原因だと思います。
2番目のご指摘がまだ理解できません。もうすこし検討します。
sed からの亡命者である所為かuse strictを適用すると
コンパイルエラーの嵐で、使い物になりません。
折角のご助言ですが当分はこれなしでやってみようと思います。
修正分:
@acap = map { \@$_} qw(aa po);
foreach (@acap){
for($i=0;$i<7;$i++){
$$_[$i] = $i+11;
}
}
foreach $acap(@acap){
$j++;
foreach $cap($acap){
print '$j=', "$j\t$cap\n";
print join("\t",@$cap), "\n";
}
print "\n";
}
706デフォルトの名無しさん:2008/04/21(月) 16:07:37
>>705
# 厳しいようですが、use strictを指定して使い物にならないコードは、
# すでに使い物になっていない気が…。そのようなコードはいざ動かない
# ときどこに問題があるのかを探すのが猛烈に大変ですよ。

@acap = map { \@$_} qw(aa po);
はなにをしたくてこのようなことをしているのですか? これは、結局
@acap = ([], []);
としているのと同じです。
それと、後半でfor文が2重になっていますが、内側の foreach $cap($acap){ は
ループにする意味がありません。要素が$acap一つだけなら、$cap = $acapと同じですから、
foreach $acap(@acap){
    $j++;
    print '$j=', "$j\t$acap\n";
    print join("\t",@$acap), "\n";
    print "\n";
}
で済みます。

まずは、何をしたいかを日本語で整理してみてはいかがですか。
日本語で書いて伝わらなければ、コードを書くことはできません。
707デフォルトの名無しさん:2008/04/21(月) 16:51:51
ようするに、デバッグしてないって事だな。
708サイタマン ◆mYN3wsz7vE :2008/04/21(月) 17:24:09
読みにくいコードがちょっとね。
何やってるか分からないコード各習慣付けるのは良くないですよ。
709デフォルトの名無しさん:2008/04/21(月) 17:35:27
>>707
違う。この質問者は2chをデバッガと思ってる。

だから次には
「何故か出力が「$j=1 ARRAY(0x800ea0)」みたくなるのですが」
って質問が来る。
710デフォルトの名無しさん:2008/04/21(月) 17:39:01
>>708
サイタマンもようやくプログラム板に常駐するようになったか。
自信がついたのかな?w
711デフォルトの名無しさん:2008/04/25(金) 21:10:12
Fedoraを使っていると、モジュールインストールの方法には
cpam、cpanp、yumの3種が考えられますが、
これらを混在させて使った(同じシステムで複数の方法を使った)ときに
起こりうる弊害にはどんなものがあるでしょうか?
712デフォルトの名無しさん:2008/04/25(金) 21:33:26
Sfido = new Camel "Amelia";

この構文&newという動詞を起動するらしいのですが、構文に&をつける
必要はないのでしょうか?

Sfido = &new Camel "Amelia";というふうに
713デフォルトの名無しさん:2008/04/25(金) 21:37:28
>>712
PerlのOOP記法では&を付けなくてOK
714デフォルトの名無しさん:2008/04/25(金) 21:43:20
>>713つけてもつけなくてもOKってことですか?
715デフォルトの名無しさん:2008/04/25(金) 21:47:43
perl初心者でやる気あるんだけどラクダ本難しすぎて
3日かかって16ページしか進まない、俺むいてないのか・・w
716デフォルトの名無しさん:2008/04/25(金) 21:54:01
>>714
付けちゃいけない。
というか今まで付けたことなんてなかったから試してみたらエラーになった。
書き方覚えたら実験してみるといいよ
717デフォルトの名無しさん:2008/04/25(金) 21:56:04
>>715
ラクダ本は初心者には難しいからそれくらい普通
実際の例見ながら勉強した方がいいと思う
718デフォルトの名無しさん:2008/04/25(金) 22:00:24
ありがとう、でもなんとか1年くらいでマスターしたい
と焦っておる
719デフォルトの名無しさん:2008/04/25(金) 22:08:05
>>715
向いてない
720デフォルトの名無しさん:2008/04/25(金) 22:19:08
何か事情があるならともかく、そうでなければ焦らずに
ゆっくりじっくりやるほうがいいよ。

何を以って「マスターした」になるのかはわかんないけど
リャマ本を先に経由したほうがラクダ本が読みやすくなるんじゃないかな?
721デフォルトの名無しさん:2008/04/25(金) 22:23:05
>>720無理して5000円もだして買ったのに、どっかにラクダ本
がいいって書いてあったから、明日りゃまかってくるぜ
722デフォルトの名無しさん:2008/04/25(金) 22:42:25
>>718
1年もかかるのなら向いてないってことだ。
723デフォルトの名無しさん:2008/04/25(金) 22:54:33
じゃあ半年
724デフォルトの名無しさん:2008/04/25(金) 23:02:34
ラクダ本は、面白くて面白くて読むのが止まらない本だと思うのだが。
725デフォルトの名無しさん:2008/04/25(金) 23:38:42
>>724はむいている人。

むいていない人もがんばって!

726デフォルトの名無しさん:2008/04/26(土) 14:40:49
結構勉強して、Perlの本質が見えてくると>>724みたいになれるんじゃないか?
俺はPerl初めてから4年くらい経ってラクダ本のおもしろさに気づいたクチなんだが。
727デフォルトの名無しさん:2008/04/26(土) 19:07:59
先日むいてないのかなぁっていったもんだけど
別にラクダ本楽しくないとはいってない
専門用語がおおくてわかりにくいっていっただけ
ここはひねくれたプログラマーが少数だけどいるみたいだな
まぁプログラムはひねくれてたほうがいいのかな
解読しやすいしな、perl使える人らしいけど実際すごいのは
perl作った人だから勘違いすんなよwwwwwww
728デフォルトの名無しさん:2008/04/26(土) 19:16:56
perlはひねくれたプログラマ向けの言語。
文法からしてひねくれてる。
729デフォルトの名無しさん:2008/04/26(土) 19:25:43
昔さ、マンハッタンのエリートのデスクにはPerlのパッケージが必ずあった
っていう話があって、エリートになるにはオープンソースを使いこなさなくては
ならないって言われてた。
よくよく考えたら、本当にあったのはエクセルのパッケージなんだよね。
だからどうしたって言われればそれまでだけど、ちょっと考えさせられない?
730デフォルトの名無しさん:2008/04/26(土) 21:06:43
perlをパッケージで買ってデスクに飾るってのも変な趣味だよね。
731デフォルトの名無しさん:2008/04/26(土) 21:14:09
>>728おまえperlなんてなんもしらないのに、なんでこのスレにいんの?
732デフォルトの名無しさん:2008/04/27(日) 01:07:06
>>729
> 昔さ、マンハッタンのエリートのデスクにはPerlのパッケージが必ずあった
> っていう話があって、

ね〜よ
733デフォルトの名無しさん:2008/04/27(日) 01:15:17
>>730
それらしいパッケージを作るところからはじめないと。
734デフォルトの名無しさん:2008/04/27(日) 05:58:26
> 専門用語がおおくてわかりにくいっていっただけ

とか言っている不誠実な「向いていない人」がいますが、ラクダ本は専門用語は
決して多くないし、わかりにくくもありません。知的刺激に満ちた面白い本です。

初心者の人は、「向いていない人」の自己正当化のゴマカシに騙されて
敬遠しちゃったりしないで、ぜひ読んでみてくださいね。
735デフォルトの名無しさん:2008/04/27(日) 06:56:18
>>734みたいな嘘書いて勧めちゃう子ってどこの国にもいるんだよね。
736デフォルトの名無しさん:2008/04/27(日) 07:09:55
>>734
そういうこと書くと、頭悪すぎてラクダ本に挫折した連中が荒しに来る。
737デフォルトの名無しさん:2008/04/27(日) 09:57:27
>>431
#!/usr/bin/perl

$camels='123';
print $camels+1,"\n";

これ1行目なんでシングルクォートなん?
2行目に続くから?要するに2行目が結果だから?

738デフォルトの名無しさん:2008/04/27(日) 09:59:38
printのあとにダブルクォートがないのはcamelsが数値として
認識されているからだよね?
739デフォルトの名無しさん:2008/04/27(日) 10:44:00
>>737
また入門書の例か?

文字列として定義した変数が、+演算子で使われると数値に置き換えられる、
って例じゃないの?
740デフォルトの名無しさん:2008/04/27(日) 10:54:27
>>739なんで文字列として定義ってわかったん?おまえ天才じゃね?
これ別に$camels=123;でいいんでないの?なぜシングルで囲む?
741デフォルトの名無しさん:2008/04/27(日) 10:56:26
日本語でお願い
742デフォルトの名無しさん:2008/04/27(日) 11:05:50
>>740すいません、$camelsはデフォが文字列?
だから$camels=123;ここまでの構文ならこの表示でいいのだけど
2行目のprint $camels+1,"\n"; の最後の構文かんでるから

$camels='123';ってこと?シングルは変数展開なしですもんね?
743739:2008/04/27(日) 11:13:19
>>740
> これ別に$camels=123;でいいんでないの?なぜシングルで囲む?

普通はそれでいいよ。
しかし、この質問のネタが何かの入門書じゃないの?と俺のエスパー能力が反応したんだよ。
入門書だから、そういう非現実だけどわかりやすい例を書いてあるんじゃないの?と。
744デフォルトの名無しさん:2008/04/27(日) 11:17:28
>>743ありがとう先生、ようやく理解できました
745デフォルトの名無しさん:2008/04/27(日) 22:32:43
そのケースは良いんだが、
$foo = 0123 ; と
$foo = '0123' ; とじゃ
print $foo +1;
した時に答えが変わる事くらいは覚えとこう。
746デフォルトの名無しさん:2008/04/28(月) 00:50:27
その例を出す前に

print 0123;

ぐらい見ておいてもらわないと、いろいろ混乱するんじゃないかな。
まだ10進数しか出て来てないだろうし。
747デフォルトの名無しさん:2008/04/28(月) 02:36:11
アート引越しセンター
って表示された。
748デフォルトの名無しさん:2008/04/28(月) 21:37:06
楽をしようとすると新たなコストが発生するものだというお告げだな。
749デフォルトの名無しさん:2008/04/29(火) 12:38:04
perl自動で変数設定してくれるのあって
使えるようになったんだが、これテキストエディタに書き込んで
perlのなかのbinにテキスト保存してdosで呼んで機能させるんだよね?
750デフォルトの名無しさん:2008/04/29(火) 12:50:31
できたソーリー
751デフォルトの名無しさん:2008/04/30(水) 00:23:05
@unko = split /<table[^>]*>/,$html;
ってやると、<tableタグが消えちゃいます。
消えない方法はありますか?
あとから join で元にもどせないと困るんです。
752デフォルトの名無しさん:2008/04/30(水) 00:54:41
@unko = split /(?=<table[^>]*>)/,$html;
753デフォルトの名無しさん:2008/04/30(水) 21:42:16
>>752
ありがとう。30分かかって、やっと理屈がわかりました。
754デフォルトの名無しさん:2008/05/12(月) 03:36:30
windowsが問題なく処理しているsjisの扱いをperlも見習って欲しい。
755デフォルトの名無しさん:2008/05/12(月) 10:46:53
基本的には問題ないと思うけど、どの辺に問題があると思ってるの?

#ファイル周りがダメなのは知ってるけど、他にもある?
756デフォルトの名無しさん:2008/05/13(火) 03:19:25
PerlはUNIX産まれだからな
あんなダメOSを見習う必要は無い
EUC、及び今後はUTF8だけ使えれば充分
757デフォルトの名無しさん:2008/05/13(火) 12:52:48
UNICODE対応してないOSは、いずれ廃れるな。
UTF8で誤魔化そうとしても、ほんのちょっとの時間稼ぎにしかならない。
758デフォルトの名無しさん:2008/05/13(火) 18:39:05
>>757
UNICODE対応してるOSって、どんな状態のOSの事だ?
UTF-32ベースで動いてるOSの事か?

ってか藻前UTF-8、UTF-16、UTF-32の違い分かってないだろ?
759デフォルトの名無しさん:2008/05/13(火) 19:40:54
>>758
あなた、もしかして
20世紀からタイムトラベルしてきたんですか?
760デフォルトの名無しさん:2008/05/26(月) 19:47:30
Perl6::Say がなんか変です
package Klass;
sub new { bless {} }

sub foo { 1 }

package main;
# use feature qw/say/; # これだと大丈夫
use Perl6::Say; # こうしたときに

print Klass->new->foo, "¥n"; # うごく
say STDOUT Klass->new->foo; # うごく
$k = Klass->new;
say $k->foo; # うごく

# なんかこれだけ
# Can't locate object method "say" via package "Klass" at ...
# で死ぬ
say Klass->new->foo;
別にもう Perl6::Say なんて使わなくてもいいのは知ってるけどなんか気持ち悪いです
Perl6/Say.pm ものぞいてみましたがよくわかりません
なにこれー?
761デフォルトの名無しさん:2008/05/26(月) 23:29:33
>>760
・Klass->new->foo;
・new Klass->foo;
これが等価なように、

・say Klass->new->foo;
・(Klass->say)->new->foo;
これも等価。
762デフォルトの名無しさん:2008/05/27(火) 05:47:10
>>761
d
>・say Klass->new->foo;
>・(Klass->say)->new->foo;
>これも等価。

うはwwwww
Perl こえーwww

763デフォルトの名無しさん:2008/05/31(土) 08:21:53
キーワードで検索しにくいので教えてください
以下の2つはどういった意味なのでしょうか
[@array]
@{$array[1]}
764デフォルトの名無しさん:2008/05/31(土) 13:18:38
@array展開して無名配列リファレンスを作ってる?
$array[1]におそらく配列リファレンスがはいっていてデリファレンスしてる。
765デフォルトの名無しさん:2008/05/31(土) 14:04:49
ありがとうございます!
「無名リファレンス」←このキーワード検索で理解できました
766デフォルトの名無しさん:2008/06/02(月) 08:08:29
ttp://www.perlmeme.org/howtos/using_perl/dereferencing.html
ここの一番下のサンプルの関数sub write_to_file($$) { .. }についてくる$$って何でしょうか
もしかして明示的に引数の数を指定している?
767デフォルトの名無しさん:2008/06/02(月) 12:06:10
>>766
「プロトタイプ」
768デフォルトの名無しさん:2008/06/02(月) 13:01:15
コンパクトかつ適切なアドバイスありがとう。
こういう文法、PERLってマルチパラダイムだよなーって感じます。
769デフォルトの名無しさん:2008/06/15(日) 01:19:00
$ perldoc perlcheat
すると DON'T ってとこに

> DON’T
> "$foo"
> $$variable_name
> ‘$userinput‘
> /$userinput/

ってあるんですが、最後を除いて意味がよくわかりません(3番目はシェルコマンドで実行するなってこと?)
特に1番目と2番目は何で代替しろってことなんでしょう?
770デフォルトの名無しさん:2008/06/15(日) 01:41:23
"$foo" # 変数展開されるから気をつけろ
$$variable_name # シンボリックリファレンス氏ね
`$userinput` # 汚い文字列をシェルに渡すな
/$userinput/ # 汚い文字列を正規表現に突っ込むな
771デフォルトの名無しさん:2008/06/15(日) 02:28:35
>>770
d。だいたい理解。
2番目は ttp://kabocha.org/jelfe/07/22.html ですね。

$ perl -e "($hoge,$sl)=('foo','hoge');print qq($sl\n$$sl)"
hoge
foo

知らなかった・・・これは危ない。
772デフォルトの名無しさん:2008/07/20(日) 10:45:52
>>771
use warning;
use strict;
773Perl中級者になりたい:2008/07/23(水) 15:49:05
Perlで初めてWebプログラミングを作りました。
URLを入力するとリンク切れをチェックしてくれるツールです。

http://w7.oroti.com/~webhacks/

ソースコードを公開しますので、厳しいご意見お待ちしてます(汗
774デフォルトの名無しさん:2008/07/23(水) 16:54:33
ロゴがかっこいいとおもいます(汁
775デフォルトの名無しさん:2008/07/23(水) 17:06:30
776デフォルトの名無しさん:2008/07/23(水) 17:09:05
>>773
webprog池
777デフォルトの名無しさん:2008/07/23(水) 17:23:38
x print "Content-type: text/html\n";
o print $cgi->header();
778デフォルトの名無しさん:2008/07/23(水) 17:35:45
x my %http_code = ...;
o use HTTP::Status qw/status_message/;

x 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'
o 'LinkHACKS (+http://w7.oroti.com/~webhacks/)'

x $browser->get(...);
o $browser->head(...);
779デフォルトの名無しさん:2008/07/23(水) 17:54:32
>>778
$resp->status_lineで取れるから
>my %http_code = ...;
これはいらないな
780Perl中級者になりたい:2008/07/23(水) 18:22:40
>>775
ahoの嵐・・・orz
受け取ったデータのチェックが必要ですね。。頑張って修正します。

>>776
webprog板逝ってきます。

>>777-779
   /      \
  /  ─    ─\ 
/    (●)  (●) \ 
|       (__人__)    | )) なるほど
/     ∩ノ ⊃   /
(  \ / _ノ |  |
.\ “  /__|  |  
  |\ /___ /|
  |          ノ
  ヽ   y    /
   \ /     /
    /   /
   (___)_)
781デフォルトの名無しさん:2008/08/10(日) 22:27:23
Perl6だとメソッドの呼び出しが矢印(->)じゃなくてドット(.)になるようですが、コードリファレンスの呼び出しに関しても同じなようです。
http://dankogai.typepad.com/blog/2006/03/lamda_calculus_.html

また、RubyでもProcオブジェクトの呼び出しに"proc.()"という書き方が採用されようとしています(もう採用されたかは知りません、試してないので)
http://www.rubyist.net/~matz/20071011.html

ここで思うのですが、なんで"$coderef()"じゃなくて"$coderef.()"のような文法を採用するのでしょうか。

前者のほうが、読みやすい+書きやすいようにおもうのですが。確か、javascript では後者だったような気がします。
782デフォルトの名無しさん:2008/08/11(月) 20:45:52
オトナの事情
783デフォルトの名無しさん:2008/08/11(月) 22:58:24
>>781
現行だと$coderef->() だろ?
. の方がバイト数がかせげる & '->' と言う定義をせずに済む。
何しろ > は => だの <=> だの他にも大活躍だから、、、
784デフォルトの名無しさん:2008/08/12(火) 00:18:26
>>783
それ答えになってなくね?
785デフォルトの名無しさん:2008/08/12(火) 02:01:32
>>781
名前空間とパーザの都合。……Rubyの場合は。
Perlは何故なんだろうねぇ。変数を示すプリフィクスが付いてるんだから問題なさそうな気がするんだが。括弧省略との相性が悪いのかな?
786デフォルトの名無しさん:2008/08/12(火) 02:48:01
$foo.()と$foo()は同じ意味のはず。

例えば、&はP5と違って関数をオブジェクト化したものを返すけど、
これを呼ぶときも、&bar.()と&bar()の両方で書ける。
787781:2008/08/12(火) 09:24:25
>>786をヒントに自分でも調べてみました。
ttp://perlcabal.org/syn/S06.htmlの
"Pointy blocks"のコード例がそれなのかなあ。
あとアンパサンドのプレフィクスでオブジェクト化された関数が返るのは
Wrappingのあたりでしょうか。

P6のシンタックスはおもしろいですね。キュンとなる。
時間が取れたら遊んでみます。
788デフォルトの名無しさん:2008/08/12(火) 19:21:42
>>787
他にも++なんかの接尾演算子でも、$foo.++; と $foo++; の両方で書ける。
これは演算子がオブジェクトのメンバだっていうイメージなんだろうね。
789デフォルトの名無しさん:2008/08/12(火) 20:44:56
Perl勉強中で
変数Aにオブジェクトが入ってて
オブジェクトに$Cの値を入れようとしてるんですが
下記の1,2の違いについて調べても分からなくて
教えてくださるかたいませんか?_?ヒントだけでもいいので;w;
1: $A->B($C);
2: $A->{B} = $C;
790デフォルトの名無しさん:2008/08/12(火) 20:57:04
>>789
「オブジェクトに$Cの値を入れ」るが意味不明。
もう少しちゃんとした言葉を使って説明してくれ。

1は PackageOfA::B($A, $C) とおなじ、
2は ${$A}{"B"} = $C とおなじ。
791デフォルトの名無しさん:2008/08/13(水) 10:14:09
1のBはメソッドでCは引数
2のBはハッシュのキーでCは値
792デフォルトの名無しさん:2008/08/30(土) 01:16:38
あいかわらず、日本語マッチングは面倒ですか?

Emeditorの正規表現の方がよくね?
793デフォルトの名無しさん:2008/08/30(土) 01:28:07
日本語マッチングって何?
794デフォルトの名無しさん:2008/08/30(土) 01:30:05
まだつかえないんだ・・・
795デフォルトの名無しさん:2008/08/30(土) 01:34:30
だから日本語マッチングって何だよ。
796デフォルトの名無しさん:2008/08/30(土) 01:39:45
まだつかえないんだ・・・
797デフォルトの名無しさん:2008/08/30(土) 01:54:45
^^;;;;;;
798デフォルトの名無しさん:2008/08/30(土) 03:24:45
まぁどの言語でもそうだが、バカには使えないわな。
799デフォルトの名無しさん:2008/08/30(土) 08:20:16
20世紀からタイムスリップしてきたひとか
800デフォルトの名無しさん:2008/08/30(土) 08:28:11
>>799
もしかして、20世紀から生きてる人ですか?
801デフォルトの名無しさん:2008/08/30(土) 09:07:51
この板も、とうとう小学生が跋扈するようになったか。
802デフォルトの名無しさん:2008/08/30(土) 11:48:21
最初のプログラミング言語がPerlって、
スパゲッティー作りになることを義務づけられるぞ。
803デフォルトの名無しさん:2008/08/30(土) 13:30:38
最近の小学生は制御構造なんて使いこなせないから
804デフォルトの名無しさん:2008/08/30(土) 13:33:41
CASE文満載でなければおk
805デフォルトの名無しさん:2008/08/30(土) 13:44:14
最初に入った言語がCOBOLだった俺からいわせれば、perlなんて可愛いもの。
806デフォルトの名無しさん:2008/08/31(日) 08:33:14
>800 は8歳だったのか。
算数の勉強頑張れよ。
807デフォルトの名無しさん:2008/09/09(火) 13:31:52
>>1の日付見て吹いた
2008/08/13の勢いは異常だな
808デフォルトの名無しさん:2008/10/26(日) 12:34:29
あげ
809デフォルトの名無しさん:2008/11/11(火) 02:41:57
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7995.txt
学校の課題で、このプログラムの仕組みをこと細かく説明しろっていうのがでて困ってます
助けてください
810デフォルトの名無しさん:2008/11/12(水) 02:48:46
>>809
課題は自分でやれよ。

811デフォルトの名無しさん:2008/11/12(水) 19:39:55
>809
sjisがベタで使われてるとか、htmlのタグの記述に統一性が無いとかで
極力係わり合いになりたくないコードだなぁ
タイトル増やすのも面倒だ

こいつを書き直せって課題なら、嬉々としてやるところだw
812デフォルトの名無しさん:2008/11/12(水) 20:24:09
webprog池よ
813デフォルトの名無しさん:2008/11/13(木) 00:23:01
>>809
ガッコの課題で、そんな例題を出すのかぁ・・・・

そりゃ問題だ!
814デフォルトの名無しさん:2008/12/18(木) 09:08:52
perlでメールの添付ファイルの処理をしようとして、
ttp://homepage3.nifty.com/hippo2000/perltips/rcvmail.htm
を参考にプログラムを書こうと思っているのですが、
上記ページのWordDecoderを使ったサンプルプログラムを実行すると、
保存されたファイル名がURLエンコードされている状態になってしまいその原因が分かりません。

実はURLエンコードされている方が扱いやすくてうれしいのですが、
原因が分からないのが気持ち悪くて…。

どなたか教えていただけないでしょうか。
動作環境はFreeBSD6.0で、Jcode, MIME-Toolsはportsでインストールしました。

よろしくお願いいたします。
815814:2008/12/19(金) 05:30:45
すみません、別のスレ(Perlについての質問箱)で聞いてこようと思います。
失礼しました。
816デフォルトの名無しさん:2009/01/12(月) 16:26:57
perlで書かれたプログラムをダウンロードしたのですが、
使い方として、
・本体(exxeed.pl)は編集の必要がありません。
・cpiファイルにスクリプトを追記して、動作を指定します。

・起動方法
コンソールから
> perl exxeed.pl hogehoge.cpi


とだけ書かれているのですが、これって、
サーバー内のCronなどからコマンドで実行するって事ですか?
817デフォルトの名無しさん:2009/01/12(月) 17:12:41
シェルから実行すればいいだけだろ
818デフォルトの名無しさん:2009/01/12(月) 22:20:52
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
>コンソールから
819デフォルトの名無しさん:2009/01/12(月) 22:31:55
コンソールから
シェルから

この意味がぐぐってもイマイチ理解できてないです。
要するに、サーバーにアップして使用するのではなく、
コマンドプロンプトとかから実行するものなのですか?
820デフォルトの名無しさん:2009/01/12(月) 22:42:56
>>819
そのperlスクリプトが提供する機能がわからんのに答えられるわけがなかろう。
定期的に動かすものならcronに登録するし、
CGIならWebサーバのCGIディレクトリに設置するし、
コマンドラインで実行することになってるプログラムならコマンドプロンプトやターミナルエミュレータから実行するし、
GUIアプリならエクスプローラやファイラーからダブルクリックする。
821デフォルトの名無しさん:2009/01/12(月) 23:08:34
>>819
サーバで動かしたいなら、サーバにアップロードしてから
リモートシェルの類で実行すればいい。

なんにしてもperlの使い方の質問じゃないから、
適当なスレを探してくれ。
822デフォルトの名無しさん:2009/01/13(火) 01:30:46
  ・起動方法
  コンソールから
  > perl exxeed.pl hogehoge.cpi

これ読んでわからんのなら、パソコンの使い方を勉強しろ。
そうとしか言いようが無い。
駅前のアビバに通った方がいいぞ。
823816:2009/01/13(火) 04:20:00
皆さん有難うございました。
まだよくわからないので、他スレで聞いて見ます。
824A:2009/01/13(火) 16:19:41
それは、コマンドプロンプトから起動(実行)するもの。
UNIX/Linuxの場合、シェルから起動(実行)する、とも言う。
>>816 何がしたいのか書いてない。
<form method="POST" action="exxeed.pl"> ただこれは無理だと思う。
825デフォルトの名無しさん:2009/01/13(火) 17:23:00
コンソールっつーとサーバセンターまで行ってキーボードぶっ挿して、ってイメージ
826デフォルトの名無しさん:2009/01/14(水) 02:44:27
  ↑
Windows しか触ったこと無いひと。
827デフォルトの名無しさん:2009/01/14(水) 17:07:49
>>822
アビバってそんなこと教えてくれるの?
828デフォルトの名無しさん:2009/01/16(金) 23:18:15
ウェブプログラミングで引っかかってる問題だが、本質はEncode.pmなんで、こっちで聞こうと思いまつ。

utf-8の"〜"を Encode::from_to で EUC-JPに変換すると、?に文字化けするようです。
-------------------------------------サンプル
#!/usr/bin/perl -w
use strict;
use Encode;

my $str ="〜";
Encode::from_to($str, "utf-8", "euc-jp");

print "Content-type: text/html\n\n<html><head><meta http-equiv='Content-Type' content='text/html; charset=EUC-JP'></head><body>$str</body></html>";
-------------------------------------サンプル

これってEncode.pmのバグですか?対応方法は何かありますか?
829デフォルトの名無しさん:2009/01/16(金) 23:30:03
830デフォルトの名無しさん:2009/01/16(金) 23:32:34
>>829
dです。
831デフォルトの名無しさん:2009/01/17(土) 11:09:28
>>828
関係無いけどウェブプログラミングなら

>#!/usr/bin/perl -w
>use strict;
>use Encode;
ここは
#!/usr/bin/perl -T
use strict;
use warnings;
use Encode;
のほうが良い。
832デフォルトの名無しさん:2009/01/28(水) 12:51:50
829さんのスレッドが落ちていたのでこちらで質問失礼します。

Perlで、ハッシュデータにKEYとKEYに対応した値が多数格納されているとします。
そのKEYに対応した値から、KEY自体を取り出したいのですがそれは可能でしょうか。

可能でしたら簡単なプログラム例を教えて頂けると大変助かります。
833デフォルトの名無しさん:2009/01/28(水) 13:18:12
while ( ($key, $value) = each(%hash) ) {
  if ($value eq "うんこ") {
    print $key;
  }
}
834デフォルトの名無しさん:2009/01/28(水) 13:21:59
>>832
reverse使えばできる。
my %new_hash = reverse %old_hash;
これで、元のハッシュの値をキーとして、
元のハッシュのキーを値とするハッシュができる。

ただし、元のハッシュで値が同じものが2つ以上あるときには、
うまくいかないです。

835デフォルトの名無しさん:2009/01/28(水) 13:27:30
>>833-834
なるほど、納得致しました。
お二方とも有り難うございます!
836デフォルトの名無しさん:2009/01/31(土) 09:16:57
正規表現なのですが

<h2 class="title">を正規表現で表すと、(英数字の[0-9|a-zA-Z]は省略)

<h2.\s.class=\"title\">でよいのでしょうか
837デフォルトの名無しさん:2009/01/31(土) 10:00:45
聞く前に自分で試した方がなんぼか速いんでないかい
838デフォルトの名無しさん:2009/01/31(土) 10:26:57
>>837
試したのですが、出来なかったので間違っていると思うのですが
どこが間違っているのかわかりません
839デフォルトの名無しさん:2009/01/31(土) 10:55:38
>>838
htmlのタグで一番簡単なマッチはこの2通り

/<.*>/
/<[^>]*>/

てか正規表現のスレで聞けばはやいのでは?
840デフォルトの名無しさん:2009/01/31(土) 12:21:37
>>836
"."は文字一つ食べてごちそうさま。
"\s"はスペース一つ食べてごちそうさま。
もうひとつ"."も文字一つ食べてごちそうさま。

何文字用意してあげれば、おなかいっぱいになるの?
うん、三文字。
スペース一文字じゃ、おなかいっぱいにならないね。
食べるの控えたら、だいじょうぶ?
食べるの控えたら、だいじょうぶ?
841デフォルトの名無しさん:2009/01/31(土) 14:59:32
>>839

/<.*?>/

こっちは?
842デフォルトの名無しさん:2009/02/01(日) 02:47:31
Perlのコードのことで判らないことがあるため質問させていただきます。
現在読んでいるコードに、
return 0 if ($hoge < 1);
のような行があるのですが、これはどのような処理になるのでしょうか?

関数の途中にあり以下にも処理の記述があるため、私の想像では
return 0
の後ろに続く、ifが真のときにreturnが実行されるかと思うのですが、
なぜこのような書き方をするのでしょうか?

私が考えるのでは、
if ( $hoge < 1) {return 0;}
とすればいいかと思うのですが、何か理由があるのでしょうか?


質問をいくつもすみませんが、教えていただけるとありがたいです。
843デフォルトの名無しさん:2009/02/01(日) 02:53:23
>>842
英語の表現で、
hogehoge if fugafuga
ってのがあるだろ? それをプログラミング言語の文法に組み込んだのが前者。
意味は後者と同じ。
844デフォルトの名無しさん:2009/02/01(日) 02:59:26
>>843
ありがとうございます。

やはり、ただの書き方の違いだけでしたか。
845デフォルトの名無しさん:2009/02/01(日) 04:19:25
>>844
>return 0 if ($hoge < 1);
>if ( $hoge < 1) {return 0;}

書き方の違いもあるけど直感でわかるかどうかも重要だから
そういう箇所は書き直していったら後から読む人は助かる箇所も出てくると思う。
それで動作しなくなったら問題なので十分に注意、検証は必要だけどね。
846デフォルトの名無しさん:2009/02/01(日) 07:57:50
「orが嫌い」と言う理由で「||」に全置換かましたバカを思い出した。
847デフォルトの名無しさん:2009/02/01(日) 07:59:55
処理が単文なのにいちいちブロック書くのが面倒というのもある。
さらに
return 0 if $hoge < 1;
とも書ける。前に書く場合は括弧が必須。
文修飾子(statement modifiers)(後ろに付ける if, unless, while, until, foreach)を使うなら
括弧を書かない場合が多いんじゃないかな。
848デフォルトの名無しさん:2009/02/01(日) 10:14:39
>>846
まさか単語一致せずにかw
849デフォルトの名無しさん:2009/02/01(日) 10:43:43
>>842
C言語脳の恐怖・・・
850デフォルトの名無しさん:2009/02/01(日) 11:07:45
>848
単語一致以前に or と || では優先順位が異なる。
851デフォルトの名無しさん:2009/02/01(日) 11:24:22
>>850
ああ、そういう意味ですか。

operatorの「or」も置換して、operat||にしてしまうのかと思った。
852デフォルトの名無しさん:2009/02/02(月) 00:01:51
普通に考えて優先順位の話ってわかるじゃん(´・ω・`)
853デフォルトの名無しさん:2009/02/02(月) 14:48:35
質問なんですけど、@INCに入るパスって環境変数のPERL5LIB以外にどこからとってきてますか?
zshrcには書いてあるパスの集合がAだとすると、
local/lib/perl5/5.8.8
local/lib/perl5/i386-freebsd-64int
A
local/lib/perl5/5.8.8/BSDPA
local/lib/perl5/site_perl/5.8.8/mach
...
というような並びで並んでます。
Aの前と後にどこからパスを持ってきているのかわからず。perlのコンパイルの時にそんな指定するんでしたっけ?
PERLLIBも指定してなし、よくわからない
854デフォルトの名無しさん:2009/02/02(月) 14:54:16
>>853
そうです
855デフォルトの名無しさん:2009/02/02(月) 15:43:52
>>851
そんなこと言い出したら "or" が部分文字列として含まれる単語なんて
いくらでもあるじゃないか
このスレ見える範囲で検索しただけでも word, form, ports, livedoor とか出てきた
856デフォルトの名無しさん:2009/02/02(月) 16:28:22
>>854
なるほど。ありがとうございます。
コンパイルした後に変えることは無理?
5.8.8をもう一回コンパイルし直すならいっそのこと5.10をコンパイルしようかなと思うのですけど。
857デフォルトの名無しさん:2009/02/04(水) 02:58:37
use libできんのか?
858デフォルトの名無しさん:2009/02/04(水) 11:48:57
>>857
use libとか@INCに入れれば解決なのだけど、
そもそもそのリストをどこからどういう順番で取ってきているかを知りたかったのです。
おれの@INC、パスがダブっちゃったりしてるから。
859デフォルトの名無しさん:2009/02/04(水) 15:59:20
>>858
ソースのperl.cを参照。

ソースをそのままコンパイルして使うならまあいいんだけど、
一部のLinuxディストリによっては、これにpatchが当たってて、
読み込むパスや順番が異なってる。
860デフォルトの名無しさん:2009/02/04(水) 21:37:40
>>856
> コンパイルした後に変えることは無理?
スクリプト単位なら use lib や BEGIN { @INC = ... } 。
ユーザ単位なら環境変数 PERL5LIB / PERLLIB。
システムワイドに設定したければ、sitecustomize.pl が
利用可能ならその中で好きに編集すればいい。
861デフォルトの名無しさん:2009/02/13(金) 21:46:00
プログラム読んでてよくわからん構文出てきたから
最小のコードにしてみたらこうなった

sub a{return [(1)x5];}
@b = @{a()};
for(@b){print;print " ";}print "\n";

2行目の@{ }で囲っているところは何をやっているのか
誰か教えて
862デフォルトの名無しさん:2009/02/13(金) 22:16:21
デリファレンス
863デフォルトの名無しさん:2009/02/13(金) 22:43:00
把握した
864デフォルトの名無しさん:2009/02/14(土) 03:18:56
@{[ $ref ]}

kore nani?
865デフォルトの名無しさん:2009/02/14(土) 05:50:12
dereference
866デフォルトの名無しさん:2009/02/16(月) 00:03:57
>>864
リファレンス作ってデリファレンスしてる。
無名配列を作りたい時に便利。
例えば文字 "," のカウントをしたい場合。
====
my $str = q{a,c,b,d,e} ;
#my $cnt = $str =~ /,/g ; #<= ダメ
#my $cnt = my @tmp = $str =~ /,/g ; #<= tmp 作るの?
my $cnt = @{[ $str =~ /,/g ]} ;
print $cnt . qq{\n} ;
====
最もこのケースだったら以下の方法のが遥にスマート
my $cnt = () = $str =~ /,/g ;
my $cnt = $str =~ tr/,// ;

ちなみに↓コレだと @{[]} する意味があんまり…
@{[ $ref ]} ;
867デフォルトの名無しさん:2009/02/18(水) 20:18:16
868デフォルトの名無しさん:2009/02/18(水) 20:45:27
これはいいもん読めた
869デフォルトの名無しさん:2009/03/04(水) 12:28:30
ここまだ残ってるんだな・・・

(糞レスすまん
870デフォルトの名無しさん:2009/03/25(水) 23:33:08
○○.cgiのプログラムで、
「exec △△.pl $param1」とexecを使用して呼び出しても、
呼び出し先の△△.plが実行されないです。

環境が原因と思うのですが、
初心者で何が原因かわからないです。
871デフォルトの名無しさん:2009/03/26(木) 00:01:05
webprogいけ
872デフォルトの名無しさん:2009/03/26(木) 00:49:20
初心者がCGIとかヤメレ
873デフォルトの名無しさん:2009/03/26(木) 02:17:49
マルチ氏ね
874デフォルトの名無しさん:2009/03/26(木) 06:22:15
【Yahoo!番付で亀井をMVPにしようぜwwwww】
ttp://takeshima.2ch.net/test/read.cgi/news4vip/1237983005/50
ベンチの支えあっての原JAPAN 亀井こそが真のMVP
     ↓
イチロー福留青木稲葉がいる外野においては常にベンチが決まっているような状態で、
でももう一人予備の外野を選ばなくてはいけなくなった。
そのような役は自軍から出さねばならないと考えた原監督は亀井に白羽の矢を立てた。
誰もが落選すると思われていた亀井だったが、最終メンバーに選ばれた。
亀井も一度は監督に辞退を伝えたが、原監督は亀井に説得を行う。
亀井は尊敬する監督にそこまで言われたら、ということで辞退を撤回。
叩かれる事が分かっていながらもベンチから声援を送り続ける。
そんな亀井はMVPに相応しい
875デフォルトの名無しさん:2009/03/26(木) 16:37:43
マルチ氏ね
876デフォルトの名無しさん:2009/03/30(月) 14:32:06
おまいらお願いです。

フルパス文字列から親ディレクトリ名を取り出す方法を検討中なのですが、
例) /hoge/fuga/var/foo を入れると /hoge/fuga/var が出てくる

$PATH = '/hoge/fuga/var/foo';
$PATH =~ m|.*/|;
$PATH = $&;
$PATH =~ m|\/$|;
$PATH = $`;

こんな風にして一応動いたんですが、カコワルくて人に見せれないコードです。
もっとすっきりキレイに仕上げる方法がある気がしてなりません。
もっとキレイな方法を教えてもらえませんか?
877デフォルトの名無しさん:2009/03/30(月) 15:28:28

my $target = '/var/www/html/index.html';
my($per_dir)  = $target =~ m|(.+)/[^/]+/?|;

print $per_dir,"\n";

”親directory”とゆうことなので。
それじゃイヤンってんなら、ググるなりして調べてくれ。
878デフォルトの名無しさん:2009/03/30(月) 17:18:53
>>877
ソレダ!d。
879デフォルトの名無しさん:2009/03/30(月) 23:25:17
>876
File::Basename の dirname 使えば?
880デフォルトの名無しさん:2009/03/31(火) 01:13:27

$path =~ s/[^\/]*$//;
881876=878:2009/03/31(火) 21:50:51
>>879 >>880
d。やりたかった事は、レン鯖のDOCUMENT_ROOTの1個上にDBやらパスワードの設定ファイル(xml)を置いて、それを読み込んで処理する作業だったのです。

use XML::Simple;
- 略 -
my $DOCUMENT_ROOT = $ENV{'DOCUMENT_ROOT'}; # httpサーバが表示する / ディレクトリ
my ($SETTING_PATH) = $DOCUMENT_ROOT =~ m|(.+)/[^/]+/?|; # 親ディレクトリ

my $DB_Info_XML = XMLin($SETTING_PATH. '/dbpassword.xml');
my $DB_NAME = $DB_Info_XML->{dbinfo}->{dbname};
- 略 -

という感じで実装しました。あとで>>880のやり方に書き換えます。^^
882デフォルトの名無しさん:2009/04/01(水) 20:54:35
教えてください。

CatalystでDBIx::Class使って pagerやろうとしたのです

my $rs = $c->model(..)->search({}, {page =>1, rows=>10});
$c->stash->{data} = $rs;

.tt にて

[% SET pager = data.pager %]
[% INCLUDE pager.tt %]

で、data.pagerを参照するところで
Can't create pager for non-paged
と言われて困ってます。
どなたか助けて頂けませんか?
883882:2009/04/01(水) 21:36:58
申し訳ありません。自己解決しました。
pageに渡している値が空のケースがあるとあのエラーがでるようです。
失礼しました。
884デフォルトの名無しさん:2009/04/08(水) 18:43:15
885デフォルトの名無しさん:2009/04/09(木) 00:13:38
そうねぇ、、、perl って小回り効くから確かに便利だけど、
sed+awkとして使うまでに留めておくべきだな。

技術者の力量に依るような自由な言語は、プロジェクトとしてはなるべく使いたくない。
886デフォルトの名無しさん:2009/04/09(木) 01:49:17
いまどき CGI は無いだろ
887デフォルトの名無しさん:2009/04/09(木) 02:43:41
>884
PerlはLL界のCOBOLになったな。
888デフォルトの名無しさん:2009/04/09(木) 09:15:17
>>884
こういうの見ると「終わった感」が増して逆効果だと思うんだが・・
団結して良さを説明ようとか、方法論からして前世紀かよって思う。
889デフォルトの名無しさん:2009/04/09(木) 09:32:04
「モダンPerl入門」って糞?
890デフォルトの名無しさん:2009/04/09(木) 09:54:31
WEBアプリ以外はソフトウエアに非ず

そんな風潮。
perl はWEBアプリ専用言語じゃないのに
PHPやらASPやらJSPやら出てきたら
perl はお払い箱?・・・それじゃ、かわいそうだよ。
891デフォルトの名無しさん:2009/04/09(木) 20:48:27
誰か助けて下しア
環境がPERL5.8.* Jcode 2.6.5
PERL5.6.1 Jcode2.0から移したら
今までCGIで文字化けしなかったものが化けました。

$str = '莞ゲマン;
$hoge = Jcode->new($str, euc)->h2z->euc;
print "$hoge";

今までは 潟zゲマン
と表示されていたのに、 ?ホゲマン
となります。

原因を調べていたら、5.8移行は機種依存文字は無視しないで?に変換してしまうとのことで。。。
これを 潟zゲマン となるように
解決したいのですが、どなたかご教授ください。
892デフォルトの名無しさん:2009/04/09(木) 20:49:26
すません、ちなみに〜入れろ、とかは出来ない状況です。
UTF8でやれとかも無理な状態です
893デフォルトの名無しさん:2009/04/09(木) 21:04:36
すません
他で聴くためこちらの回答は不要です
失礼しました
894デフォルトの名無しさん:2009/04/09(木) 21:13:49
お前誰だよ
895デフォルトの名無しさん:2009/04/10(金) 00:36:43
>>884-888
蛇足情報として書いておくと、米国は perl / python 使いが多い。
896デフォルトの名無しさん:2009/04/13(月) 00:37:36
>>890
PerlはCみたいに残るでしょ・・・

awkは使ったこと無いw
897デフォルトの名無しさん:2009/04/13(月) 00:53:40
Windows の時代になっても
バッチファイルは残った。
だから Unix が GUI になっても
Perl は残る。
898デフォルトの名無しさん:2009/04/14(火) 00:13:45
その文脈だと、残るのは sh であって perl ではないような、、、

まあ、perl がなくなるようなことはないだろうけど。
899デフォルトの名無しさん:2009/04/15(水) 12:40:44
ちょw
900デフォルトの名無しさん:2009/04/16(木) 23:33:24
cshみたくpshとか出来るんじゃね?
901デフォルトの名無しさん:2009/04/17(金) 00:26:46
pyshonでいいよ。
902デフォルトの名無しさん:2009/04/17(金) 01:39:51
903デフォルトの名無しさん:2009/04/18(土) 15:51:41
これからはパールの時代がくるのかもな
904デフォルトの名無しさん:2009/04/18(土) 16:28:16
ルビーです
905デフォルトの名無しさん:2009/04/18(土) 18:59:38
ルアだろ、常考
906デフォルトの名無しさん:2009/09/11(金) 06:54:14
>>898
最近はMakefileでもPerlがインストールされているのを前提に
Perlスクリプトが走ったりするのがある。既にshの代替として
機能している部分があるのでなくなりはしないと思う。

逆にpythonやrubyでそんんあのみたことない。
907デフォルトの名無しさん:2009/09/11(金) 07:47:57
>>885
安い人間しか雇わないなら学習コストを考えるとPerlはないな。そういう人はPHPでも使えばいい。

>>889
MooseとかモダンCatalystとかよくわからんのなら買うべき。ただし天然なのか内容が結構ピンボケしてるので、
ある程度理解したら他のソースで情報を補完する必要がある。他に代替となる本がないから「モダンPerl入門」一択なのが現状。

>>891
解決したなら解決方法書け。EUC-JPにはそんな文字ないから文字化けして当たり前。
jcode.pl使ったら解決しましたとかそういうオチじゃないだろうなw

>>895
昨日YAPCで会った米国人が、日本の本屋にPerlの本が異常に少ないのに驚いていたな。

ちなみになる早で1回作って終わりなプロジェクトならPHPでもいいが、保守を続けていくようなプロジェクトはPerl
でかっちり書くのがいい。mixiは置いといて、はてなをPHPで書いてたら今のはてなはなかった。

>>903
Perlのことならもう来てるから。ここんとこPerlの案件激増。PHPの仕事も多いがは糞なのが多く蹴ってる。
908デフォルトの名無しさん:2009/09/15(火) 20:49:32
#!C:\Perl\bin\perl
use encoding "cp932";
binmode STDERR, ':encoding(cp932)';

$key = <STDIN>;
chomp $key;
if ($key ne 'quit') {
&print_randomnum;
} else {
print "owari\n";
exit;
}

sub print_randomnum{
$num = int(rand 1000000);
print "$num\n";
}
__END__

こんな簡単なプログラムなのに期待通りに動作しません。
quitと入力しても乱数が表示されてしまいます。どこがおかしいのか教えてください。
使用しているのはActivePerl 5.8.8 on XP Pro SP2です。
909デフォルトの名無しさん:2009/09/15(火) 21:42:23
>>908
デバッグはしたの?
910デフォルトの名無しさん:2009/09/15(火) 22:26:25
automakeがPerl依存か。
一応Pythonにはsconsがあるが、google以外では見ないな。
911デフォルトの名無しさん:2009/09/16(水) 00:00:11
>>908
use encoding "cp932";
binmode STDERR, ":encoding(cp932)";
の二行消したらなったぞ
912908:2009/09/17(木) 18:08:55
みなさまご親切にありがとうございます。911さまのご指摘をわたくしも確認しました
use encoding "cp932";
binmode STDERR, ":encoding(cp932)"; はウェブ上の入門講座を見て付加しました。
どうしてこの二行がこんなにおそろしい悪夢を招くのかよかったら教えてください。
講座ではシフトJISでコードを書くときに必要と説明していました。
913デフォルトの名無しさん:2009/09/17(木) 21:43:59
>>912
use encoding(cp932);
とした場合、STDINからの入力値を律儀にCRLF(\r\n)にしてくれる。
でもデフォルトの場合、特殊変数$/(デフォルトの改行文字)はLF(\n)なので、
chompした際に、LF(\n)しか消してくれない。

例 入力:AAA(エンターキー)
use encoding(cp932)あり → 'AAA\r\n'
use encoding(cp932)なし → 'AAA\n'
となる。

ちなみに、(binmodeなしで)入出力時に\n←→\r\nになるのは、ActivePerl(Winのみ?)
のIOのデフォルト動作。
914デフォルトの名無しさん:2009/09/17(木) 22:59:17
慣れたひとなら
\r が来ても \r\n が来ても、どっちでも正しく動作するよう
コーディングするもんだよ。
915デフォルトの名無しさん:2009/09/18(金) 00:20:49
>>914
> \r が来ても


そうきますか。
916908:2009/09/18(金) 10:04:45
913さま、ありがとうございました。頭がすっきりしました。
917デフォルトの名無しさん:2009/09/24(木) 02:14:38
>906
LinuxのGUIアプリならPython依存をそこそこ見るが、コマンドラインだと見ないな
918デフォルトの名無しさん:2009/10/07(水) 13:12:18
>>620
pl の関連付けを perl.exe から wperl.exe へ変更
wperl.exe は perl.exe と同じ場所にあります


それか、コマンドプロンプトの初期設定がコンパネから出来たような気がする
919デフォルトの名無しさん:2009/10/30(金) 09:21:36
Perl質問すれなくなった
920デフォルトの名無しさん:2009/11/03(火) 12:52:07
そのくらい自分でたてろよ
921デフォルトの名無しさん:2009/11/03(火) 19:03:21
勉強中の者ですが
例えば2で割り切れない番目の数値を倍にするって事を
やってみたのですが、$countをmap式の中に入れられる物なのでしょうか?
気持ち悪いので入れたいのですがどうすればいいんでしょう?

my @input_digbit = (1,2,4,8,16,32,64);
my $count;

my @result = map {
my $input = $_;
$count += 1;
if ($count % 2) {
$input = $input * 2;
} else {
$input;
}
} @input_digbit;
922デフォルトの名無しさん:2009/11/03(火) 19:51:36
気持ち悪がらずに慣れてください
923デフォルトの名無しさん:2009/11/03(火) 20:07:51
>>921
mapで書けることは大抵foreachでいけるよ
924デフォルトの名無しさん:2009/11/03(火) 20:24:32
use feature 'state' ;
my @h = map { state $c = 0 ; $_ + $c++ } 0 .. 3 ;
925デフォルトの名無しさん:2009/11/04(水) 10:11:01
>>921
mapを2回することになるけど、どうかな?

my @result =
map $_->[0] % 2 ? $_->[1]*2 : $_->[1],
map [ $_ + 1, $input_digbit[$_] ], 0..$#input_digbit;
926デフォルトの名無しさん:2009/11/04(水) 12:31:18
>>921
reduceを使うとか?
ちょっとトリッキー?

use List::Util qw(reduce);

my @result = @{( reduce {
[ @$a, $input_digbit[$b] * ( $b % 2 ? 1 : 2 ) ]
} ([], 0..$#input_digbit) )};
927デフォルトの名無しさん:2009/11/04(水) 14:19:19
よく考えたらこれでいいじゃん
はは

my @result = map $input_digbit[$_] * ($_ % 2 ? 1 : 2), 0..$#input_digbit;
928デフォルトの名無しさん:2009/11/04(水) 14:44:36
なるほどいろいろ書き方あるんですね。

>>927
一粒($_)で二度美味しい。目からウロコでした。
929デフォルトの名無しさん:2009/11/06(金) 02:03:40
やっぱfeature系が入ってくるときれいだよね
//とかstateとか欲しい機能満載
930デフォルトの名無しさん:2009/11/13(金) 12:13:39
///
931デフォルトの名無しさん:2009/11/13(金) 13:40:46
given($hoge){
 say "hoge" when 1;
 say "huga" when 2;
}
みたいなことがしたかったけどwhenは後置できないんだな
932デフォルトの名無しさん:2009/12/04(金) 12:40:06
でもお前ら、偉そうなこと言ってfeatureで一番心待ちにしてるのはsayだろ?な?
すでにuse feature qw/say/;とかsub say {print shift . "\n"} とかしてるやつ手を挙げろ。
933デフォルトの名無しさん:2009/12/04(金) 19:18:26
use 5.010; 派
934デフォルトの名無しさん:2009/12/05(土) 00:04:06
export PERL5OPT=-M5.010


exe 'inoreabbrev <buffer> say '. 'print, "\n";'. "<C-O>F,"
935デフォルトの名無しさん:2010/03/07(日) 23:52:03
( ´・ω・`)
936デフォルトの名無しさん:2010/03/08(月) 00:18:35
(´・ω・`)
937デフォルトの名無しさん:2010/03/08(月) 23:59:23
アクセスした人のポート番号80が空いてるかどうかを調べるにはどうすればいいでしょうか?
REMOTE_PORT関数で調べれると思ったのですがうまくいかなくて・・・
938デフォルトの名無しさん:2010/03/09(火) 08:35:01
>>937
telnetででも80番叩いてみればいいじゃん。
939デフォルトの名無しさん:2010/03/13(土) 13:37:02
(´・ω・`)
940デフォルトの名無しさん:2010/03/14(日) 02:32:42
>>938
スレタイ読めないの?
941デフォルトの名無しさん:2010/03/14(日) 02:39:43
>>937
最近、phpしか触ってないのでperlの方を忘れたけど、phpならこんな感じ。
function is_online($server_ip)
{
    $ip = gethostbyname("{$server_ip}");
    if ($fp = @fsockopen($ip, 80,$un,$sinn,2)) {
        fclose($fp);
        return true;
    } else {
        return false;
    }
}

要するに、ソケットをオープンして成功すれば、そのポートが開いてるってこと。
「perl ソケットオープン」
で検索汁
942デフォルトの名無しさん:2010/03/14(日) 02:41:04
>>941
スレタイ読めないの?
943デフォルトの名無しさん:2010/03/15(月) 07:09:23
アクセスした人のIPアドレスが12.34.56.78 だった場合
お手元のブラウザで

ttp://12.34.56.78/

(頭にtをつけてね)

ってやってサーバーが見つかりませんってエラーがでたら80番空いてない。
何かしら出てきたら空いてる。

これでどうよ。
944デフォルトの名無しさん:2010/03/15(月) 11:21:04
>>940
あぁ、ごめん、perlスレだったw

use LWP::Socket;
my($server, $port) = ('localhost', '80');
my $socket = LWP::Socket->new;
$socket->connect($server, $port);

ただ確かめるだけならこんなんでいいんじゃない?
945デフォルトの名無しさん:2010/03/15(月) 21:52:13
一週間もまえの書き込みに今更・・・
946デフォルトの名無しさん:2010/03/16(火) 03:03:36
open FILE, "<:encoding(cp932)", $hage;
read FILE, my $text, -s FILE;
close FILE;

みたいなスクリプトで cp932 *以外*のファイルを読んでしまうと

cp932 "\xEF" does not map to Unicode at C:\workspace\hoge\fuga.pl line **.

ってワーニングが出ますが、perlスクリプトはそのまま続行してしまいます。
ほんとうは停止してほしいんですけど、
read FILE, my $text, -s FILE or die; としても止まってくれません。
eval { ..... } die if $@; でも止まってくれません。
何か方法があれば教えてください。
947デフォルトの名無しさん:2010/03/16(火) 03:20:17
>>945
local $SIG{__WARN__} = sub{ die @_ } ;
スクリプトの最初の方にでも突っ込んどけば?
948デフォルトの名無しさん:2010/03/16(火) 22:45:43
use PerlIO::encoding;
use Encode qw[ :fallbacks ]; # 定数の import
$PerlIO::encoding::fallback = Encode::DIE_ON_ERR;

open ...

という風に $PerlIO::encoding::fallback に定数を入れてやると
PerlIO で Encode がまずったときの動作を指定することが出来たはず.
定数については Encode の check に書いてあったと思う.
949デフォルトの名無しさん:2010/03/17(水) 04:34:23
>>946
encoding使わないでdecode_utf8すれば良いんじゃない?
出力でencodeし直せばおけー
950デフォルトの名無しさん:2010/04/15(木) 09:11:18
perlccがうまく動きません><

だれかこの部分だけでいいから、Cにしてくれ〜。

/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/;
951950:2010/04/15(木) 11:15:49
すまん、やっぱいい
952デフォルトの名無しさん:2010/05/24(月) 01:43:38
答えてやって

ttp://anchorage.2ch.net/test/read.cgi/siberia/1235319741/680
> プログラミング初心者です。以下の課題が出されたのですが、まったくわかりません。助言おねがいします。
953デフォルトの名無しさん:2010/05/24(月) 02:30:38
954デフォルトの名無しさん:2010/05/24(月) 05:03:52
>>952
Perl じゃないじゃん
955デフォルトの名無しさん:2010/06/11(金) 13:46:42
         / ̄ ̄\
       / ヽ、. _ノ \
       |  (●)(●) |
       |  (__人__) | ヨナも そうおもう
          |   ` ⌒´  |  
        |        }
        ヽ       }
        人_____ノ"⌒ヽ
      /           \
     /            へ  \
     (  ヽγ⌒)     |  \   \
  ̄ ̄ ̄\__/
956デフォルトの名無しさん:2010/07/21(水) 22:32:12
クライアントがサーバへファイル名を送り、サーバがそれを検索しそのファイルを送るサーバプログラムはどうかけばいいですか?

初歩的な質問で申し訳ないですが、よろしければご教授ください。
957デフォルトの名無しさん:2010/07/22(木) 01:53:34
宿題は自分でやれ
958デフォルトの名無しさん:2010/07/22(木) 22:32:22
>>956
> クライアントがサーバへファイル名を送り、
 ieとかでwww.yahoo.co.jp/index.htmlと入れる。

> サーバがそれを検索しそのファイルを送る
 apacheがindex.htmlの内容を返す。

つまり、apache のソースを提出すればよろし
959デフォルトの名無しさん:2010/08/05(木) 06:17:40
hosyu age
960デフォルトの名無しさん:2010/08/07(土) 12:37:44
use strict; をすり抜けて、use warnings; で引っかかる
事例って、どんなのがあるの?
961デフォルトの名無しさん:2010/08/07(土) 15:03:00
あんいにしゃらいずどばりゅうとか?
962デフォルトの名無しさん:2010/08/07(土) 15:50:22
>>960
暗黙の文字列→数値変換で、文字列が数値以外の文字が含まれてるとき。
> perl -Mstrict -Mwarnings -e 'print int("1a")'
Argument "1a" isn't numeric in int at -e line 1.
1
> perl -Mstrict -e 'print int("1a")'
1
963デフォルトの名無しさん:2010/08/07(土) 17:58:46
>>962
なるほど・・・
じゃああえてそういう文字列食わせたいときとかは
一時無効にする必要があるわけか
964デフォルトの名無しさん:2010/09/15(水) 07:02:48
初歩的な質問ですが…

use libでパスを複数指定するとエラーになったりしますか?
例えば、
hoge.pmが/home/***/perl5とかに入ってて
fuga.pmが/home/***/perl5/i386-freebsdに入ってる時
二つのパスをuse libすると500になります。
かといって片方しかパスを指定しない場合はCan't locateのエラーが出ます。
どうすれば両方のモジュールを使用することが出来るのでしょうか?宜しくお願いします。
965デフォルトの名無しさん:2010/09/15(水) 10:20:36
>>964
それ多分違うところでエラーでてるかContent-Type吐いてないかパーミッションがおかしいかそんなとこだろ
どうにかしてエラー内容特定汁
966デフォルトの名無しさん:2010/09/15(水) 10:56:25
#!/usr/bin/perl
use lib qw(/home/***/extlib/lib/perl5 /home/***/extlib/lib/perl5/i386-freebsd);
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use AnyEvent::HTTP;
use Coro;

print "Content-type: text/html\n\n";
print "hoge";
↑500が出る


/home/***/extlib/lib/perl5/i386-freebsdを残して
/home/***/extlib/lib/perl5の部分だけ切り取り
↑Can't locate AnyEvent/HTTP.pm in @INC (...


/home/***/extlib/lib/perl5を残して
/home/***/extlib/lib/perl5/i386-freebsdの部分だけ切り取り
↑Can't locate loadable object for module Coro::State in @INC (...


/home/***/extlib/lib/perl5/i386-freebsd/auto/Coro/Stateを追加
use AnyEvent::HTTP;があると500になるので削除
/home/***/extlib/lib/perl5だとCoroで500が返るので /home/***/extlib/lib/perl5/i386-freebsdに
↑Can't locate loadable object for module Guard in @INC (...


/home/***/extlib/lib/perl5/i386-freebsd/auto/Guardを追加
↑Can't locate common/sense.pm in @INC (...
967デフォルトの名無しさん:2010/09/15(水) 11:00:35
/home/***/extlib/lib/perl5/commonを追加
↑変わらずCan't locate common/sense.pm in @INC (...が出る

今この状態です。

もちろん
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/html\n\n";
print "hoge";

これはちゃんとhogeが出力されます。
どういった原因が考えられますでしょうか?
2レスに渡り長々とすみません。どうかよろしくお願いします。
968デフォルトの名無しさん:2010/09/16(木) 01:31:37
>>966>>967>>965宛ですすみません><
969デフォルトの名無しさん:2010/09/16(木) 02:31:40
>>966
extlib/ をつくった環境とちがう環境でうごかそうとしたりしてませんか?
/home/***/extlib/lib/perl5/i386-freebsd 以下のディレクトリは環境依存のものがはいっているので、環境がちがうところにコピーしてつかったりはできませんけども。
(ここでいう環境とは OS, アーキテクチャ, -Dusethreads の有無, perl5 のバージョンのことです)
970デフォルトの名無しさん:2010/09/16(木) 02:41:08
>>969
レスありがとうございます!!!
でも俺のレベルだとちょっと理解しきれ無いので、教えてもらった内容に含まれてるキーワードで早速ググッてきます!
971デフォルトの名無しさん:2010/09/16(木) 03:31:29
>>969
解決しました!
環境が違うってのがどういうことかわかりました!#!/usr/bin/perl環境じゃなくてモジュールをインストールしたperl環境じゃないとダメ…みたいなことですよね?
どうもありがとうございました!
972デフォルトの名無しさん:2010/09/25(土) 00:56:56
PerlというかDBIで、fetchが最後まで行って終了した時に、
もう一度先頭行からループし直す時どうすればいいのでしょうか?

カーソルを先頭行に戻すやり方を教えて下さい。
973perl入門者:2010/09/26(日) 10:59:18
すいません。
perlで、以下のような処理を実現したいのですが、
作成された方がいらっしゃいましたら、ご教授お願いします。
(1)「javaのプログラム内の全てのコメントを削除」して表示する
(2)「javaのプログラム内のコメントのみ」を表示する

よろしくお願いします。
974デフォルトの名無しさん:2010/09/26(日) 11:02:53
正規表現使えばいいのでは?
975デフォルトの名無しさん:2010/09/26(日) 11:07:03
Javaのコメントはネスト不可なのか
でも、もしJavaがコメント内の文字列リテラルとかも認識するなら
正規表現だけでは対応できないよ、多分
976デフォルトの名無しさん:2010/09/26(日) 11:11:03
とりあえず正規表現を使わないなら
行コメントは簡単だろうけど、ブロックコメントは
コメントの中にいるかどうかっていう状態変数を作って
読みこみながら処理していけばいい
(コメントの中にいなくて/*にであったらコメントに入る)
(コメントの中にいて*/に出会ったとき、コメントの外に出る、みたいな感じで)

Javaがコメント内の文字列も認識するなら
コメントの中の文字列の中にいるっていう状態変数も作る

もっと複雑なことをする予定ならパーサを作るほうが楽
977デフォルトの名無しさん:2010/09/26(日) 11:13:17
注意すべきは文字列リテラルの中にコメントと同等のシーケンスが入っていた場合。
978デフォルトの名無しさん:2010/09/26(日) 17:38:11
System.out.println("/*うんこ野郎!*/"); /*どうだ参ったか!*/
979デフォルトの名無しさん:2010/09/26(日) 20:50:19
Parse::RecDescent
で、文字列とコメントとそれ以外を定義
980デフォルトの名無しさん:2010/09/26(日) 21:58:05
このGrammarは、Javaでもそのまま使えるんじゃね?
http://www.ibm.com/developerworks/jp/linux/library/l-perl-parsing/stat-comments-dos.pl.txt
981デフォルトの名無しさん
ふーん