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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/31(火) 14:52:21
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

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

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

http://www.perl.org/get.html
● 2006/10/31現在の最新版: 5.8.8
● 2006/10/31現在の開発版: 5.9.3

前スレ
Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/

リンク集は>>2-3
過去スレは>>4
06856792006/12/03(日) 15:09:27
>>681 ありがとうございました。
06866832006/12/03(日) 15:38:28
>>684
君のようなスーパーハカーには関係ない。
ぼくのような未熟者にとっては「ぼくは Perl について知らないことばかりだけれど、知っている範囲で遊んでもいいのだ」と思える点でうれしいかもしれない。
0687デフォルトの名無しさん2006/12/03(日) 16:43:50
>>686
そうだな、
C/C++ は、入門してから遊ぶことが出来までの道程が長いから、
そこで挫ける者も多かろう。

Perl はその道程が短いぶんいいよな。
0688デフォルトの名無しさん2006/12/04(月) 07:57:51
PBP!PBP!
0689デフォルトの名無しさん2006/12/04(月) 09:51:25
今、サーバー7台使っていろいろ試してます
0690デフォルトの名無しさん2006/12/04(月) 11:00:24
>>689
誰だよお前w
0691デフォルトの名無しさん2006/12/04(月) 16:02:48
Perl で正規表現にマッチしたとき、文字列のどの場所にマッチしたか知る方法はありますか。
if ($str =~ /foo/) {
# $strのどの場所にマッチしたか(index)知りたい
}
0692デフォルトの名無しさん2006/12/04(月) 17:17:08
>>691
if ( $str =~ /foo/ ){
print $-[0] . "\n" ;
}
後は @+ と pos 関数
0693デフォルトの名無しさん2006/12/05(火) 14:11:23
>>692
thanks
0694デフォルトの名無しさん2006/12/05(火) 16:18:06
require 5.8.1;
use strict;
use utf8;

open(OUT, '>:encoding(UTF-16LE)', 't:\tmp\16LE.txt') or die;
print OUT "\n";
close(OUT);

↑の処理で"16LE.txt"の内容が16進数で「0D,00,0A,00」になることを期待したのですが
実際には「0D,0A,00」でした。期待した結果を得るはどうしたらいいですか?


XPPro sp2
ActivePerl 5.8.8.817

よろしくお願いします。


0695デフォルトの名無しさん2006/12/05(火) 16:32:31
>>694
require 5.8.1;
use strict;
use utf8;

open(OUT, '>:encoding(UTF-16LE):crlf', '16LE.txt') or die;
print OUT "\n";
close(OUT);

手元のlinuxの5.8.8ではこれでいけた。

0696デフォルトの名無しさん2006/12/05(火) 17:20:44
>>695
ありがとうございます。早速コピペして実行したのですが、結果は変わりませんでしだ。
試しにFreeBSDの5.8.8でコピペして実行したら期待した結果が得られました。

WinのPerlをインストールし直してやってみます。
0697デフォルトの名無しさん2006/12/05(火) 17:34:24
>>696
あー、インストールしなおしても同じだよ、それ。
Cのライブラリ内で行われている改行の変換が原因だから。
(C/OSがテキストモードとバイナリモードを区別しない環境ではPerlIO内で処理される)

">:raw:encoding(utf-16le)" で開いて、最初から print "\r\n" するのが楽だと思う。
0698デフォルトの名無しさん2006/12/05(火) 18:12:09
>>697
言われた通りに書き直したら出来ました ! !
ありがとうです。助かりました。
0699デフォルトの名無しさん2006/12/05(火) 21:00:30
>>694,697
バグじゃないかという気がするので
バグレポしたほうがいいんじゃないか。
0700デフォルトの名無しさん2006/12/05(火) 21:06:08
>>699
思いっきり「仕様」だろーが。
0701デフォルトの名無しさん2006/12/05(火) 21:19:16
1.perl.exeがテキストモードでfopen
2.\nがperl.exeでUTF-16LEの0x0A,0x00に変換される
3.perl.exeが書き込む際にfputsか何かで0x0Aが0x0D,0x0Aに変換される
って認識でおk?
0702デフォルトの名無しさん2006/12/06(水) 16:22:48
バグだろう。
0703デフォルトの名無しさん2006/12/06(水) 16:46:56
ここによるとwindows環境でデフォルトで入っている:crlfレイヤの位置が悪いので、
いったん:rawで剥がしてからあとで付け加えるといいらしい。

ttp://blogs.msdn.com/brettsh/archive/2006/06/07/620986.aspx

俺はwindows環境のperl持ってないので試してないが。
0704デフォルトの名無しさん2006/12/06(水) 16:57:34
バグだね。
0705デフォルトの名無しさん2006/12/06(水) 17:25:47
バグばぐ言ってる奴
perldoc -f binmode
に明記されてる現象の何をもってバグと云うんだ?
(しかも BUGS 等に書いてある訳じゃない。注意書きとして書いてある)
仕様だよ。
0706デフォルトの名無しさん2006/12/06(水) 17:55:16
このスレはperldocも使えなかったり、英語だからと読もうともしない似非perlerがいっぱいだな。。。
0707デフォルトの名無しさん2006/12/06(水) 18:05:10
>>705
英語力無いオレには読みとれん。 Programing Perl 3rd Edition の binmode に
その旨、明記されてない。問題点間違えてない?

まあ、安易にバグだって云うのもなんだかなとは思うが。
0708デフォルトの名無しさん2006/12/06(水) 18:13:01
バグじゃないというならバッドノウハウだなw
0709デフォルトの名無しさん2006/12/06(水) 20:47:05
>>707
駱駝の 3rd は 5.6 ベースの内容で、5.8.x とはかなり違いがある。
5.8.x 使ってるなら perldoc なり >>2-3 に挙がってる訳なりで
確認した方がいいよ。
0710デフォルトの名無しさん2006/12/06(水) 21:16:31
5.8.8のperldoc -f binmode読んだがこの問題については
明示的には何も書かれてないように読めた。

705の言っている部分がどこだか示してもらえるとありがたい。
0711デフォルトの名無しさん2006/12/06(水) 21:30:49
ここじゃねーの?

The operating system, device drivers, C libraries, and Perl
run-time system all work together to let the programmer treat a
single character ("\n") as the line terminator, irrespective of
the external representation. On many operating systems, the
native text file representation matches the internal represen-
tation, but on some platforms the external representation of
"\n" is made up of more than one character.
0712デフォルトの名無しさん2006/12/06(水) 21:39:26
>>710
思いっきり書いてあるだろ。
それとも翻訳させるための釣りか?

The operating system, device drivers, C libraries, and Perl run-time system all work together to let
the programmer treat a single character ("\n") as the line terminator, irrespective of the external
representation. On many operating systems, the native text file representation matches the internal
representation, but on some platforms the external representation of "\n" is made up of more than
one character.

Mac OS, all variants of Unix, and Stream_LF files on VMS use a single character to end each line in
the external representation of text (even though that single character is CARRIAGE RETURN on Mac OS
and LINE FEED on Unix and most VMS files). In other systems like OS/2, DOS and the various flavors
of MS-Windows your program sees a "\n" as a simple "\cJ", but what’s stored in text files are the
two characters "\cM\cJ". That means that, if you don’t use binmode() on these systems, "\cM\cJ"
sequences on disk will be converted to "\n" on input, and any "\n" in your program will be converted
back to "\cM\cJ" on output. This is what you want for text files, but it can be disastrous for
binary files.
0713デフォルトの名無しさん2006/12/06(水) 22:13:19
そこは普通に改行文字の変換について書いてあるだけで、
encoding(...)と:crlfの順序で結果が違ってくるから:rawで
順序調整しないとおかしくなるってあたりの話じゃないだろ。
0714デフォルトの名無しさん2006/12/06(水) 22:31:32
英語読めないくせにperldocとか見栄はりさんが多いことがよくわかった。
つーか脊髄反射で物事を処理していると上達しないよ。
0715デフォルトの名無しさん2006/12/06(水) 23:14:09
>>713
当然だ
今は改行文字の変換についての仕様がperldocに載ってるかどうかの話だろ
:rawの順序云々は>>703が言及してるが、それがperldocに書いてあったとは一言も言っていない
0716デフォルトの名無しさん2006/12/06(水) 23:22:33
それをいうなら普通の改行文字の変換がバグだなんて誰も言ってないよ。
windows環境のperlでencodingをUTF16-LEにしたときに\nが0D,0A,00になって
変だっていう>>693が話の始まりなんだから。

とりあえずお前とは話がすれ違ってることはわかった。
07176972006/12/06(水) 23:26:27
>>703
その手があったのか、気が付かなかった。
:encodingを先に指定してから:crlfを指定すれば良かったのか。
中途半端な事を書いてスマンかった >694氏

>>699
バグレポは出さなくても大丈夫だと思いたい。
既に
#36659: UTF-16 endianess switch after line break
http://rt.perl.org/rt3/Public/Bug/Display.html?id=36659

があるから。
0718デフォルトの名無しさん2006/12/07(木) 06:50:16
perlってバグが仕様なんだw
やっぱり俺はrubyで行こう。
0719デフォルトの名無しさん2006/12/07(木) 07:15:49
そうしておけ。
PHPとRubyはいまだにバッファオーバーフローのセキュリティホールで
バージョンアップを楽しめるぞ。
0720デフォルトの名無しさん2006/12/07(木) 10:10:44
もうencoding使うなよ…常識的に考えて…
0721デフォルトの名無しさん2006/12/07(木) 10:43:25
>>720
それはencodingプラグマのことで。最近話題のPerlIOレイヤのencodingとは
全く無関係ではないが別の話かと。
0722デフォルトの名無しさん2006/12/07(木) 10:55:17
単純変数のバイト数の上限を指定するような処理はないでしょうか?

$buf に外部メールサーバから情報をとってきて格納するプログラムを作成して
いるのですが、容量が大きくなりすぎると処理が重くなるので変数の
容量に上限をもうけたいと思っています。
0723デフォルトの名無しさん2006/12/07(木) 11:21:31
変数$aと$bのうち、値の大きい方を小さい方で割った結果を$cに代入するプログラムを作りなさい。
ただし、$aか$bのどちらかが0のときは$cに0を代入します。

という課題が出ているのですが、ただし以降がわかりません。
どのように入力すればよいのでしょうか?
0724デフォルトの名無しさん2006/12/07(木) 11:30:34
課題は自分でやれwww
っつーかまんまだろうが・・・
0725デフォルトの名無しさん2006/12/07(木) 11:33:30
>>723
$c = ($a == 0 or $b == 0) ? 0 : ($a > $b) ? $a / $b : $b / $a;
0726デフォルトの名無しさん2006/12/07(木) 11:41:08
>>722
tie使えば指定した長さ以上入れようとするとエラーになるスカラーとか作れるけど、
普通は格納するときにlengthをチェックするようにすりゃいいだけじゃねーの?
0727デフォルトの名無しさん2006/12/07(木) 12:24:22
>>721
似たようなもんだろ…常識的に考えて…
0728デフォルトの名無しさん2006/12/07(木) 13:23:38
>>725
ワロタ
0729デフォルトの名無しさん2006/12/07(木) 15:00:23
>>725
( ´,_ゝ`)プッ
0730デフォルトの名無しさん2006/12/07(木) 15:03:27
>>723
変数名に$aや$bは使うな、って先生に言ってやれ
0731デフォルトの名無しさん2006/12/07(木) 18:15:15
$number1 = $a;
$number2 = $b;
$answer = $c;

if (($number1 == 0) or ($number2 == 0)) {
$answer = 0;
} elsif ($number1 >= $number2) {
$answer = $number1 / $number2;
} elsif ($number2 > $number1) {
$answer = $number2 / $number1;
}

$c = $answer;
0732デフォルトの名無しさん2006/12/07(木) 18:38:04
いっそ
$c = 0+eval { pop(@{[sort $a,$b]}) / shift(@{[sort $a,$b]}) };
や
$c = 0+eval { length('a'x$a|'b'x$b) / length('a'x$a&'b'x$b) };
で。
0733デフォルトの名無しさん2006/12/07(木) 18:54:26
>>725って間違ってるんですか?
0734デフォルトの名無しさん2006/12/07(木) 18:57:13
>>733
間違ってないがわかり辛いから>>731の書き方のがいい
07357332006/12/07(木) 19:01:47
>>734
すごくわかりやすいと思うんですが・・・
俺もこう書くねーフンフンと思ってたら笑われてて焦りました
if文で複数行で書くかどうかは好みですかね?
0736デフォルトの名無しさん2006/12/07(木) 19:06:44
>>735
そう書くなら関数でくるむのが正解
このパターンぐらいなら分かるけど ?が連続するのはちょっとな
0737デフォルトの名無しさん2006/12/07(木) 19:34:33
質問者が理解できないから、じゃない?<1行
0738デフォルトの名無しさん2006/12/07(木) 19:45:10
>>735
思いっきり普通だろ。「宿題の提出にはいじわる」ってんで笑っただけだ。
>>736
>関数でくるむのが正解
臨機応変に使うのが正解じゃねw
0739デフォルトの名無しさん2006/12/07(木) 19:47:43
>>736
?:三項演算子の読みやすさって整形次第で結構化けると思うんだ。どうよ?
$c = ($a == 0 or $b == 0) ? 0
                          : $a > $b ? $a / $b
                                    : $b / $a;

$c = $a == 0 ? 0:
     $b == 0 ? 0:
     $a > $b ? $a / $b
             : $b / $a;
# 等幅フォントのエディタにコピペしてみとくれ
0740デフォルトの名無しさん2006/12/07(木) 19:52:10
FYI で書くが PBP では三項演算子の連続はこういうインデントを推奨してた。
$c = ($a == 0 or $b == 0) ? 0
  : ($a > $b) ? $a / $b
: $b / $a
  ;
なにが条件で代入するものがなにか判りやすいからだと。

ちなみに「elsif を使うんじゃねえ」とも書いてあったw
これには同意しかねるが。
07417402006/12/07(木) 19:53:55
かぶってしかもインデントくずれた
739氏のを採用してください orz...
0742デフォルトの名無しさん2006/12/07(木) 20:00:54
>>740
$c = ($a == 0 or $b == 0) ? 0
  : ($a > $b)      ? $a / $b
  :            $b / $a
  ;
ね。等幅エディタで。@Perl Best Practice
0743デフォルトの名無しさん2006/12/07(木) 20:02:11
初心者です
簡単な質問でスミマセン

ある配列に
AAA
BBB
CCC
CCC
DDD

と格納されているとします。
ダブってるCCCをひとつ消して
AAA
BBB
CCC
DDD

とするにはどうすればいいのでしょうか
0744デフォルトの名無しさん2006/12/07(木) 20:07:06
>>743
@hoge = qw( AAA BBB CCC CCC DDD ) ;
%seen ;
@uniq = grep { ! $seen{$_} ++ } @hoge ;
0745デフォルトの名無しさん2006/12/07(木) 20:11:12
答えをすぐに出しすぎだろ・・・
テンプレ>>3あたり全部読めば載ってるはず
0746デフォルトの名無しさん2006/12/07(木) 20:14:31
>>745
それいったらここんとこの質問全てが…
>>742
補足 THX
0747デフォルトの名無しさん2006/12/07(木) 20:18:20
つねに教育的指導を心がけないと、次第に質問者が堕落してゆく現象が
知られています。
0748デフォルトの名無しさん2006/12/07(木) 20:26:46
自治厨乙
0749デフォルトの名無しさん2006/12/07(木) 20:47:37
>>744って、天才??
0750デフォルトの名無しさん2006/12/07(木) 20:48:02
今日は3つぐらい続けて初心者的質問が出たから、一応ね。
答える側の住人も注意すべきかなと。
自治しなきゃ誰かが解決してくれるわけでもなし。
0751デフォルトの名無しさん2006/12/07(木) 21:07:23
>>750
質問者は同一人物だろ?
そのうち飽きるさ
0752デフォルトの名無しさん2006/12/07(木) 21:11:15
>>749
uniq するときの有名な手法の一つだよ。応用も効くので覚えておいて損はない。

下の例は拡張子を判断して各拡張子の一番若いものを grep する。
@list = qw( 00.jpg 10.png 05.png 01.jpg ) ;
%seen ;
@grepped = grep { $suf = (/\.(.*?)$/)[0] ; ! $seen{$suf} ++ } sort @list ;
print @grepped , "\n" ;
# まあ名前の長さが違えばもう一工夫必要になるけどね。
0753デフォルトの名無しさん2006/12/07(木) 21:36:13
>>747のような輪郭がぼやけてるけど確かに感じている物を端的に述べてるレスが
2ch見てるとたま〜にあってそれを読むとすごく気持ちいい。
0754デフォルトの名無しさん2006/12/07(木) 21:46:54
自画自賛乙
0755デフォルトの名無しさん2006/12/07(木) 22:34:39
>>750のような輪郭がぼやけてるけど確かに感じている物を端的に述べてるレスが
2ch見てるとたま〜にあってそれを読むとすごく気持ちいい。
0756デフォルトの名無しさん2006/12/07(木) 22:38:17
自画自賛乙
0757デフォルトの名無しさん2006/12/07(木) 22:38:48
質問者を資料のある方向に導くことを心がけましょう
0758デフォルトの名無しさん2006/12/07(木) 23:42:09
いやです。
0759デフォルトの名無しさん2006/12/08(金) 00:03:57
>>739,>>740
やっぱりあまり綺麗だとは思わないけどなぁ
ダミアン・コンウェイは尊敬しているが
0760デフォルトの名無しさん2006/12/08(金) 00:14:43
質問です
splitを使って2次元関数を作りたいのに、うまくいきません
たとえば、

@tnk = split(/,/,"a,b,c,d");
@unk[3] = split(/,/,"a,b,c,d");

tnk[0]に"a"、[1]に"b"が入っていくように、
これでunkの[3][0]に"a"、[2][1]に"b"・・・と入れたいのに、うまくいきません
どうすれば2次元配列が作れますか?
07617602006/12/08(金) 00:15:54
下から2行目
[2][1]ではなく、[3][1]です
0762デフォルトの名無しさん2006/12/08(金) 00:32:12
>>760
$unk[3] = [ split(/,/, "a,b,c,d") ];

以下、詳しい説明が必要なら。

配列変数はあくまで「スカラ値」の集まりなので、
split が返す「スカラ値のリスト」を1つの要素として代入する事はできません。
Perl での2次元配列は、配列変数のリファレンスを利用します。
リファレンスはスカラ値の一種なので、配列の要素として利用できるからです。

配列変数のリファレンスを作成するには [ LIST ] という構文が便利です。
LIST が入った匿名の(名前を持たない)配列変数へのリファレンスが作成できます。上の例なら
@unnamed_array = split(/,/, "a,b,c,d");
$unk[3] = \@unnamed_array;
とほぼ同じ意味です。

ちなみに、配列の中の1要素を添え字で参照する場合、取り出される値はスカラ値なので
@unk[3] ではなく $unk[3] のように、スカラ値を表す「$」を使う必要があります。
0763デフォルトの名無しさん2006/12/08(金) 00:37:57
当方XPなんですが、ActivePerl 5.8.8.819をインストールしようとすると
インストールパッケージを開けませんでしたとでてインストールできませんでした
ActivePerl 5.6.1.638のほうはうまくいったんですが、最新版の方は
何か特別な制約があるのでしょうか
0764デフォルトの名無しさん2006/12/08(金) 00:40:24
↑すいません、インストーラの問題でした。
スレ汚し申し訳ないです。。。
0765デフォルトの名無しさん2006/12/08(金) 00:50:05
>>759
TMTOWTDI だから使わなきゃいいだけじゃねw
俺にとっては三項演算子は必須になってる
0766デフォルトの名無しさん2006/12/08(金) 00:50:26
質問です
sexを使って3次元の子供を作りたいのに、うまくいきません
たとえば、

$tnk->setSpirit("どどどどうていちゃうわ");
$mnk->setJob("風俗嬢");
sex($tnk, $mnk);

$manの$man{'osiri'}に$tinkが入っていくように、
$mnkに$tnk・・・と入れたいのに、うまくいきません
どうすれば3次元の子供が作れますか?

マジレスお願いします。
0767デフォルトの名無しさん2006/12/08(金) 02:05:30
>>766は想像以上に下劣ね
0768デフォルトの名無しさん2006/12/08(金) 02:34:30
>>766
標準出力がティッシュのままなので、selectで正しく指定し直し。
sex関数も基本的には、先入れ先出し(FIFO)処理に書き換えて下さい。
0769デフォルトの名無しさん2006/12/08(金) 03:32:17
ツマラン
07707602006/12/08(金) 09:19:04
>>762
想定どおり動きました!
単なる知識不足だったようで、現に詳しい説明の部分が理解できません
そのあたりを勉強しなおしてきます
ありがとうございました
0771デフォルトの名無しさん2006/12/08(金) 16:07:27
URLの転送先を取得するにはどうしたらいいんでしょうか

#例
#
$url= http://www.youtube.com/v/2m0P-Q0joxU
#↓(リダイレクト先に変換)
$url= http://www.youtube.com/p.swf?video_id=2m0P-Q0joxU&eurl=&iurl=http%3A//sjc-static6.sjc.youtube.com/vi/2m0P-Q0joxU/2.jpg&t=OEgsToPDskKKNZHbTD7d-oE2My88f86P
0772デフォルトの名無しさん2006/12/08(金) 16:34:19
>>771
http://d.hatena.ne.jp/shag/20060920
のコードを読んでみれば分かるんじゃね?
0773デフォルトの名無しさん2006/12/09(土) 01:24:37
以下のプログラムはなぜ"NG"となるのでしょうか?
どうか教えてくださいm(_ _)m

Perl v5.8.8 built for i686-linux

#!/usr/local/bin/perl
$a='A¥[B¥]C';
if ( $a =~ /A¥[B¥]C/ ){
  print "OK¥n";
}else{
  print "NG¥n";
}

あと、任意の文字列を=~で比較しなくてはいけないとき、
"["のような都合が悪い文字列が入ってきた場合にそなえるのは
「quotemetaで処理」が適切なのでしょうか
quotemetaし忘れて=~で落ちるバグを修正しようとしたのですが、
上記のプログラムがなぜかNGになるので修正しきれないのです(; ;)
0774デフォルトの名無しさん2006/12/09(土) 02:14:57
$a = 'A¥[B¥]C';
if ($a =~ /A¥\[B¥\]C/ ){
print "OK¥n";
}
else {
print "NG¥n";
}
0775デフォルトの名無しさん2006/12/09(土) 04:52:25
>>773
(全角記号がもともとは半角であると仮定して)
正規表現では \[ は '[' という文字にマッチするので、 '\[' という二文字にはマッチしません。
'\[' にマッチするのは \\\[ です。

つまり 'A\[B\]C' にマッチする正規表現は /A\\\[B\\\]C/ です。
07767732006/12/09(土) 07:59:13
>>774 >>775
言われて気づきましたorz (バグであせっていたのかも)
なんでもかんでもquotemetaすりゃいいってもんじゃないんですね・・・

どうもありがとうございましたm(_ _)m
0777デフォルトの名無しさん2006/12/09(土) 08:09:37
>>773
> 「quotemetaで処理」
えと、正規表現側の話だよね?まさかと思うけど変数側(ここで云う $a)じゃないよな?
この前提だと御前さんの提示したスクリプトに quotemeta の入る余地はないんだけど。
(quotemeta 使用例)
$str = 'a\[b\]c' ;
$quo = quotemeta $str ;
print $quo . "\n" ;
if ( $str =〜 /$quo/ ){ print "quote\n" ; }
if ( $str =〜 /$str/ ){ print "not quote\n" ; }
変数側の話しだとすると「すごおおおおく間抜けな事をやってる」とだけコメント
しとく。
(間抜けな例)
$quoquo = quotemeta $quo ;
if ( $quo =〜 /$quoquo/ ){ print "quotequote\n" ; }
それと 「quotemeta しわすれ」てのが理解できん。何せ提示された例の正規表現
は、直接文字列で作成されてて変数なんて見に行ってないから。
07787732006/12/09(土) 13:44:02
>>777
一応マヌケじゃないほうの例です
簡単のために>>773のように書きました

機能追加を重ねていったスパゲッティなのでこのへんで
0779デフォルトの名無しさん2006/12/09(土) 21:30:22
>>771
↓のスレッドにレス付けておきました。

Perlコーディング初心者質問スレ Part 53
http://pc8.2ch.net/test/read.cgi/php/1164519503/
0780デフォルトの名無しさん2006/12/11(月) 22:10:46
age
0781デフォルトの名無しさん2006/12/12(火) 21:41:11
eucで書いたperlプログラムをwindowsで実行すると文字化けしてしまいます。
windowsのシェルはsjisしか表示できないらしいので、
nkf.exeを使って、perl a.pl | nkf -sとしたんですが、
リアルタイムで実行結果が表示されず、実行しているときの状況が分りません。
a.plに$|=1;と記述してもだめです。
どうすればいいでしょうか?
0782デフォルトの名無しさん2006/12/12(火) 22:29:49
かいけちゅしました。perl -Mencoding=euc-jp,STDOUT,shift-jis a.plと打てばできまちた
0783デフォルトの名無しさん2006/12/12(火) 22:51:42
急に過疎ったなあ
0784デフォルトの名無しさん2006/12/12(火) 23:13:35
>>275
File::Path
■ このスレッドは過去ログ倉庫に格納されています