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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )

このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。

http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2

▼ 前スレ
Perlについての質問箱 48箱目
http://hibari.2ch.net/test/read.cgi/tech/1313840197/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り
2デフォルトの名無しさん:2011/10/30(日) 14:45:15.61






               Perlは死んだ





3デフォルトの名無しさん:2011/10/30(日) 14:45:36.91





       さようなら! 過去の言語!





4デフォルトの名無しさん:2011/10/30(日) 14:45:52.85
[プログラミング自体の経験が無い奴はまずココを読め]
Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://ascii.asciimw.jp/books/books/detail/4-7561-3057-7.shtml
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/

[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perldoc.jp: ttp://perldoc.jp/
perldoc.perl.org: ttp://perldoc.perl.org/
5デフォルトの名無しさん:2011/10/30(日) 14:46:10.22
今は日本語処理はEncodeモジュール一択


Jcode関係は過去のやり方です。
6デフォルトの名無しさん:2011/10/30(日) 14:46:42.49
7デフォルトの名無しさん:2011/10/30(日) 14:47:28.43
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。
8デフォルトの名無しさん:2011/10/30(日) 14:48:11.67
なんかへんなのに割り込まれちった。まあいいや。
9デフォルトの名無しさん:2011/10/30(日) 14:49:17.18
Encodeモジュール (現在のPerl文字コードの標準)
http://search.cpan.org/dist/Encode/

UNICODEでわからなくなったらここを読め
http://perldoc.jp/docs/perl/5.8.1/utf8.pod
http://perldoc.jp/docs/perl/5.10.0/perlunifaq.pod
10デフォルトの名無しさん:2011/10/30(日) 14:50:21.93
1レスで理解できるutf8フラグ

utf8フラグとい名前がまずかったね。
文字列フラグなどという名前だったらよかった。

文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。

バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。

ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。

話はこれだけ。
11デフォルトの名無しさん:2011/10/30(日) 14:50:36.62
use Encode;
while(<>){
  chomp;
  my @row = split(/,/, $_);
  for my $row (@row){
    Encode::from_to($row,'utf8','sjis');
    print $row;
  }
}
12デフォルトの名無しさん:2011/10/30(日) 14:53:48.76
古いPerlにまどわされないために

モダンPerlの世界へようこそ
http://gihyo.jp/dev/serial/01/modern-perl/0001
13デフォルトの名無しさん:2011/10/30(日) 14:54:42.28
バイナリと文字列は同じものなので区別なく扱えるのがUNIXやPerlの利点。
Windowsだとそうはいかない。
14デフォルトの名無しさん:2011/10/30(日) 14:55:54.27
> バイナリと文字列は同じものなので

文字列には、文字数というものがあるので
文字とバイナリは違います。
15デフォルトの名無しさん:2011/10/30(日) 14:58:04.92
OSに関係なく、少なくとも文字列はバイナリデータに含まれます。
16デフォルトの名無しさん:2011/10/30(日) 14:59:33.85
そしてバイナリデータを文字列のように扱えるのなら覚えることが
減るので利用者として楽です。
17デフォルトの名無しさん:2011/10/30(日) 15:00:07.72
・バイナリ

ビット(バイト)が並んだもの。それ以外に情報を持っていない。


・文字列

バイナリに様々なメタ情報が追加されたもの。
文字コード情報がが固定、もしくは内包されている。
データの終端情報を持っている。
1文字という概念がある。1文字は多バイト、または可変バイトで構成されている。
バイト単位での操作は行わない。
18デフォルトの名無しさん:2011/10/30(日) 15:05:07.88
つまんないこと言ってないで、Data::Dumper 答えてやれよ
19デフォルトの名無しさん:2011/10/30(日) 15:14:41.24
テキストデータとバイナリデータの違いは何かという普遍的な議論へ
20デフォルトの名無しさん:2011/10/30(日) 15:18:01.66
文字列フラグというければ、chr($n) で $n < 255 のときとそうでない
ときでフラグがつく、つかないが変わる、ということからすると、latin-1
リテラルで Unicode 文字列をあらわすというのは今でも、それが perl
の正しい文字列の扱い方ということになるとおもう。
21デフォルトの名無しさん:2011/10/30(日) 15:19:34.86
>>20
日本語でおk
22デフォルトの名無しさん:2011/10/30(日) 15:22:16.34
>>20
だから、そういうへんな挙動がないEncodeモジュールを
使ってくださいと書いてあるんだよ。
http://perldoc.jp/docs/perl/5.8.1/utf8.pod

> utf8::encode($string)
>
> 論理キャラクタを、8ビットシーケンス表現に、PerlのUTF-Xエンコーディングに、
> (適切に)変換します。何も返しません。 Encode::encode_utf8()と同じです。
> 次のことに注意してください。レガシーのバイトエンコーディングを、
> Unicode にする変換に使うべきではありません:そのためには、Encode を使って下さい。
23デフォルトの名無しさん:2011/10/30(日) 15:47:51.88
>>17
そこに書いた「文字列」を「文字列インスタンス」「文字列オブジェクト」
と書換えるのなら構わないけど、一般的な言葉の「文字列」をその定義に
しちまうのはどうよ?

そうでないと今、見えているものが文字列じゃなくなっちゃうぞ。
24デフォルトの名無しさん:2011/10/30(日) 15:57:16.10
> そうでないと今、見えているものが文字列じゃなくなっちゃうぞ。

なんで? データの終端情報は微妙だけど、

ここに書いてある文字を読むためには、ShiftJISという文字コード
まで含めてやっと文字列として読めるだろ?

そしてその1文字が何バイトであるかなんて考えないだろ?
25デフォルトの名無しさん:2011/10/30(日) 16:23:16.44
そもそも紙に手書きしたものも文字列だし、印刷した場合でも文字列。
パピルスに書かれたものも、粘土板に刻まれたものも、木簡に書かれた
ものも文字列と言われてきたのだから、これからもそうしたほうがいい
と思う。

       (それともお前が全部燃やしたいの?)

・(ひとが扱う)文字列

バイナリに様々なメタ情報が追加されたもの。
→ コンピュータ導入前から人間は文字列は使っているわけで、"バイナリ"
 は無関係。コンピュータがデジタルではなった場合も然り。

文字コード情報が固定、もしくは内包されている。
→ 同じ理由で文字コード情報は文字列の定義に関係がない。

データの終端情報を持っている。
→ バイナリデータだって終端情報を持っていることがある。

1文字という概念がある。
→ 確かに。でももしかしたら1文字の概念があやふやだったり、なかったり
 するようなもの(言語?)もあるかもしれない。

1文字は多バイト、または可変バイトで構成されている。バイト単位での
操作は行わない。
→ これまたコンピュータ上/内の話。コンピュータの有無やその構造・方式
 と文字列の定義は無関係。
26デフォルトの名無しさん:2011/10/30(日) 16:26:32.52
>>25
意味がわからん。
今はコンピュータ上の文字の表現の仕方の話だろ。

手書きしたものとか言い出したら、
文字はバイナリではない(分子かなんかカ?w)ということになるだろ。

なに関係ありそうで関係ないものの話持ちだしてんだかw
こいつは頭が悪いと認定してよさそうだ。
27デフォルトの名無しさん:2011/10/30(日) 16:29:44.06
What is Unicode?
ttp://www.unicode.org/standard/WhatIsUnicode.html

Fundamentally, computers just deal with numbers. They store letters
and other characters by assigning a number for each one.

ってあるようにコンピュータは文字を扱うわけではない。
28デフォルトの名無しさん:2011/10/30(日) 16:33:21.15
バイナリだけでは、それを文字として認識することは不可能。
文字コード情報が別に必要になる。

ASCIIだって、ASCIIコードという情報がなければ、
アルファベットですら文字として認識できない。
たとえばASCIIコードでABCDと書いてあるように見えても、
これはASCIIではなくUTF32ですといわれれば別の文字になるしね。
文字を文字として認識するためには、文字コード情報が必要不可欠。

C言語とかこの文字コード情報が文字列にくっついていないから
(そもそもC言語には文字はあっても文字列はないんだが)
文字として表示するためには人間が文字コードのことを考慮する必要があった。

最近の言語では、文字とバイナリは区別され、文字には文字コード情報が内包されている。
そのため、人間がいちいち文字コードは何か? と考える必要がなくなった。
PerlのUTF8フラグもその一つ。
29デフォルトの名無しさん:2011/10/30(日) 16:35:11.85
>>27
中途半端に持ってくるなよ

基本的に、コンピュータは数字だけを扱います。彼らはそれぞれに番号を割り当てることによって、
文字や他の文字を格納する。ユニコードが発明される前に、これらの番号を割り当てるための
さまざまなエンコーディングシステムの何百ものがあった。単一の符号化に十分な文字が含まれていないことができます:
例えば、欧州連合(EU)だけではそのすべての言語をカバーするいくつかの異なるエンコーディングが必要です。
であっても英語のような単一言語の単一の符号化は、共通使用されているすべての文字、句読点、技術記号のための十分でした。

お互いに、これらの符号化システムは、また競合。つまり、二つのエンコーディングは、2つの異なる文字に対して同じ番号を使用して、
または同じ文字に異なる番号を使用することができます。任意のコンピュータ(特にサーバ)さまざまなエンコーディングを
サポートする必要があります。まだいつでもデータが異なるエンコーディングやプラットフォーム間で受け渡され、データは常に破損の危険性を実行される。
30デフォルトの名無しさん:2011/10/30(日) 16:36:46.56
>>29からも解るように、

「2つの異なる文字に対して同じ番号」を割り当てるわけ。
つまり番号からでは、どの文字かどうかはわからない。
そこで使用されるのが、エンコーディング(文字コード)

番号を文字として認識するには、文字コード情報が必要不可欠
31デフォルトの名無しさん:2011/10/30(日) 16:47:39.58
ここがPerlスレなのは承知してるけど、文字列はPerlだけのものじゃないだろ?
例えばPerlで処理した後にPythonで処理したり、お前の母ちゃんが処理したり
することもあるだろ?
32デフォルトの名無しさん:2011/10/30(日) 16:49:32.04
>>31
そういう場合は文字を一旦バイナリに変換する。
そして他の言語でバイナリとして読み取ったものを
その言語用の文字列として変換するんだよ。
33デフォルトの名無しさん:2011/10/30(日) 16:51:39.46
どうしてもバイナリと対比させたいんだなw
34デフォルトの名無しさん:2011/10/30(日) 16:53:22.73
お前の母ちゃんバイナリ扱えるのか、ちょっと感心した。
35デフォルトの名無しさん:2011/10/30(日) 17:01:38.82
もしかして、テキストエディタと
バイナリエディタの区別がつかない人?

バイナリのまま、文字列を操作するのは大変だろw
だからテキストエディタで文字列として解釈させて・・・
でも元がバイナリ(文字コードデータが含まれてない)だから、
たまに自動判定できなくて・・・

こんなことを、いちいち言わないとわからないのかな?
36デフォルトの名無しさん:2011/10/30(日) 17:03:36.76
だからコンピュータに自動判定させるなって。
37デフォルトの名無しさん:2011/10/30(日) 17:04:24.27
コンピュータは文字(文字列も)扱えないんだからさ。
38デフォルトの名無しさん:2011/10/30(日) 17:05:30.40
>>37
そんな事言ってるのはお前だけw
39デフォルトの名無しさん:2011/10/30(日) 17:08:56.05
文字(文字列)を扱っているのはお前で、お前のコンピュータが文字を
扱っているわけではない。もし今会話している相手がコンピュータ
だっていうならチューリングテスト合格だと思うぞ。
40デフォルトの名無しさん:2011/10/30(日) 17:13:07.05
コンピューター一般においての文字列(テキストデータ)として話してる人と、
プログラミング言語での文字列型に格納されてる文字列について話してる人がいるかかみ合わないのでは?
41デフォルトの名無しさん:2011/10/30(日) 17:15:24.89
perlのutf8フラグの話が発端なんだから
プログラミング言語での文字列型に格納されてる文字列
以外の話をしている人は、なんなんだろうね。
42デフォルトの名無しさん:2011/10/30(日) 17:16:08.13
(△△△クラスの)文字列オブジェクトって言ってくれれば、言っている
ことにすべて同意する。
43デフォルトの名無しさん:2011/10/30(日) 17:19:41.78
>>42
ここはperlスレ。
perlにおいて文字列オブジェクトとは
変数の値にUTF8フラグがついたもの。
44デフォルトの名無しさん:2011/10/30(日) 17:21:30.96
>>41
格納される前は、格納されるものを何て呼べばいいの?

そこを議論しているつもり。
確かに格納される前の話はPerlと無関係かもしれないけれど、説明したり
するときにどうしてもそれを表わさないといけないよね?
45デフォルトの名無しさん:2011/10/30(日) 17:27:06.39
つ ソース文字列
46デフォルトの名無しさん:2011/10/30(日) 17:29:28.39
A) 文字列にはソース文字列が格納されている
B) 文字列オブジェクトには文字列が格納されている
47デフォルトの名無しさん:2011/10/30(日) 17:32:28.52
文字列にはリテラルの語感があるので、A) が不自然に感じる。
48デフォルトの名無しさん:2011/10/30(日) 17:32:45.56
>>44
これでも読んでください。

http://perldoc.jp/docs/perl/5.10.0/perlunitut.pod
・テキスト文字列(文字の文字列)
テキスト文字列、または 文字の文字列 は文字からなります。
バイト列はここでは無意味で、エンコーディングがあります。 各文字は単に文字です。
テキスト文字列は Unicode 文字列 とも呼ばれます; なぜなら、Perl では テキスト文字列は Unicode 文字列だからです。

・バイナリ文字列(バイト文字列)
バイナリ文字列、または バイト文字列 はバイト列からなります。
ここでは、文字はなく、単にバイトだけがあります。
外側の世界(現在の Perl プロセスの外側のあらゆるもの) との通信はバイナリで 行われます。

・エンコード
エンコード は テキスト から バイナリ への変換です

・デコード
デコード は バイナリ から テキスト への変換です。
49デフォルトの名無しさん:2011/10/30(日) 17:45:18.83
質問:二次元配列の、最後の配列要素の最後の要素を参照するにはどうすればいいでしょうか。

例:
@array = (
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15]
);

希望:上記2次元配列の中味が分からないという状況で、15という一番最後の数字を取得したい。
状況:@{$array[$#array]}で最後の配列要素[11,12,13,14,15]を取り出せることまで分かりました。
その後、いろいろ試したんですが、うまくいきません。[-1]は使えないみたいですし……。
ご教授お願いします。
50デフォルトの名無しさん:2011/10/30(日) 17:46:16.62
なんてことはない、
B) ≒ C) 文字列変数に文字列が格納されている
ってこと。

Perlの場合は文字と数値を区別しない変数なので文字列変数ってもの
がなかったわけで、ついでにバイナリストリングと文字列の区別も
なかった。区別がない方が便利なこともあるし、システム的に区別が
あった方が便利なこともある。

でも入れるものと入れられるものを区別できないと困るし、単語が
今までの用法と異なるのも混乱の元。
51デフォルトの名無しさん:2011/10/30(日) 17:50:42.92
print (@{$array[-1]})[-1];
52デフォルトの名無しさん:2011/10/30(日) 17:53:32.26
print $array[-1][-1];
53デフォルトの名無しさん:2011/10/30(日) 17:56:44.75
arrayって
あ〜れぇ〜って読むの?
それとも、ありぃ〜?って読むの?
54デフォルトの名無しさん:2011/10/30(日) 18:36:16.81
アレィ
55デフォルトの名無しさん:2011/10/30(日) 19:08:21.20
A') 数値にはソース数値が格納されている
B') 数値オブジェクトには数値が格納されている

数値にはリテラルの語感があるので、A') が不自然に感じる。
56デフォルトの名無しさん:2011/10/30(日) 19:16:27.45
変数に数値(数値オブジェクト)が格納されている。
変数にバイナリ値が格納されている。
変数に文字列が格納されている。

これでいいじゃん
57デフォルトの名無しさん:2011/10/30(日) 19:19:04.01
>>51
>>52
ありがとうございます。
[-1]だと何故かダメなんです。表示されません。
58デフォルトの名無しさん:2011/10/30(日) 19:21:36.92
>>57
-1 が使えない状況がおかしい。
使えないというコードそのままさらしてみ?
59デフォルトの名無しさん:2011/10/30(日) 19:26:15.90
>>56
格納される前は?
これから格納しようかと思っているものの名称は?
60デフォルトの名無しさん:2011/10/30(日) 19:29:41.19
>>59
要するに変数の右辺だろ?

変数に入れたからって、右辺の状態が
変更されるわけ無いだろ。

変数に入れるまでもなく、
数値、バイナリ値、文字列、ついでにオブジェクトだよ。
61デフォルトの名無しさん:2011/10/30(日) 19:30:26.03
×要するに変数の右辺だろ?
○要するに変数への代入式の右辺だろ?
62デフォルトの名無しさん:2011/10/30(日) 19:33:40.77
右辺といってる時点でもうスクリプトの中の話になってるしw
63デフォルトの名無しさん:2011/10/30(日) 19:39:29.07
え? スクリプト外?
なら答えは>>48に書いてあるじゃん。

> 外側の世界(現在の Perl プロセスの外側のあらゆるもの) との通信はバイナリで 行われます。

はい、バイナリです。
64デフォルトの名無しさん:2011/10/30(日) 19:40:01.46
おれ、この流れすきwww
65デフォルトの名無しさん:2011/10/30(日) 19:41:51.30
スクリプトの外には出たものの、まだコンピュータの中だな。
がんばれ!!!
66デフォルトの名無しさん:2011/10/30(日) 19:42:32.36
>>65
お前何のはなししてるの?
67デフォルトの名無しさん:2011/10/30(日) 19:47:05.38
1レスどころか66レスまでひっぱるutf8フラグ
68デフォルトの名無しさん:2011/10/30(日) 19:56:22.11
utf8フラグがあるべきところ
69デフォルトの名無しさん:2011/10/30(日) 20:00:49.05
{
no utf8;
70デフォルトの名無しさん:2011/10/30(日) 20:09:50.87
おまえらいいかげんにしろ
文字の話は↓こっちに移ったんだろうがよ

Perlについて
http://hibari.2ch.net/test/read.cgi/tech/1217851121/
71デフォルトの名無しさん:2011/10/30(日) 20:18:25.73
>>58
環境はHTML出力なので、
あまり周辺を広げるとスレ違いになりそうなんすが、

my @current_month = calendar($mon,$year); #@current_monthに対象月の日にちデータを二次元配列で格納。
print @{$current_month[-1]}[-1]; #対象月の最終日を表示。

試したもの↓
print "$current_month[-1][-1]";
print "@{$current_month[-1]}[-1]";
print "@{$current_month[$#current_month][-1]}";
print "$current_month[$#current_month][-1]";

""を外してみてもダメでした。
72デフォルトの名無しさん:2011/10/30(日) 20:22:21.56
calendar が1次元配列で返せば解決
73デフォルトの名無しさん:2011/10/30(日) 20:34:39.89
「初めてのPerl 第3版」(ちょと古い)をひと通り読んで、
モジュールの作り方とか載ってないので、次の本を探
しています。

だいたいPerlの書き方はわかったので、リファレンスを
兼ねた本がいいと思い、「プログラミングPerl 第3版」
を検討していますが、内容的には古くないでしょうか?
2002年というのがどうにも気になりまして。

あとできればマルチバイト文字にも配慮した本だと
いいのですが望み薄ですか?
shiftjisのテキストファイルを扱うときに、日本語処理に
随分手間取ったので。(Encodeモジュールを使いました)


74デフォルトの名無しさん:2011/10/30(日) 20:41:09.19
>>72
週ごとに区別する都合で2次元配列なんです。
いろいろ手間をかければ月の最終日が何日なのかは参照できると思いますが、
一発でアクセスできる方法があればなと……。
75デフォルトの名無しさん:2011/10/30(日) 20:43:04.65
@{$current_month[-1]} は最終週を返しているか確認した?
76デフォルトの名無しさん:2011/10/30(日) 20:46:39.12
use Data::Dumper ;
して、
print Dumper \@current_month ;
の結果が想定通りかまず調べろ。
実際には一次元が返ってたとか、undef が
返ってたとかあるだろ。
77デフォルトの名無しさん:2011/10/30(日) 20:47:28.97
print (grep(/\d/,@{$current_month[-1]}))[-1];
78デフォルトの名無しさん:2011/10/30(日) 20:50:38.36
一週間は7日固定で作られていて、最終週の後半は undef で
埋まっているに一票。
79デフォルトの名無しさん:2011/10/30(日) 22:30:04.75
>>78
今日はもうコードをチェックしませんが、恐らく真理です……。
calendarモジュールから取得した日にちデータを、
実際のカレンダーのように、日〜土までを一行として表組みしてます。
仮に月曜日でその月が終わるとすると、火〜土までは空白セルとして表示するようになってます。

……とすると配列の最後尾にアクセスするんじゃなくて、
undefでない最後の有効値にアクセスするように書けばいいってことですよね。
いちいちループ使ってその配列の後ろからundefかそうでないかを調べていったほうが早いでしょうか。
一発で最後の有効値にアクセスする方法ってあります?
80デフォルトの名無しさん:2011/10/30(日) 22:39:28.14
>>79
77氏がその質問を予見してて、答えの一案を書いてるだろ。
81デフォルトの名無しさん:2011/10/30(日) 23:04:38.66
undef かもしれないものに直接 /\d/ はダメじゃね
use strict; use warnings; もしてないであろう>>79なら平気かしらんが
82デフォルトの名無しさん:2011/10/31(月) 00:22:08.94
>>73
続・初めてのPerl 改訂版
まるごとPerl! Vol.1

それに腐っても鯛、
プログラミングPerl 第3版
は、読む価値がある
でもその前に
プログラミングPerl 第2版
を薦めておく
83デフォルトの名無しさん:2011/10/31(月) 00:27:31.33
オライリーだからいいって言ってるだけで
実際は読んでないんだろうなw
84デフォルトの名無しさん:2011/10/31(月) 01:41:52.11
>>79
欲しいのは「二次元配列の最後の(undefではない)要素の値」なのか、
「その年・月の末日の日付」なのか、どっち?

後者ならその配列の値を参照する以外にも取得方法はあると思うが。

use Date::Calc qw(Days_in_Month);
print Days_in_Month($year,$mon);

とか。

まあ>>77の方法でもいいだろうけど。
85デフォルトの名無しさん:2011/10/31(月) 03:05:19.57
Imager.pmで画像のリサイズをしています。
例えば、480×320pxの画像を、400×400pxの枠内に収めたいとき、
cropするだけだと、400×300pxとなってしまいます。
これを、上下50pxずつ白い背景を付け足して、400×400pxの画像に
したいのですが、方法をご存知の方がいたら是非教えてください。
86デフォルトの名無しさん:2011/10/31(月) 04:48:48.11
>>79
俺だとこうするかなぁ。行頭の空白全角にしてるけど:

my $last_day = (
  grep { defined $_ }
  map { @{$_} }
  @current_month
)[-1];
87デフォルトの名無しさん:2011/10/31(月) 08:37:42.50
>>18
Data::Dumperは出力結果をevalすると元に戻るというのも趣旨の1つ。
そのため、元がテキスト文字列だったものをevalしてもテキスト文字列
に戻るように、"\x{ff84}"という記法で出力している。
88デフォルトの名無しさん:2011/10/31(月) 12:31:48.72
>>77 >>84 >>86
ありがとうございました。
>>86の方法で解決です。

ちなみにuse strict;use warnings;どっちもしてます。
89デフォルトの名無しさん:2011/10/31(月) 13:28:43.74
use warnings して warnings の出力ちゃんと見てればあんな質問する前に原因に気づけてるはずなんだよ……
大方、CGI でしか動かしてなくてしかも CGI::Carp を使ったデバッグすらしてない、とかなんだろうけど。
90デフォルトの名無しさん:2011/11/01(火) 17:59:02.82
perlのソート関数ってどんなソート方法が使われているんですか?
1000個の配列を大きい順に並びかえるようなソートだと
自作関数だと1000*1000回のループになっちゃうんだけど、これより速いですか?
91デフォルトの名無しさん:2011/11/01(火) 18:01:00.07
訂正:1000*(1000ーn)回のループです
92デフォルトの名無しさん:2011/11/01(火) 18:21:27.17
93デフォルトの名無しさん:2011/11/03(木) 00:28:27.70
#!/usr/bin/perl -w

use encoding "utf8"
use Encode;
use strict;

print encode('shiftjis',"テストテスト");

こんな感じのソースを書いて、UNIXサーバに送って
TeraTerm(SJIS設定)で実行すると文字化けする
んですが、何が問題なのでしょう?

TeraTermをutf8設定にして、encodeなしでで表示させれば、
うまく表示されるんですが、SJISのファイルが多いので、TeraTermの
設定はSJISにしておきたいと思っています。

もちろん上記ソースはUTF8で保存してます。





94デフォルトの名無しさん:2011/11/03(木) 00:53:08.42
http://blog.livedoor.jp/dankogai/archives/51221731.html

use encoding;は、jperlなど、かつて存在したL10Nされたperl用に
書かれたレガシースクリプトを、モダンperlで動かすときのためのおまじないです。

スクリプトはUTF-8で書き、use utf8;する
のがモダンPerlのあり方です。
95デフォルトの名無しさん:2011/11/03(木) 01:15:50.78
>>94
おー ありがとうございます。
ソースが職場なので、あとで確認してみます。

この辺の漢字圏の文化を踏まえたPerlの本が
あると良いのですけど、ありませんかね?

96デフォルトの名無しさん:2011/11/03(木) 01:28:38.23
漢字とか知らないけど
モダンperlについて調べたほうがいい。
ネットは古臭いコードで溢れてる。
97デフォルトの名無しさん:2011/11/03(木) 01:38:26.41
ユーザが繰り出すモジュールで最先端が変化するってのも
これまた奇特な言語だな
98デフォルトの名無しさん:2011/11/03(木) 02:28:27.58
Perlは管理する団体がないからね。
Perlの標準ライブラリとは、ユーザが作ったモジュール。
それが利点でもあるが、メンテナが一個人だったりするわけで
その人の気分で仕様が変わり、互換性が低い部分がある。
99デフォルトの名無しさん:2011/11/03(木) 03:51:43.51
CJKV日中韓越情報処理 ケン ランディ、小松 章、逆井 克己
文字コード「超」研究 改訂第2版 深沢千尋

まだあるけどね
100デフォルトの名無しさん:2011/11/03(木) 10:42:18.14
Windows 2000、Activeperl 5.8 の環境で、
use Socket;
socket(・・・);
connect(・・・);
な感じでインターネット上のwebサイトからページを取得してるんだけど、
サイトの応答が遅いとき、応答が帰ってくるまでCPU負荷が100%近くになる。

これって何が原因でしょうか。
まあ、PCのスペックはWin2000を使っているというあたりで想像いただけるとは思いますがしょぼいです。

Activeperlのバージョン上げれば直るのかな…
101デフォルトの名無しさん:2011/11/03(木) 15:09:06.33
>>83
お薦めだけでも300冊位思いついちゃってレスがまんどくさく
なっちゃったんだろうなw
102デフォルトの名無しさん:2011/11/03(木) 19:29:28.98
>>100
WEB プログラミング板へ
http://hibari.2ch.net/php/
103デフォルトの名無しさん:2011/11/03(木) 19:34:23.06
とあるサイトで、ファイルのオープンは3つの引数を指定してオープンするのを強く推奨していました。
理由はセキュリティ的に脆いかららしいのですが・・・

いったい、どうセキュリティ的に脆いのでしょうか?
104デフォルトの名無しさん:2011/11/03(木) 20:40:50.01
DBI で長ったらしい SQL を複数行で書きたいのですがどうすればいいですか?
my $dbh = $DBI->connect(引数);
my $sth = $dbh->prepare("SELECT なんちゃらかんちゃら 〜 超長ったらしい 〜;"); # ←ここ!
$sth->execute();
$sth->finish();
$dbh->disconnect();

>>103
OS コマンドインジェクション

例えば次のような open 関数呼び出しは危険。
open($fh, $filename);
この状態だと $filename = ";halt"みたいにして外部コマンドを実行できる。
対策として、
open($fh, "<$filename");
open($fh, "<", $filename);
sysopen($fh, $filename, O_RDONLY);
みたいにすると OS コマンドを実行できなくなる。
105デフォルトの名無しさん:2011/11/03(木) 20:40:53.11
>>102
ありがとうございます。
行ってみます。
106デフォルトの名無しさん:2011/11/03(木) 20:52:34.55
>>104
$sql = <<"_SQL_";
SELECT foo FROM table WHERE 〜
_SQL_
$sth = prepare( $sql );
107103:2011/11/03(木) 20:54:27.16
>>104
なるほど〜
任意の外部コマンドが実行されてしまう可能性があるって事だったのですね・・・
わかりました、これからは3つ引数でオープンする事にします。
ありがとうございます。


ちなみに、sql文は、

my $sth = $dbh->prepare(
  "SELECT なんちゃらかんちゃら ".
  "FROM 超長ったらしい ".
  "WHERE うんたらかんたら"
);

の、ように、俺は分割してます。
108デフォルトの名無しさん:2011/11/03(木) 20:56:25.03
>>106
まちがった。
$sth = $dbh -> prepare( $sql );
だす。
109デフォルトの名無しさん:2011/11/03(木) 21:07:44.04
(my $sql = <<END_SQL) =~ s/\n//g;
SELECT foo
FROM table
WHERE ...
END_SQL
110104:2011/11/03(木) 21:13:42.72
>>106>>107-108
ありがとうございます!
確かにヒアドキュメントとか文字列の結合を使えばできますねw
Cから乗り換えたばかりなのでなかなか思いつきませんでした。
111104:2011/11/03(木) 21:14:08.56
>>109もありがとうございます。
112デフォルトの名無しさん:2011/11/04(金) 23:07:23.16
>>94
use utf8でうまく漢字が出るようになりました!
ありがとうございました。

113デフォルトの名無しさん:2011/11/05(土) 01:05:25.23
>>87
うわ、ありがとうございます、よくわかりました。
前スレで答えてくれた方もありがとうございました。
114デフォルトの名無しさん:2011/11/05(土) 10:51:18.81
>>104
折り返して書く小細工で極低頻度に発症するバグで呼び出されることも
あるのでそのまま1行で書くのもまた一興。
115デフォルトの名無しさん:2011/11/05(土) 14:07:20.20
mooseのisaってStr,Intってあるけど、両方入ってくる可能性がある場合はどうしたらいいですか?
116デフォルトの名無しさん:2011/11/05(土) 14:28:06.53
isa => 'Str|Int' のようにすれば複数指定できる。
ただし、この場合は Str だけでおk。
http://search.cpan.org/perldoc?Moose::Util::TypeConstraints#Default_Type_Constraints
117デフォルトの名無しさん:2011/11/05(土) 14:42:47.56
なるほど、Str|Intのほうが分かりやすくて親切かもと思ったけど、Strがある時点でNumも許容されちゃうからダメですね。
ありがとうございました。
118104:2011/11/05(土) 16:49:36.33
>>114
ありがとうございます。
参考にさせていただきます。
119デフォルトの名無しさん:2011/11/06(日) 21:30:26.49
正規表現で /$self->method/とやっても$selfだけ展開されちゃってて、教えてもらったのが
@{[$self->method]} なんですが、これってどういう理屈で動いてるんでしょうか?
120デフォルトの名無しさん:2011/11/06(日) 21:46:06.94
my $arrayref = [ $self->method ];
/@{$arrayref}/
121119:2011/11/07(月) 01:10:07.93
えぇぇ、、、、それはなんか微妙ですね、、、、
他に分かりやすい方法ってないんでしょうか。
122デフォルトの名無しさん:2011/11/07(月) 01:53:17.22
>>119
なんだか変な方法で展開してるね・・・
${self->method}で十分だと思うんだけど・・・
わざわざ、$self->methodの値を配列のリファレンスにして、
それをデリファレンスしてる・・・
意味があるんだろうか・・・俺も教えてほしい
123デフォルトの名無しさん:2011/11/07(月) 02:06:16.44
>>122
おもしろくないぞ。
124デフォルトの名無しさん:2011/11/07(月) 02:08:02.26
print "${\( some_func() )}"
125デフォルトの名無しさん:2011/11/07(月) 02:19:10.91
if ($string =~ $self->method) {
  ...
}
126デフォルトの名無しさん:2011/11/07(月) 02:57:07.87
>>123
いや、まじめなんだけど・・・
それが配列リファレンスだったとしても、
@{$self->method}で十分だと思うし・・・

どういう事なのですか?教えてください
127デフォルトの名無しさん:2011/11/07(月) 03:46:57.00
まず>>122、${hoge} と ${self->method} とでは ${ } の意味合いが違う。
前者は $hoge だが、後者は self->method の戻り値をスカラーリファレンスと見做してデリファレンスするという意味になる。
しかし self->method なんてものは元々の話に出ていないので、見当違い。

次、>>126。$self->method の戻り値は配列リファレンスじゃなくて単品の文字列だから、
@ で配列にデリファレンスする前に [ ] で囲って要素1つの配列リファレンスに仕立ててあげる必要があるわけ。
128デフォルトの名無しさん:2011/11/07(月) 05:50:46.03
>>127
あぁそっか、大きな間違いをしてた
$self->methodはサブルーチンのリファレンスだったね

しかし変な評価の仕方だな〜って思って見なおしたけど、
言われてみれば、この形・・・
CGIとかでHTMLをヒアドキメントで書いた時、
その中で関数を実行する時に、この形書いた事があったや・・・
勉強になりました
129デフォルトの名無しさん:2011/11/08(火) 00:01:09.30
ファイルポインタを指定した行の先頭に移動させるにはどうしたらいいんですか?
seekだとバイト数でしか指定できないし

$count=0;
while(<IN>){
$count++;
if($count==$gyousuu){
last;
}
}

これだとファイルの行数が多いほどループ回数が多くなるから重くなる
だからいっきに飛びたいんです
130デフォルトの名無しさん:2011/11/08(火) 01:03:30.79
>>129
そもそも何行目かってのは
改行コードが何回出たかを数えないと特定不能

先頭から順番に読んで改行を数えるか
ファイル丸ごとリストに読んでから添字で飛ぶかしかない

ぶっちゃけそのままの方法が最善じゃないか?
131デフォルトの名無しさん:2011/11/08(火) 01:07:09.14
>>129
@list = <$fh>;
とかやって配列で扱う
pushとpopでぽぽぽぽーん
132デフォルトの名無しさん:2011/11/08(火) 01:10:56.87
>>129
$countとかいう不気味なカウンタ付けてるのが気になる
行数カウントなら自前で用意しなくても $. がある
相当な素人っぽいから、そこらの本やらサイトやらperldocやらを読んでみたほうがいい
133デフォルトの名無しさん:2011/11/08(火) 11:49:25.93
>>129
メモリに制約がないなら>>131でいいんじゃないの?

>>132
$.を使ったってやることは一緒でしょ。
134デフォルトの名無しさん:2011/11/08(火) 12:17:14.78
>>132
おれはperl歴6年だぜ
135デフォルトの名無しさん:2011/11/08(火) 12:35:36.94
>>134
たったの6年でドヤ顔されても困るんだがw
136デフォルトの名無しさん:2011/11/08(火) 14:32:42.45
>>129
適当なサイズのバッファ単位で読めば read(2) の回数は減るかもしれない。
http://perldoc.jp/docs/perl/5.10.1/perlfaq5.pod#How32do32I32count32the32number32of32lines32in32a32file63
http://www.din.or.jp/~ohzaki/perl.htm#File_Tail
http://perldoc.jp/func/read
http://perldoc.jp/func/seek
http://perldoc.jp/func/sysread
http://perldoc.jp/func/sysseek

自前で逐一書きたくなければ代わりにやってくれる道具を使う。
http://perldoc.perl.org/Tie/File.html
http://perldoc.jp/docs/modules/DB_File-1.805/DB_File.pod#DB_RECNO

もしくはファイルフォーマットを固定長レコードに変えて位置を計算で出せるようにする。
137デフォルトの名無しさん:2011/11/08(火) 18:07:15.44
>>134
俺は13年だぜ(キリッ

しかし別に13年ずっとperlじゃないから、
ぜんぜん詳しくなく普通くらいなんだぜ!
138デフォルトの名無しさん:2011/11/08(火) 18:23:51.81
出ました『普通』!!
『普通』ってどれくらい?
139デフォルトの名無しさん:2011/11/08(火) 18:34:57.86
140デフォルトの名無しさん:2011/11/08(火) 18:45:57.57
>>138
print "hello world"; (ドヤ
141デフォルトの名無しさん:2011/11/09(水) 13:44:58.03
文字列を直接スカラー変数にする方法はどのようにするのでしょうか?

$array = [ "a", "b", "c" ];
$hash = { a => "1" };
$scalar = ?? #my $string = "a"; $scalar = \$string; を一度にやりたい
142デフォルトの名無しさん:2011/11/09(水) 13:55:48.82
my $string = "a";
my $scalar = \$string;
print $scalar."\n" ;

my $ref = \("a") ; # ココ!!
print $ref."\n" ;

こういうの?
143デフォルトの名無しさん:2011/11/09(水) 13:59:40.48
単一の文字列リテラルに対してなら括弧いらんぞ
144デフォルトの名無しさん:2011/11/09(水) 14:51:26.01
>>143
どうしてこういうヤツは例を上げれないの?
質問スレにお前は必要なの?
145デフォルトの名無しさん:2011/11/09(水) 15:21:46.02
こういうことかな。めったに使わない気はする。
 $ref = \ "a"
 print $$ref;
スカラーリテラルへのリファレンスなんて生成できるのか。
Perl 本体のドキュメントにそういう例は見当たらない(あったら教えて)が、
『プログラミングPerl』(Vol.1)「8.2.1 逆スラッシュ演算子」に一つだけ
 $constref = \186_282.42;
という例がある。
146デフォルトの名無しさん:2011/11/09(水) 15:52:40.17
perlの本とかにはねーなー
でもC言語なら説明があるっしょ
文字列はアドレスを値として持つ式だ、とかの
147143:2011/11/09(水) 16:03:25.19
perlref にこんなんあるよ。
 $refrefref = \\\"howdy";
 print $$$$refrefref;

無名スカラーリファレンスそれのみを単独で使うシーンはあまりないが、
モジュールなどで通常の文字列と区別するための印として使うことがままある。
たとえば DBIx::Class::Row の update メソッドは、通常、
 $row->update({ last_modified => '2011-11-09 00:00:00' });
のようにして使い、値は SQL 側で安全な文字列として扱えるよう自動的にクオートされるが、
 $row->update({ last_modified => \'NOW()' });
のようにスカラーリファレンスを渡した時はクオートしないという仕様にすることで、
大きくコードを変えずに SQL の NOW() 関数を実行することもできるようになっている。
148デフォルトの名無しさん:2011/11/09(水) 16:04:04.42
この本にありそうかな?
「すぐわかるオブジェクト指向Perl」 深沢千尋 2008
http://www.supee.jp/sop/contents.html

2-4 名もないスカラー~無名スカラーリファレンス
のところがそれっぽい
ただ、「スカラー変数のリファレンスはあまり役に立たない 」とズバリ書かれてる

でもその後に無名配列、無名ハッシュ、そして無名関数と続いて、
最後にはクロージャに行きつくはずだから、
無名スカラーのリファレンスは、かならず説明しなきゃーならないモンなんだろう
149141:2011/11/09(水) 16:25:07.58
おお、たくさん議論されている。
ありがとうございます。
普段使う分にはあんま意味なさそうですよね。

今回やりたいことは、モジュールの引数が文字列のリファレンスを要求される場合に一発で書きたいと思っていました。
150デフォルトの名無しさん:2011/11/09(水) 16:34:45.07
定数を作るのに役立つと、どっかのサイトで見た記憶がある

*PI = \3.14;
print $PI;
$PI = 3; # エラー
151デフォルトの名無しさん:2011/11/09(水) 16:37:00.27
>>145 >>150
http://perldoc.jp/docs/perl/5.10.0/perlmod.pod#Symbol32Tables
> シンボルテーブルの別の使い方は、「定数」スカラを生成するためのものです。
> *PI = \3.14159265358979;

constant プラグマやプロトタイプ宣言による定数は関数なので文字列中に埋め込みにくい。

#!/usr/bin/perl -w
use strict;
sub CONST () { 'foo' }
our $Const; *Const = \'foo';
print join ' ', 'bar', CONST, $Const, "baz\n";
print "bar ${\ CONST() } $Const baz\n";
$Const = 'quux'; # Modification of a read-only value attempted at ...
152デフォルトの名無しさん:2011/11/09(水) 16:43:53.86
スカラ変数にblessするのをどっかで読んだがどこかは忘れた
153デフォルトの名無しさん:2011/11/09(水) 16:56:53.79
定数なら内部フラグを操作する関数を利用する手もあるね

my $PI = 3.14;
Internals::SvREADONLY($PI, 1);
154デフォルトの名無しさん:2011/11/09(水) 19:16:06.96
定数は関数にするってのはマズいのか?
155デフォルトの名無しさん:2011/11/09(水) 19:23:28.50
ちょっと何言ってるかわかんないです。
156デフォルトの名無しさん:2011/11/09(水) 20:00:34.56
>>155
sub HOGEHOGE() { 10; }
157デフォルトの名無しさん:2011/11/09(水) 21:34:30.76
>>154
遅くならない?
158デフォルトの名無しさん:2011/11/09(水) 21:40:42.08
>>157
コンパイル時に展開されるので速くはなっても遅くはならない。
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod#Constant32Functions
159デフォルトの名無しさん:2011/11/10(木) 00:12:17.58
パ・パ・パパッパ〜Perlライス
160デフォルトの名無しさん:2011/11/11(金) 09:42:44.41
インストールされているモジュールの一覧を確認したいと思っています。
しかし下記を実行しても
use lib
した
'./local1/lib'や'./local2/lib'
にインストールしているモジュールが出力されないようです。
use lib
で設定したパスも検索できるようにするにはどのようにしたら良いのでしょうか?

#!/usr/bin/perl
use lib (
'./local1/lib',
'./local2/lib',
);

use ExtUtils::Installed;

my $ei = ExtUtils::Installed->new;
print for $ei->modules;
161デフォルトの名無しさん:2011/11/11(金) 12:57:46.22
162160:2011/11/11(金) 17:14:09.51
>>161
new()の所で設定できるんですね。
解決しました。ありがとうございます。
163デフォルトの名無しさん:2011/11/11(金) 21:37:08.92
my $output = `/bin/ls -ls`
とやって、$outputの中身を一行ずつ処理したいのですが、どう書けばいいですか?
while (<>) {
一行ずつ処理;
}
みたいな感じです。

164デフォルトの名無しさん:2011/11/11(金) 22:37:48.75
>>163
my @output = `/bin/ls -ls`;
これで、配列outputの各要素に1行ずつ格納できる。
それをどう処理するかは、outputの扱い次第。
165デフォルトの名無しさん:2011/11/11(金) 22:44:29.58
>>163
while(<>) での <> をダイアモンド演算子と呼ぶ。
普通のファイルハンドラならダイアモンド演算子の部分を
<FH>とか<$fh>などと書けばいいのであるが、
$outputというスカラで受け取ってはどう書くのが分からない……のだとする。

とすれば>>164の言う通り結果を配列で受け取って、

for (@output) {
    #処理($_が使える、$.は使えない)
}

のように、forで配列を書いて一行ずつ処理すればいい。
166デフォルトの名無しさん:2011/11/11(金) 22:51:06.82
>>163
my @output = `/bin/ls -ls`;
foreach my $temp ( @output ){
# $tempが配列の各要素として扱える。
}
167デフォルトの名無しさん:2011/11/11(金) 23:30:30.31
質問者ではないんだけど、リストコンテキストだから丸飲みってことだよね。
普通のファイルハンドルみたいに一行ずつメモリに読み込めないのだろうか。
168デフォルトの名無しさん:2011/11/11(金) 23:40:02.37
open my $fh, '-|', '/bin/ls -ls';
while (<$fh>) {
print "$. : $_";
}
169デフォルトの名無しさん:2011/11/11(金) 23:44:03.07
great!
thank you for the quick response.
you guys are awesome!
170デフォルトの名無しさん:2011/11/11(金) 23:57:57.17
Glad to help you. I wish this was StackOverflow so that I could get a +1 or more.
171デフォルトの名無しさん:2011/11/12(土) 11:49:12.12
日本語でおk
172デフォルトの名無しさん:2011/11/12(土) 12:30:04.70
>>169は中学生?
173デフォルトの名無しさん:2011/11/13(日) 12:38:46.79
http://www.nicovideo.jp/watch/*にアクセスしたあと
10秒以内に5回
http://flapi.nicovideo.jp/api/getflv/sm*
にアクセスするようにしたいんだけど
174デフォルトの名無しさん:2011/11/13(日) 12:57:35.48
>>173
そうか。
175デフォルトの名無しさん:2011/11/13(日) 13:04:51.13
どうやればいいのかさっぱりわからん
176デフォルトの名無しさん:2011/11/13(日) 13:35:57.05
177デフォルトの名無しさん:2011/11/14(月) 10:40:12.47
my $val = 1 / 3;
say $val; # 0.333333333333333
say $val * 3; # 1

これを1ではなく、0.999999999999999として扱いたい場合どうすればいいでしょうか
178デフォルトの名無しさん:2011/11/14(月) 10:55:43.44
>>177
どっかの桁で四捨五入する。
179デフォルトの名無しさん:2011/11/14(月) 11:32:28.67
Math::BigInt
Math::BigFloat
180デフォルトの名無しさん:2011/11/14(月) 13:08:33.54
UTF8の文字列を[0-9a-z_]+のみに変換して、それを元に戻したいです。

my $word = 'フルーツ'; #UTF8
$word = unpack('H*', $word); #$wordは「d5ebfcc4」
$word = pack('H*', $word); #←では$wordが元に戻らない。
とかやってみましたがうまくいかず、そもそもやり方がわかりません。
標準関数のみで実装する方法があれば教えてください。
181180:2011/11/14(月) 15:56:56.41
今まで試行錯誤続けて、いったんUTF8フラグを外すとちゃんと動作しました。
182デフォルトの名無しさん:2011/11/14(月) 15:58:36.03
pack "H*" とかだと[0-9a-z_]じゃなくて[0-9a-f]になっちゃうけどそれでもいいのかい
183デフォルトの名無しさん:2011/11/14(月) 16:05:50.23
>>181
utf8フラグを外さずに処理したいなら

use Encode;

my $word = unpack('H*', encode('utf8', 'フルーツ'));
# ...
$word = decode('utf8', pack('H*', $word));

とか
184180:2011/11/14(月) 16:17:56.04
>>182-183
ありがとうございます。範囲内に収まってたらOKってことで、解決しました。

あれ、でも自分で書いたのが>>183さんの方法と同じ感じだ
Encode::encode('utf8',$word);でフラグ外れるものと思ってた
185デフォルトの名無しさん:2011/11/14(月) 16:42:14.09
>>184
ああ、utf8フラグを外すっていうのを
use utf8;
を使わないって解釈しました
186デフォルトの名無しさん:2011/11/14(月) 17:06:09.89
use utf8;
use feature qw(say);

my $word = 'フルーツ';
say $word; #=> 'フルーツ' (UTF8フラグ有)

my $hex = unpack 'U0H*', $word;
say $hex; #=> 'e38395e383abe383bce38384'

my $packed1 = pack 'U0H*', $hex;
say $packed1; #=> 'フルーツ' (UTF8フラグ有)

my $packed2 = pack 'H*', $hex;
say $packed2; #=> 'フルーツ' (UTF8フラグ無)
187デフォルトの名無しさん:2011/11/14(月) 20:43:40.86
要素が文字列の配列が空であるかを調べたいのですが
条件に@array eq ""とやってみてもうまくいきません
いい方法があれば教えて下さい
188デフォルトの名無しさん:2011/11/14(月) 20:49:07.12
> 要素が文字列の配列が空であるか
???
189デフォルトの名無しさん:2011/11/14(月) 21:20:00.35
すいません
空の配列(初期化した状態)かどうか判断したいということです
お願いします
190デフォルトの名無しさん:2011/11/14(月) 21:21:05.33
うんでf
191デフォルトの名無しさん:2011/11/14(月) 22:01:13.50
空?
if (@ary) {

}
ってことかな。
ifはスカラーコンテキストだから、要素数が返ってくる。一個も入ってないなら0だからifは偽になる。
192デフォルトの名無しさん:2011/11/14(月) 23:07:53.46
もしかして、>>187は変な方法で初期化してるんじゃなかろうか。
>>190がエスパーな気がした。
193デフォルトの名無しさん:2011/11/14(月) 23:24:15.59
if(hairetsu is sky) {
}
194デフォルトの名無しさん:2011/11/14(月) 23:30:17.72
配列・イン・ザ・スカイ・ウィズ・ダイアモンド演算子
195デフォルトの名無しさん:2011/11/15(火) 02:12:44.48
すみません寝てしまいました
defineというもの自体知らなかった初心者ですのでもう一度基礎から勉強しようと思います
初期化は@array = ();とやってました

>>191
わかりやすい解説ありがとうございます
おかげでやりたいことができました
196193:2011/11/15(火) 03:25:16.03
どういたしまして
197デフォルトの名無しさん:2011/11/15(火) 04:46:22.78
>>196
おまえじゃないw
198デフォルトの名無しさん:2011/11/17(木) 00:16:29.37
activeperlでsleepさせている最中にwindowを休止させます
次に復帰させると、休止した時点ではまだsleepの残り時間はあったのに、
いきなりsleepから抜けて処理を再開してしまいます
しかも、ログインする前に

休止しても残り時間を保持させる方法はありませんか
199デフォルトの名無しさん:2011/11/17(木) 13:29:49.80
my $hoge = { hoge => 'HOGE' };
my $fuga = { huga => 'FUGA' };
my $piyo = $fuga;

print $fuga; #$fugaのリファレンスアドレス出力

上記があった場合にリファレンスのアドレスを変えずに追加するには

$fuga->{
200デフォルトの名無しさん:2011/11/17(木) 13:41:11.55
>>199
途中で書き込んでしまいました。。

リファレンスのアドレスを変えずに沢山の要素を追加したいです。

@これではアドレスが変わってしまいます。
my $hoge = { hoge => 'HOGE' };
print "$hoge\n";
$hoge = {
%$hoge,
huga => 'HUGA',
piyo => 'PIYO',
};
print "$hoge\n";

Aこれだとアドレスは変わりません。
my $hoge = { hoge => 'HOGE' };
print "$hoge\n";
$hoge->{fuga} = 'FUGA';
$hoge->{piyo} = 'PIYO';
print "$hoge\n";

--------------------------------
@のようにできると書くのが楽だし、1処理で済むので処理も早いのではないかと思っています。
しかしアドレスを変えずにリファレンスに追加するにはAの方法しかないのでしょうか。
201デフォルトの名無しさん:2011/11/17(木) 13:57:34.33
書くのが楽かどうかは趣味の問題だが、どうみてもハッシュをいったん
ばらして作り直す方が遅そうだぞ。


202デフォルトの名無しさん:2011/11/17(木) 14:02:36.01
203デフォルトの名無しさん:2011/11/17(木) 14:13:49.79
「アドレスが変わってしまう」わけではない。
$hoge = {...} は「新しいハッシュリファレンスを作って$hogeに代入」であって、
元の $hoge とは全く別の物を参照してるんだから違うアドレスになって当たり前。
「$hoge の参照先のハッシュに要素を追加する」んなら
%$hoge = (%$hoge, fuga => 'FUGA', piyo => 'PIYO');
とすればいい。
204デフォルトの名無しさん:2011/11/17(木) 21:22:00.11
あ〜んまで文字について順に処理する方法が知りたいです
例えばある文字列にあが含まれるかチェック
いが含まれるかチェック
うが含まれるかチェック
という感じです
205デフォルトの名無しさん:2011/11/17(木) 21:25:32.34
50個ぐらい手書きで問題ない
206デフォルトの名無しさん:2011/11/17(木) 22:42:31.73
あからんまで手書きで問題ない
'あ'..'ん'は動かんのかね

my @kana = qw /あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ わ を ん が/ ;
my $str = "月は東に日は西に僕は友達が少ない" ;

my %seen;
my @dup = (grep { $seen{$_} >= 2 } grep { ++$seen{$_} > 1 } (@kana, (split //,$str))) ;

print encode ("cp932", (join "",@dup)) ;
207デフォルトの名無しさん:2011/11/17(木) 22:58:37.03
% perl -CO -Mutf8 -e 'print chr for ord "ぁ" .. 3+ord "ん"'
ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヴ??
208デフォルトの名無しさん:2011/11/17(木) 22:59:04.49
map { chr } ord('あ') .. ord('ん')
209デフォルトの名無しさん:2011/11/17(木) 23:50:21.67
whileはきらい
210デフォルトの名無しさん:2011/11/17(木) 23:53:46.60
orz(あ)
211デフォルトの名無しさん:2011/11/18(金) 00:06:31.13
一人のNewbieがGuruに問うた。
「whileにも再帰性があるのでしょうか?」
Guruは答えた。
「無」

Newbieはまた問うた。
「あらゆるものに再帰性はあるとされるのに、なぜwhileにはないのでしょうか?」
Guruはまた答えた。
「カウンタ、インクリメントなどの余分があるからだ」

Newbieは更に問うた。
「再帰性があるならなぜwhileはこの姿のままなのでしょうか?」
Guruは更に答えた。
「自他ともに再帰性があることを知りながら、無限を為すが故である」
212デフォルトの名無しさん:2011/11/18(金) 12:32:50.63
perlのインストール中にエラーが起きました。

wget http://www.perl.com/CPAN/src/perl-5.10.0.tar.gz
tar zxvf perl-5.10.0.tar.gz
cd perl-5.10.0
./configure.gnu prefix=/home/user/local
make
make test →ここでエラー

エラー内容はこれです。

lib/CGI/t/function............................................FAILED at test 14
lib/CGI/t/request.............................................FAILED at test 15

lib/CGI/t/function.tの14番目のテスト、requestの15番目のテストは下記のようになっています。

test(14,url() eq 'http://the.good.ship.lollypop.com:8080/cgi-bin/foo.cgi',"CGI::url()"); #function.t
test(15,$q->url eq 'http://the.good.ship.lollypop.com:8080/cgi-bin/foo.cgi',"CGI::url()"); #request.t

ここに書かれているURLはなんだろうと思ってブラウザでttp://the.good.ship.lollypop.com:8080/cgi-bin/foo.cgiに
アクセスしてみましたが、「正常に接続できませんでした」となります。
FAILEDの原因はこの接続できないことが原因なのでしょうか?

これらのFAILEDを回避する方法を教えてください。

※スレチガイならお手数ですが誘導お願いします。
213デフォルトの名無しさん:2011/11/18(金) 12:54:19.57
URL はアクセスするのに使ってるわけじゃないから関係ない
何が原因でテストがこけてるかは知らんが、
そもそもなんでわざわざソースからビルドするのに 5.10.0 なんて古いもん使うの?
214デフォルトの名無しさん:2011/11/18(金) 21:38:08.78
新しいかどうかよりも、
ちゃんとテストされた環境かどうかのほうが
重要だからだろ。
215デフォルトの名無しさん:2011/11/18(金) 21:45:48.43
インストールできなかったらちゃんとテストされてても意味がない件について
216デフォルトの名無しさん:2011/11/18(金) 21:51:02.68
逆に言えば、インストールできればちゃんとテストされていて意味がある。

だからインストールするんだろう?
217デフォルトの名無しさん:2011/11/18(金) 23:52:58.14
perlをインストールしようとしてて、いつの間にかCGI::url()のテスト
のエラー回避の質問になっている件
218デフォルトの名無しさん:2011/11/19(土) 13:10:04.73
え?
219デフォルトの名無しさん:2011/11/19(土) 13:35:46.21
つ SKIP
220デフォルトの名無しさん:2011/11/19(土) 15:19:40.24
え?
221デフォルトの名無しさん:2011/11/19(土) 17:24:20.72
>>198
以下のように時間を計測しながらsleepさせるとどうなりますかね?

my $sleep_time = 100;
my $end_time = time + $sleep_time;

sleep $end_time - time while $end_time > time;
222デフォルトの名無しさん:2011/11/19(土) 17:30:13.86
>>212
スキップして先に進め
test(14,1,"SKIP CGI::url()"); #function.t
test(15,1,"SKIP CGI::url()"); #request.t
223212:2011/11/22(火) 13:36:21.87
>>213-217

改版が終わった安定した偶数バージョンを使いたいと思い5.10に行きつきました。
しかしよく調べると、5.10.1がありましたのでこれを使用することににました。
コメントありがとうございました。

>>219,221
最初SKIPというコマンドがあるのかと思って調べていましたがみあたらず、221で1の所で
判定しているんだということがわかり、SKIP方法が理解できました。
ヒント&具体的な解説まであり助かりました。

遅くなりましたが、お礼&無事インストールできたことを報告しておきます。
224デフォルトの名無しさん:2011/11/22(火) 18:41:56.60
linuxにcpanで下記のようにHTML::Template::Proをインストールしました。

perl -MCPAN -e 'install HTML::Template::Pro'

インストールはできましたが、YAMLが無いというようなワーニングが出ました。
気になって下記を実行しましたが、以下のようなメッセージで落ちました。

perl -MCPAN -e 'install YAML'
Can't locate object method "install" via package "YAML" at -e line 1.

下記では、YAMLを読まない設定にした。とありました。

ttp://d.hatena.ne.jp/hsmnet/20110409/1302367029

YAMLを調べてみるとマニュアルあたりをさわるのに使うもののようですが、これは読まないようにして良いのでしょうか。
225sage:2011/11/23(水) 22:56:05.45

Perl で DOM Traverse というか、HTML Parse というか、、、
もっというと、
ようは、
$html = &innerHTML($document, "#THE_ID");
みたいなことがやりたいんですが、
何が一番いいでしょうか。

HTML::TreeBuilder/HTML::Parserなど、CPANで
いろいろ探したのですが、jQuery の便利さに慣れた身からすると、
「わざわざサーバのCGIまでつかってこの程度かよ」
というのしかないのですが、、、、。
226デフォルトの名無しさん:2011/11/23(水) 23:03:52.25
XML::DOM
227デフォルトの名無しさん:2011/11/23(水) 23:16:44.33
CSS Selector って言葉を知らんとみえる
228デフォルトの名無しさん:2011/11/23(水) 23:18:32.09
確かにjQueryは便利すぎるよな。
229sage:2011/11/24(木) 00:19:09.28
225です。
うーん、あまりいい解決策がないようですが、、、。

いま候補にあるのは、PHPをコマンドラインで使う、
というなにか違いすぎるやり方です。

どう考えても、それなら Perlだろ、
とおもいますが。

なにか、いい DOM/HTML Parser 教えてください!!!!!!。

230デフォルトの名無しさん:2011/11/24(木) 00:33:17.31
使った事はないがこういうものも既にある。
http://search.cpan.org/search?mode=all&query=pQuery
231デフォルトの名無しさん:2011/11/24(木) 02:02:09.29
単純なことならHTML::TokeParserがお手軽で好きかな
232デフォルトの名無しさん:2011/11/24(木) 14:36:26.49
サブルーチンを配列に格納したいです。
以下のようなので、barと表示して欲しいのですが、
CODE(0x1955b18)のような表示になります。
関数を配列に格納し、実行することは可能でしょうか?


@func;
push(@func, sub{return "bar";});
print $func[0];
233デフォルトの名無しさん:2011/11/24(木) 14:41:45.75
例えば

my @func;
push(@func, sub{return "bar";});
print &{$func[0]};
234デフォルトの名無しさん:2011/11/24(木) 14:42:15.73
print $func[0]->();
print $func[0]();
print &{$func[0]};
235デフォルトの名無しさん:2011/11/24(木) 14:48:08.38
>>233-234
ありがとうございます。
236sage:2011/11/24(木) 15:13:34.49
225です。

>>230 は結構よさげかも、、、。
でも、さがしたら 同名(実装はまったく別)のものがPHPにもあり、
さらに、検索するとそのほうが上に来る、というトホホぶり。

いわゆる「スクレイピング」の話しなわけですが、
なにかいい解決策ありませんか? > みなさま。

237デフォルトの名無しさん:2011/11/24(木) 15:58:17.30
scraper使う
xpath使える
238sage:2011/11/24(木) 16:45:25.42
225です。

Web::Scraper ・・・これはいい!!!いきなり決定打です。
作っている人も有名な人っぽいですし。

ちなみに、ほかの候補ももしあればぜひ。
239デフォルトの名無しさん:2011/11/24(木) 22:43:43.22
そんなことよりなんで名前欄もsageにしているのか気になる
240デフォルトの名無しさん:2011/11/25(金) 09:16:39.32
2ch初心者 && 「sageを入れる」ことは覚えている && sageをどっちに入れるか覚えていない

じゃね
241デフォルトの名無しさん:2011/11/25(金) 10:59:24.23
Web::Scraperできまりだな。
242デフォルトの名無しさん:2011/11/25(金) 13:46:26.11
フォームで入力したパスワードを暗号化して元に戻すサブルーチンってありますか?

暗号化しないで入力したパスワードをそのまんまhiddenで書き込むページまで持っていくのって
好ましくないんですか?
243sage:2011/11/25(金) 13:50:03.63
https://github.com/tokuhirom/Web-Query

こここ、、、これもいいかも、、、。

うーん、どうしよう。
244デフォルトの名無しさん:2011/11/25(金) 20:46:04.70
引数でアスタリスクを渡すにはどうしたらいいんでしょう?

hoge.pl *
とやったら $#ARGV != 0 になったようです。
(たぶん-1?)

hoge.pl \*
とやったら*を渡したことになりました。

しかしglobのワイルドカードの内容を指定
させたいので、いちいち\*とか利用者に
書かせるのはかっこ悪いですw

245デフォルトの名無しさん:2011/11/25(金) 20:49:23.52
>>244
シェルの勉強してこい、な
246デフォルトの名無しさん:2011/11/25(金) 21:37:41.34
>>244
hoge.pl "*"
247デフォルトの名無しさん:2011/11/25(金) 22:09:11.60
>>245
シェルはコマンドプロンプトです。
248デフォルトの名無しさん:2011/11/25(金) 22:21:51.38
はい
249デフォルトの名無しさん:2011/11/25(金) 23:24:38.63
オススメのIDE教えろ糞ども
250デフォルトの名無しさん:2011/11/25(金) 23:36:45.41
V・I・M!V・I・M!
251デフォルトの名無しさん:2011/11/25(金) 23:40:18.15
252デフォルトの名無しさん:2011/11/25(金) 23:46:27.60
Visual Studio
253デフォルトの名無しさん:2011/11/26(土) 02:01:06.15
イデ?
254デフォルトの名無しさん:2011/11/26(土) 21:56:33.75
CGIに値を渡したいときの方法で質問です。

@ttp://example.com/index.cgi/1/2/

と、$PATH_INFOで渡すのと

Attp://example.com/?a=1&b=2

と、.htaccessに「DirectoryIndex index.cgi」を書いてPOST風?(呼び方がわからない)で取得する方法があると思いますが、
みなさんどちらを使っていますか?
どちらを使おうか悩んでいます。
(最初、index.cgiを消して$PATH_INFOで渡せればすっきりするなと思いましたが、それだとttp://example.com/1/2/となって
index.cgiを読ませる場所と$PATH_INFOの切り分けができないと気づいて今に至っています)

個人の好みになるかもしれませんが、こっちをこんな理由で使っているという感想などいただけたら参考にしたいと思います。
ちなみにformタグではGETを使用しています。
255デフォルトの名無しさん:2011/11/26(土) 22:11:12.04
>>254
>>1の一行目を声を出して50回は復唱しろハゲ
256254:2011/11/26(土) 22:24:28.56
>>255

CGI専用スレがあったんですね。
そちらに行ってきます。
失礼しました。
257デフォルトの名無しさん:2011/11/27(日) 16:11:15.29
原書のプログラミングPerl 4版が12月に出た。
翻訳されるのは2年後?
258デフォルトの名無しさん:2011/11/27(日) 17:54:15.56
12月に出た、ってタイムトラベラー乙。まだ出てないよね?
http://shop.oreilly.com/product/9780596004927.do
cond 先生が第 3 版の訳をチョチョイと直してすぐ出版、
とはいかないか。
259デフォルトの名無しさん:2011/11/27(日) 22:59:59.42
Larryがこれまで篭もっていたのは日本語学習のためだとしたら、
日本語版も同時発売になるかも知れないよ。少なくともUnicode
については今までより学んでいると思う。たぶん。
260デフォルトの名無しさん:2011/11/28(月) 01:19:17.89
そいつはなんとも心強い。
自分がPerlの好きな日本人で良かった。
261デフォルトの名無しさん:2011/11/28(月) 01:43:14.48
そして裏切られるw
262デフォルトの名無しさん:2011/11/28(月) 12:15:15.23
久しぶりにactiveperlインストールしたら、絶対パスじゃないとファイルの読み書きが出来ない

open(FILE,'>C:\perl\test.dat');

はおkだけど

open(FILE,'>./test.dat');

はfalse

windows7なんですが相対パスでファイルにアクセスする方法ありますか?
263デフォルトの名無しさん:2011/11/28(月) 13:00:38.35
>>262
その場所にファイルを作る権限はあるの?
264デフォルトの名無しさん:2011/11/28(月) 13:14:49.07
>>263
Administratorでログオンしてるので問題ないと思ってましたがperlディレクトリに読み取り専用チェック入ってました。
チェック外しても次にプロパティ開くとまたチェック入ってる…orz
perlどうこうってよりwindows7の問題でしょうか
XPの時は相対パスで使えてたんですが
265デフォルトの名無しさん:2011/11/28(月) 14:18:50.09
しつもんです。

コマンドラインからCPANと打ち込み起動するプログラムと、
perl -MCPAN で起動するCPANモジュールのシェルって違いはなにかあるのでしょうか?
266デフォルトの名無しさん:2011/11/28(月) 14:40:22.18
>>262-264
絶対パスでファイル作成できてるんだったら権限関係なくね?
267デフォルトの名無しさん:2011/11/28(月) 17:03:01.15
>>265
内部実装を直接呼んでるか、
ツールとして整えられたコマンドを使うかの違い。
内部的には、cpanコマンドはCPAN.pmを呼んでる。

あと最近はcpanminusがナウい
268デフォルトの名無しさん:2011/11/28(月) 19:50:10.04
perlでは、空文字列が偽になるのはいいのですが、「"0"」も偽になるみたいで困ってます。
「"0"」は長さ1の文字列だから真になってほしいのです。
$s = "0";
print $s || "X"; # 0 が表示されてほしいのに X が表示される
これってどうすればいいんでしょうか。
269デフォルトの名無しさん:2011/11/28(月) 19:55:24.55
>>268
print ($a eq "" ? 'X' : $a);
270デフォルトの名無しさん:2011/11/28(月) 19:56:20.55
$sが必ず文字列なら
print $s ne "" ? $s : "X";
とか
271デフォルトの名無しさん:2011/11/28(月) 20:02:26.38
        undef  ""   0
defined $s  偽   真   真
$s ne ""   警告  偽   真
$s         偽   偽   偽
272デフォルトの名無しさん:2011/11/28(月) 21:48:44.48
>>268
length
273デフォルトの名無しさん:2011/11/28(月) 22:07:13.26
お前ら。

Perl歴1年の俺に、
|| の代わりに // を使えばいいって
教えられる気分どう?
274デフォルトの名無しさん:2011/11/28(月) 22:08:50.40
>>273
日本語でおk
275デフォルトの名無しさん:2011/11/28(月) 22:10:52.52
276デフォルトの名無しさん:2011/11/28(月) 22:11:46.40
>>262
今時openは3引数にしとけよ。
277デフォルトの名無しさん:2011/11/28(月) 22:12:12.29
昔のPerlで止まってしまって、
最近のモダンなPerlを知らないから、
// のことも知らないんだぜw
ちゃんと勉強しろ。
278デフォルトの名無しさん:2011/11/28(月) 22:13:33.33
>>273
へ〜、知らなかった〜って思って、

my $a = 2;
if ($a eq "1" // $a eq "2") {
  print "1か2だな";
}else {
  print "1でも2でもないな";
}

ってやったら、うまく動かないんですが釣りですかこの野郎
279デフォルトの名無しさん:2011/11/28(月) 22:13:51.56
undef と他の偽値とを区別する話なら// でいいけど(perl >= 5.10 という注釈つきで)、
そうじゃなくて空文字列と 0 を区別する話をしてるんじゃん
280デフォルトの名無しさん:2011/11/28(月) 22:14:26.63
>>278

>>268を読め
281デフォルトの名無しさん:2011/11/28(月) 22:14:50.13
// を覚えたてでうれしくて仕方ないんだろうな。
気持ちはわかる。
282デフォルトの名無しさん:2011/11/28(月) 22:19:24.89
>>273
0とか空文字扱いたい時に||じゃ困るってことだろ。

$v = 0;
$v //= 'default';
print "$v\n";
$v ||= 'default?';
print "$v\n";
283262:2011/11/28(月) 22:58:34.33
>>276
それこそモダンなperlを知らないのでお見苦しくてすみません。
open(FILE,'>','test.dat'); #こんな感じでしょうか

ググった末に警告レベル下げてUAC無効化しても相対パスだとファイル作成できませんでした。
でもその過程でコマンドプロンプトから実行する分には相対パスでも問題ないことが発覚。
CommandLineInterpreterの問題だろうとあれこれ試した結果、perl5.12.4.exeで開けば
大丈夫であることが分かりました。

よく分からないけど相対パス使えるようになったので良しとします。
スレ汚し失礼しました。
284デフォルトの名無しさん:2011/11/29(火) 11:47:40.16
>>267
レスありがとうございます。
気になっていたことがすっきりしました。

cpanminusは後ほど調べてみたいと思います。
ありがとうございました。
285デフォルトの名無しさん:2011/11/29(火) 13:20:28.86
>>283
> open(FILE,'>','test.dat'); #こんな感じでしょうか
openの構文、それぞれのパラメータの意味をきちんと調べたのか?
286262:2011/11/29(火) 13:49:43.06
>>285
open(ハンドル,ファイル); と認識してます。
287デフォルトの名無しさん:2011/11/29(火) 14:37:37.29
>>286
それじゃ引数は2個だろうが。
なんか…根本的に向いてないね。
知識ではなく、物の考え方がね。
288262:2011/11/29(火) 14:48:19.01
3つ目の引数が何を指定するものか、さらっと検索した限りでは分かりませんでした。
指定することがパスの指定方法に影響するのでしょうか?

win機で簡単なスクリプト組む分には古い知識と今の考え方で
不都合ないので失礼します。
289デフォルトの名無しさん:2011/11/29(火) 14:55:39.31
いやそんなの検索しなくてもマニュアルに書いてあるぞ…
290デフォルトの名無しさん:2011/11/29(火) 15:41:57.57
ほんと向いてないね。
291デフォルトの名無しさん:2011/11/29(火) 15:46:04.89
>>283で本人が終了させてんのに粘着する方もどうなんよ
292デフォルトの名無しさん:2011/11/29(火) 15:46:55.86
>>291
本人?w
293262:2011/11/29(火) 16:14:34.70
>>289
なんか荒れてるけどその話付き合った方がいい?
294デフォルトの名無しさん:2011/11/29(火) 16:59:10.40
本人キタ━(゚∀゚)━www
295デフォルトの名無しさん:2011/11/29(火) 17:00:09.85
>>293
偽者は却下
296デフォルトの名無しさん:2011/11/29(火) 21:07:44.70
297デフォルトの名無しさん:2011/11/29(火) 21:46:39.44
CPANモジュールガイドは良本
298デフォルトの名無しさん:2011/11/29(火) 23:35:04.96
左の白いのまじおもしろくねー ヘラヘラしてそう
ウケ狙ってる感ばりばり
Macつかっちゃって
目立ちたがり屋かな

このしのびの服装したやつは まともだね
マジっぽさが よくわかってる日本を
299デフォルトの名無しさん:2011/11/29(火) 23:40:49.69
この前身タイツのアホは「これで真珠だ!」とか思ってねーだろな?
300デフォルトの名無しさん:2011/11/30(水) 15:55:26.04
>>299
よう、びんぼっちゃま。
301デフォルトの名無しさん:2011/11/30(水) 21:49:15.38
CPANモジュールガイドは駄本
302デフォルトの名無しさん:2011/11/30(水) 22:23:05.11
駱駝本?
303デフォルトの名無しさん:2011/11/30(水) 22:43:11.64
>>301
あれ?まじで?
俺はいままでモジュールってほとんど使った事なかったけど、
この本見て、こんな便利なモジュールいっぱいあるのかーって関心したけど・・・

でも、便利なモジュール使いまくると、
もうPerlじゃないね、違う言語になる
304デフォルトの名無しさん:2011/11/30(水) 22:47:28.53
関心→感心
305デフォルトの名無しさん:2011/11/30(水) 22:52:09.62
>>303
同意ですです。
まあ、その人の習熟度に依るんだろうけど。
306デフォルトの名無しさん:2011/12/01(木) 16:56:08.77
正規表現の中に@を使ったらうまくいかなくて\@にしたら動いたけど、
@って何の意味だっけ?
307デフォルトの名無しさん:2011/12/01(木) 16:56:59.77
配列
308デフォルトの名無しさん:2011/12/01(木) 19:52:44.92
Perlは言語というよりCPANにアクセスするためのツールだと思ってる。

>>306
変数として展開されてしまうからな。
メアドの正規表現ならEmail::Valid使った方がいいかも。
309デフォルトの名無しさん:2011/12/01(木) 21:32:55.24
$が展開されるのは判るけど、@なんか展開したって添え字の数になるだけだろうに
310デフォルトの名無しさん:2011/12/01(木) 21:59:29.25
えっ?
311デフォルトの名無しさん:2011/12/01(木) 22:34:01.90
>>303
よくよく読んでみたか?
312デフォルトの名無しさん:2011/12/01(木) 22:43:21.93
>>308
俺は多機能テキストフィルタとして使うかな
313デフォルトの名無しさん:2011/12/01(木) 22:47:31.11
>>311
まだ1/3くらい
実際に試しながら読んでるし・・・
何?後半で恐ろしい雑な説明になってるとか、
突然フォントのサイズが巨大になって内容が薄くなってるとか?
314デフォルトの名無しさん:2011/12/01(木) 22:49:35.70
>>313
著者:あかほりさとる とかかよw
315デフォルトの名無しさん:2011/12/01(木) 22:51:26.19
でも実際、教科書類の余白性は重要だ
316デフォルトの名無しさん:2011/12/02(金) 13:09:41.94
文字列が全て全角カタカナだったらヒットさせる場合は下記でできたのですが、

$word =~ /^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/;

それプラス、「ー」にもヒットさせたいと考えていますが、下記ではうまくいきません。
どのようにしたら良いでしょうか。

$word =~ /^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6\xBC])+$/;
317デフォルトの名無しさん:2011/12/02(金) 13:26:30.40
(A|B|C)
318316:2011/12/02(金) 14:26:41.44

すみません。
文字コードはutf8です。
319デフォルトの名無しさん:2011/12/02(金) 14:59:25.21
てst
320デフォルトの名無しさん:2011/12/02(金) 15:05:56.27
(A|B)
(A|B|C)
タイ━━━━||Φ|(|´|Д|`|)|Φ||━━━━ホ!!!
321日系アメリカ人 ◆japYJPNx6A :2011/12/02(金) 17:14:12.94
ゲーム開発者>>>>Perlエンジニア

 すべてにおいてカス
音楽+絵+プログラミング+ネットワーク

束ねるゲーム開発者は最強(日本を除く)
322デフォルトの名無しさん:2011/12/02(金) 17:26:28.19
>>321
F1レーサー>>>>車の整備士

と、言われてるくらい違和感ある
比べる物が違うだろ・・・
どうせ釣り針垂らすなら・・・

Rubyエンジニア(モダン)>>>>Perlエンジニア(老害)

これくらい大きくないと
323デフォルトの名無しさん:2011/12/02(金) 17:28:11.00
>>322
別所でも暴れてる真性だから触るな
324デフォルトの名無しさん:2011/12/02(金) 17:32:30.86
Rubyそのものは別に悪いとは思わんが、
Ruby厨が大抵目つきが逝ってるのは何故だろう?
325316:2011/12/02(金) 17:53:00.83
>>317,320
解決しました。
ありがとうございました。
326日系アメリカ人 ◆japYJPNx6A :2011/12/02(金) 21:03:43.76
Matzって朝鮮とか韓国人みたいな顔してるよな
アジア顔だな エキゾチック

平面七三分け
327デフォルトの名無しさん:2011/12/02(金) 22:18:51.65
>>326
モルモン教disってるのか?
328デフォルトの名無しさん:2011/12/03(土) 19:23:10.32
痛々しいコテハンと、輪をかけて痛々しい中途半端さな鳥。
でもその鳥のおかげであぼーん設定が楽でよろしい。GJ!!
329デフォルトの名無しさん:2011/12/03(土) 19:41:17.57
jap YahooJPN
330デフォルトの名無しさん:2011/12/03(土) 19:53:19.72
>>328
そういうのについていちいち言及するのをやめるか、せめて対象にアンカー付けてくんない?
NGに一度指定したものは二度と意識しなくて済むようにって連鎖透明あぼーん設定してんだから。
331日系アメリカ人 ◆japuuq4c3Y :2011/12/03(土) 21:46:16.68
物凄い悔しいご反応ですね
332デフォルトの名無しさん:2011/12/04(日) 00:08:21.99
>>330
了解した。
333デフォルトの名無しさん:2011/12/04(日) 02:26:52.83
クソワラタw
334デフォルトの名無しさん:2011/12/04(日) 02:27:09.00
ごめん誤爆
335デフォルトの名無しさん:2011/12/04(日) 10:32:02.70
perl で2ちゃんに書き込むプログラムソースなんかは割りと見かけるけど
p2 通して書き込むプログラムってのは無いの?
336日系アメリカ人 ◆japYJPNx6A :2011/12/04(日) 10:44:10.25
自分で作れよカス
俺の身内はLarryWallだぞ
337デフォルトの名無しさん:2011/12/04(日) 10:45:38.10
在日うぜーよw
338日系アメリカ人 ◆japYJPNx6A :2011/12/04(日) 11:05:32.76
hibari.2ch.net/test/read.cgi/gamedev/1322167021/
ここきて
こいつらがウザい
339デフォルトの名無しさん:2011/12/04(日) 22:51:18.07
なんだかんだ言っても文字列の処理はPerlが一番楽だったんだけど
use utf8すると途端に面倒臭くなる…。
ほんとにみんな使ってるの?
340Perl忍者 ◆M5ZWRnXOj6 :2011/12/04(日) 23:06:34.46
久しぶりだな皆。
トリップの流出で、偽者が暴れまわってるみたいだが気にしないでくれ。
そうだ、めでたい話があるんだが、俺は今年の夏ごろ、livedoorに入社してな。
WEBの企画に携わってて来れなかった。
本名は伏せておくけど、Perlのことなら聞いてくれ。
ある程度実力ついたんで答えられると思うけど。
341Perl忍者 ◆M5ZWRnXOj6 :2011/12/04(日) 23:07:52.71
2週間ごとに1回、出社する程度だよ。
自宅で仕事。
342デフォルトの名無しさん:2011/12/04(日) 23:12:27.12
use utf8は仕方なく使ってるなあ。他にいい方法がないもんで。
343デフォルトの名無しさん:2011/12/04(日) 23:24:41.65
またPerl忍者の偽者か?
バカだからlivedoorなんて入社できるわけないだろ。
344デフォルトの名無しさん:2011/12/04(日) 23:28:18.68
もし本当に入社してたなら、お前こんなトコで明かしたら首切られるぞw
345デフォルトの名無しさん:2011/12/04(日) 23:58:54.66
utf8は使いにくいんで使っていない。
346デフォルトの名無しさん:2011/12/05(月) 00:19:34.35
やっぱりそうだよなぁ。
モダンPerlはuse utf8が必須とか書いてたからびびったわw
元からこんな面倒臭い言語だったなら絶対すぐ投げ捨ててるし。
347デフォルトの名無しさん:2011/12/05(月) 01:13:13.65
マルチバイト文字のことがよく分からないまま、思いつきで
実装してしまったのです。まさかこんなに使いづらいものに
なるとは予想できなかったのです。
348デフォルトの名無しさん:2011/12/05(月) 03:47:58.75
Perlのマルチバイト文字処理はまあまあうまく折り合いつけてる方だと思うよ。
もともとマルチバイト文字列自体が厄介な性質を持つ代物なんだからある程度は仕方ない。

思いつきだったらPHPの方がよっぽど全般にわたって思いつきの実装だらけだし。
まあ次元の違うものを比べてもなんだけど。
349335:2011/12/05(月) 05:01:03.99
perl 初心者が適当にやってみたけど、できない

・・・

my $ua = LWP::UserAgent->new(
agent => "Monazilla/1.00 hoshu-bot.pl/$VERSION",
cookie_jar => {},
);

sub sjis { encode('cp932', $_[0]) }

my $name = '';
my $mail = 'sage';
my $message = 'test';

my $res = $ua->post("http://$host/test/bbs.cgi",
[ bbs => $board_key, key => $thread_key,
FROM => sjis($name), mail => sjis($mail), MESSAGE => sjis($message),
submit => sjis('書き込む'), time => 1, hana => 'mogera' ],
Referer => "http://$host/$board_key/");

・・・

この部分をどう変えたらいいんだろう
風も拗らせたししんどい
350デフォルトの名無しさん:2011/12/05(月) 09:51:58.66
>>339>>342
kwsk
今もソースコードをEUC-JPやらSJISで書き起こしてるの?
351デフォルトの名無しさん:2011/12/05(月) 10:11:48.59
文字コードが何でこんなめんどくさいんですか?
あほくさいですね

よく使えますね
タイムイーター言語ですよPerlは
352デフォルトの名無しさん:2011/12/05(月) 10:15:35.16
元々向いてないこと無理やりさせてるんだから我慢しろって誰かが言ってた
353デフォルトの名無しさん:2011/12/05(月) 10:21:36.47
ヒゲだろどうせ
354デフォルトの名無しさん:2011/12/05(月) 10:59:33.20
use Sample;
Sample->new('$file_name');

上記のようなモジュールを作っています。
これを引数も入れてクラス継承?(下記)で書くにはどのようにすればよいのでしょうか?

use base qw/Sample/;

私が知っている知識だけで書くと、Sampleモジュールにsetサブルーチンを書いて
セットする方法くらいしか思いつきませんが、ダサすぎます。
ちゃんと引数を渡せる書き方があるのではないかと思っているのですが。

use base qw/Sample/;
$sample = set('$file_name'); #1アクション増えてダサい
355デフォルトの名無しさん:2011/12/05(月) 11:31:51.85
つまりコンストラクタのオーバーロードしたいの?
それともそれとは別?
356デフォルトの名無しさん:2011/12/05(月) 11:53:01.81
>>351
文字コードがめんどくさくない言語処理系があるの?
あるなら教えて。後学のために是非。

そういえばjperlでShift JISのみを扱っていた時代は考えることが少なくて多少はラクだったかな。
でもいまどき文字コード変換は避けて通れないからねえ。Shift JIS決め打ちでは済まないわな。
357日系アメリカ人 ◆japYJPNx6A :2011/12/05(月) 12:08:54.60
じゃっぷは文字コードもハンディ 英語もハンディ
かわいそうだね
358354:2011/12/05(月) 13:38:56.98
>>355

それで合っています。
よろしくお願いします。
359デフォルトの名無しさん:2011/12/05(月) 17:21:27.37
正規表現に関して質問です。
量指定子を付けるのに、対象を()で囲んでいるのですが、
$1に入れたり戻り値に含めたくない場合はどうすればいいのでしょう?

sにgオプションを付けて置換した対象のリストを得たいのです。
置換後の文字列に元の文字列がそのまま含まれているので、g外してwhileに入れると無限ループになります。
360354:2011/12/05(月) 17:50:29.25
>>355,358

調べていたらどうも違うようです。
一度取り消して再度質問しなおします。
361354:2011/12/05(月) 18:03:55.55
#########################################
#[1]色々なプログラムで使いまわせるものとして管理
package HOGE;

sub new{
my $class = shift;
my $path_home = [ split '/',$ENV{HOME} ]; #[A]
my $hash= {
path_home => $path_home,
};
bless $hash,$class;
}

sub path_home{
my $class = shift;
return( $class->{path_home} ); #[B]
}

続きます↓
362354:2011/12/05(月) 18:05:09.09
#########################################
#[2]用途別に使えるものとして管理
package HOGE::FUGA;
use base qw( HOGE );

sub new{
my $class = shift;
$path_temp = '../../tmp/';
my $hash= {
path_temp => $path_temp,
};
bless $hash,$class;
}

sub path_temp{
my $class = shift;
return( $class->{path_temp} );
}

続きます↓
363354:2011/12/05(月) 18:06:39.57
上の続き↓

#########################################
#[3]
use HOGE::FUGA;
my $hogefuga = HOGE::FUGA->new();
printf "HOME : %s\n", $hogefuga->path_home();

#########################################
上記のように「値やサブルーチン」を共通で使い回しできるモジュール[1]と、
部分的に使えるモジュール[2]を作成&管理し、それぞれのハッシュリファレンスを
[3]で使いたいのですが、その場合のスマートな実装方法はどのようなものが
ありますでしょうか?
※これはサンプルですので、直接[A]を[B]に入れたらいいというのは無しでお願いします。
※この方法は素人の思いつきなので、他にスマートな方法があればそれを教えてください。

ここまで
364デフォルトの名無しさん:2011/12/05(月) 19:57:28.22
>>350
うん。
Webアプリとか書いてる人ならともかく
俺はシェルスクリプト的な使い方しかしてないし
システムの文字コードで書いておけば十分事足りる。
use utf8すればダメ文字の入ったファイルパスも直接指定できるのかと思ったら
ダメなままだし,俺にとっては利用価値を見いだせなかった。
365デフォルトの名無しさん:2011/12/05(月) 21:50:18.68
利用価値を見出したから
Perl使ったんじゃないのか?w

シェルスクリプトで全部やればいいと思うんだが。
366デフォルトの名無しさん:2011/12/05(月) 21:59:36.69
>>365
既存のプログラムを順番に実行する+αくらいならともかく、
それ以上のことをするならPerlで書くかなあ。
367デフォルトの名無しさん:2011/12/05(月) 22:10:29.67
1レスで理解できるutf8フラグ

utf8フラグとい名前がまずかったね。
文字列フラグなどという名前だったらよかった。

文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。

バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。

ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。

話はこれだけ。
368デフォルトの名無しさん:2011/12/05(月) 22:16:43.71
文字列フラグというければ、どうして文字列なのにフラグが立つ
ときと立たないときとがあるの?フラグが立っているかどうかと
文字列なのかどうかは一致しないと思うければ。
369デフォルトの名無しさん:2011/12/05(月) 22:18:19.92
>>364
ダメ文字と言っているからActivePerlの事だと思うけど
それはPerlの問題じゃなくてAPIの呼び出しにA系を使っているのが原因
W系を使って呼び出せば問題ない
370デフォルトの名無しさん:2011/12/05(月) 22:23:25.19
>>368
あなたの文字列の定義とは?

人間が文字と思っているから文字なんだ。ではだめ。
そんな曖昧な定義はコンピュータは理解出来ない。
371デフォルトの名無しさん:2011/12/05(月) 22:23:26.55
んなこたあない。
372デフォルトの名無しさん:2011/12/05(月) 22:26:02.46
こまけぇこたぁいいんだよ!!
373デフォルトの名無しさん:2011/12/05(月) 22:47:42.46
質問しておいて回答を制限するという..ナイスw
374デフォルトの名無しさん:2011/12/05(月) 23:01:56.04
>>365
Perlの利用価値はずっと前から見いだしてるから使ってるけど
use utf8の利用価値は見いだせなかったということねw

>>369
うんうん。
use utf8はAPIもW系に切り替えてくれる万能薬なのかと想像してたら
全然違ったという;;
W系を呼び出せば問題ないってのは呼び出す方法があるの?
ダメ文字入ったファイル名の件はすっかり諦めてて
普段はワイルドカードで切り抜けてるけど
W系を呼び出す方法があるなら知りたい!
375デフォルトの名無しさん:2011/12/05(月) 23:14:22.19
W系 A系ってなに?
376デフォルトの名無しさん:2011/12/05(月) 23:16:05.10
ワロス系とアフォ系の略です
377デフォルトの名無しさん:2011/12/05(月) 23:20:25.06
俺もActivePerlのutf8プラグマはcp932とUTF-8間の融通をきかせてくれるものと
当然のように思ってたら何もなかったのでブチキレた
二度とuse utf8は使わないと心に誓った
378デフォルトの名無しさん:2011/12/05(月) 23:25:44.00
つまりuse utf8がどういう効果があるか
知らないわけね。

ドキュメントちゃんと読んだ?
379デフォルトの名無しさん:2011/12/05(月) 23:26:39.02
読んでないからわからないんだろw

読んでいたらuse utf8を何もかも解決してくれる
万能なおまじないだとか勘違いするわけがない。
380デフォルトの名無しさん:2011/12/05(月) 23:28:44.68
>>374 >>377
use utf8がどんな機能を持っているのか
ドキュメント読んで、ここに書いてみ。

単純にお前らが、ドキュメント読んでないだけってのが
よくわかるからさ。
381日系アメリカ人 ◆japYJPNx6A :2011/12/05(月) 23:43:36.07
なんか凄い文字コード覚えた手のバカが必死だね
なんだろうこの感じ

アホくさい知ったか君

ばかばかしいね見てて
自分もPerlやってるけど

ここまで354さんの質問無視して
エンコード語りしてるやつ気持ち悪いね

覚えた手かな
382日系アメリカ人 ◆japYJPNx6A :2011/12/05(月) 23:44:20.72
ここは

君の

うんちく

話す場所じゃないから

帰れ
383デフォルトの名無しさん:2011/12/05(月) 23:46:14.78
男ってどうして無駄に自分が上だと張り合うのかね
384デフォルトの名無しさん:2011/12/05(月) 23:58:05.48
全角w
385デフォルトの名無しさん:2011/12/06(火) 00:03:56.60
>>379
まぁ人それぞれだと思うけど,俺はとりあえず先に手を動かしてみるたちなんで。
だいたいのものは予想してた通りに動いてくれるし
あれ想像してたのと違うぞ?となったらそこで詳しく調べればいい。
「Unicodeで書くことを宣言してるんだから当然APIもUnicode版を呼び出してくれるんだろう…」
と事前に予想するのはごく自然なことだと思うけどなぁ。

>>380
面倒臭そうな奴だなぁ。
キミはこんなとこで粋がることに何かしらの価値を見いだしてるのかw
386日系アメリカ人 ◆japYJPNx6A :2011/12/06(火) 00:04:38.65
君は
テストステロン
って知ってるかね?

>>筋力トレーニングや不安定な興奮(例えば闘争や浮気など)によってテストステロンの分泌が促される。
男はテストステロンの量が多いんだよ

ね?

だったらわかるでしょ?
男は

勝ち負けこだわる  それが本来人間の男の姿

君はもやしだから わからないだろうけど
387日系アメリカ人 ◆japYJPNx6A :2011/12/06(火) 00:06:35.37
様々な神経伝達物質とホルモンが攻撃行動と相関することが示されている。もっともよく言及されるのがテストステロンである。ある研究はテストステロン濃度と攻撃的な反応が明確に関連していると指摘した。
388デフォルトの名無しさん:2011/12/06(火) 00:12:43.09
>>385
☓自然
◯願望

〜できるって勝手に(先に手を動かすw)思い込んどいて、自然だと思うけどなぁだってさw
389デフォルトの名無しさん:2011/12/06(火) 00:19:35.80
>>385
> 「Unicodeで書くことを宣言してるんだから当然APIもUnicode版を呼び出してくれるんだろう…」
> と事前に予想するのはごく自然なことだと思うけどなぁ。

で予想が外れてマニュアルも見ずに
ワーワー騒いでいるわけ?

いいからマニュアル読んでこい。

390デフォルトの名無しさん:2011/12/06(火) 00:24:00.01
> 「Unicodeで書くことを宣言してるんだから

そんな宣言をお前はしてない。

お前が宣言したのは、ソースコードのリテラル文字列に
UTF8フラグを立てると宣言しただけだ。


初心者脱出したと思ってる初心者にありがちだ。
マニュアルを読まずにかってに思い込む奴。

馬鹿だお前は。
391日系アメリカ人 ◆japYJPNx6A :2011/12/06(火) 00:24:49.64
W系 A系ってなに?
教えてください

もやっとしてます
392日系アメリカ人 ◆japYJPNx6A :2011/12/06(火) 00:25:25.67
後10分後に寝るので教えてください

どうか

教えて
ください

W系 A系

夜が眠れません
393Perl忍者 ◆M5ZWRnXOj6 :2011/12/06(火) 00:31:49.23
がんばれクソコテ
394デフォルトの名無しさん:2011/12/06(火) 00:35:06.00
自問自答乙
395デフォルトの名無しさん:2011/12/06(火) 00:39:23.43
>>370
かなが50字だとすると、俳句は五、七、五で文字の並びは 50**(5+7+5) の
組合せがある。これはちゃんと上限があって、(数学的に)数え上げることが
できる。ただし、かなりの割合で意味をもたない文字の並びになっている。
意味をもつ並びは少ないと予想できる。

それでは、一体、いくつの並びが意味をもつと言えるのか?

デジタルデータは全て、広義のバイナリデータだといえる。その中にはテキス
トデータを意図するものを含んでいるだろうし、あるいは意図はせずともテキ
ストデータのように見えるものがあるかもしれない。

広義のバイナリデータのうち、テキストデータを含めないものを狭義のバイナリ
データとすると、狭義のバイナリデータとテキストデータの違いは何なのだろ
うか?

その違いは数学的に定義できるのだろうか?おそらくできないと思う。
396デフォルトの名無しさん:2011/12/06(火) 00:41:21.71
で、お前にとっての文字列の定義は?

質問の答えはまだかい?
397デフォルトの名無しさん:2011/12/06(火) 00:49:20.56
人間が文字と思っているから文字なんだ。
つまり、コンピュータは(その定義を)理解出来ない。
398デフォルトの名無しさん:2011/12/06(火) 00:53:43.69
>>388
何がキミの琴線に触れたのか知らんがとりあえずもちつけ。

>>389
最初に予想が外れてることに気づいた時点で目を通したよ。
そしてがっかりしたわけだ。

>>390
コードの中のすべてのリテラル文字にフラグを立てるなら
それはコードそのものがutf8で書かれているのと同義と見ていいだろう。
実際utf8でコードを書くときしかuse utf8は推奨されてないのだから。
(ASCII文字だけが並んだリテラルにはフラグ立ちませんからw みたいなツッコミはやめてね。)

>>391
WindowsのAPIの話だよ。
同じAPIでも末尾がAのとWのとあるでしょ。
399デフォルトの名無しさん:2011/12/06(火) 00:59:40.03
つまり俺が言いたいのは use utf8; 以前に -T と -B はうそっぱちだ
ということだ。
400デフォルトの名無しさん:2011/12/06(火) 01:01:24.70
やーい、やーい、うそっぱち、うそっぱちぃ〜
401デフォルトの名無しさん:2011/12/06(火) 01:14:09.08
>>359
(?: )ってことかな?
それと、やりたいことって、文字列の削りだしなんかな。
402デフォルトの名無しさん:2011/12/06(火) 01:32:22.60
>>354 の質問がよくわからん、、、、
両方のハッシュリファレンスを得たいって、path_homeとpath_tmpを別個に呼び出せばいいのではとも思うし、でもそれは望んでる答えではないだろうし、

前の質問の、引数を渡したいって動機もよくわからない。
package Sample2;
use base Sample;

Sample2->new("$file_name")

っというのだとダメ?
403デフォルトの名無しさん:2011/12/06(火) 09:02:58.85
>>374
完全じゃないけど Win32::Unicode とか
俺は WIN32::API を使って自分で書いているけど
404デフォルトの名無しさん:2011/12/06(火) 09:07:51.20
>>401
記号を検索する方法が分からないのですが、条件演算子としての三項演算子です?

削り出しと置換を同時に行えないかなと思いまして。
その対象の中に、()付きの量指定子が含まれるのです。

s/((文字列)量指定子 文字列)/文字列$1文字列/g;こんな感じの時に、外側の()でマッチした一覧だけを取り出したい場合はどうすればいいのでしょう。
405デフォルトの名無しさん:2011/12/06(火) 09:53:31.73
>>361-363 親クラスのプロパティは以下で取ってこられるけど、なんか変な感じ?

my $hash= {
%{$class->SUPER::new},
path_temp => $path_temp,
};

>>354の引数を渡したいというのはこういうことでしょうか?

package HOGE;

sub new{
my $class = shift;
my $path_home = [ split '/',$ENV{HOME} ]; #[A]
my $hash= {
path_home => $path_home,
@_,
};
bless $hash,$class;
}

package HOGE::FUGA;
use base qw( HOGE );

sub new{
my $class = shift;
$path_temp = '../../tmp/';
my $hash= {
path_temp => $path_temp,
};
$class->SUPER::new(%$hash);
}
406354:2011/12/06(火) 14:28:58.62
>>402,405

分かりずらい説明に反応くださりありがとうございます。
405のコードと下記URLを調べながら、SUPERを何とか理解し解決できました。

ttp://d.hatena.ne.jp/nana21/20050628/p1
ttp://cast-a-spell.at.webry.info/200708/article_18.html

以上、ご報告でした。
ありがとうございます。
407デフォルトの名無しさん:2011/12/06(火) 14:43:06.36
>>354です。
別の問題が出てきました。
下記を実行すると@の箇所で以下のようなエラーが出ました。

Unknown encoding 'HOGE::FUGA=HASH(0x92ffb50)' at xxx.pm line ***

use base qw( Encode );をしているのでメインまでencodeが継承されるという認識なのですが、
認識間違いなのでしょうか?
HOGEパッケージのuse base qw( Encode );をメインで使うにはどのようにすればよいのでしょうか?
########################################
#メイン
use HOGE::FUGA;
my $hogehuga = HOGE::FUGA->new();
my $nihongo_utf8 = $hogefuga->encode('utf8','あああ'); #@
########################################
package HOGE;
use base qw( Encode );
sub new{
my ( $object, @args ) = @_;
my $hash ={hoge => 'HOGEHOGE'};
bless $hash,$object;
}
########################################
package HOGE::FUGA;
use base qw( HOGE );
sub new{
my ( $object, @args ) = @_;
my $class = $object->SUPER::new( @args );
$class->{fuga} = 'FUGAFUGA';
return($class);
}
408デフォルトの名無しさん:2011/12/06(火) 14:47:24.62
>>404
perlre
409デフォルトの名無しさん:2011/12/06(火) 15:39:36.14
Perl初心者です。マイナスの値をpack関数にてビックエンディアンに変換してから、unpack関数にて再度変換すると符号無しで変換されます。これは仕様でしょうか?
410デフォルトの名無しさん:2011/12/06(火) 15:51:56.98
わからんが仕様だな。

バイト順修飾子について調べるといいぞ。

ttp://perldoc.jp/docs/perl/5.10.0/perlpacktut.pod#Byte-order32modifiers
411デフォルトの名無しさん:2011/12/06(火) 15:52:27.39
>>409
ttp://perldoc.jp/docs/perl/5.10.0/perlpacktut.pod#Byte-order32modifiers
unpack("i>", ...) てのがある。自分も今知ったw
412デフォルトの名無しさん:2011/12/06(火) 15:53:01.74
>>408
把握
ありがとうございます
413デフォルトの名無しさん:2011/12/06(火) 15:54:33.57
ごめんかぶった
>>411は無視で
414デフォルトの名無しさん:2011/12/06(火) 16:09:39.07
>>410,411
そんなのあったっけと思ったら5.9.2からか。

perl勉強したのだいぶ前だからなぁ。たまにはリフレッシュしないと
だめだな。
415デフォルトの名無しさん:2011/12/06(火) 16:25:43.45
>>410、411
レスありがとうございます。確認してみます。
416デフォルトの名無しさん:2011/12/06(火) 16:26:41.05
あれ、そもそも置換すると、複数キャプチャできないのですか?

my @cap = $txt =~ s/(〜)/〜/g;
で、置換回数しか受け取れないみたいです。
置換無しならうまくいくのですが。
417デフォルトの名無しさん:2011/12/06(火) 16:48:18.61
>>416
perlre
418デフォルトの名無しさん:2011/12/06(火) 21:01:13.39
何がやりたいのかさっぱりわからん……
419デフォルトの名無しさん:2011/12/06(火) 22:45:37.74
置換もしながらキャプチャもしたいという欲張りさんなのかな。
e使って適当に保存するコード書けばいいんじゃね?

s/(〜)/push @cap, $1; 〜/ge

420407:2011/12/06(火) 22:50:06.45
>>416
複数改行でのマッチ?とエスパーしてみた。

$txt =~ s/\A(〜)\z/〜/xmsg;

誰か >>407 わかる方いませんか?
421デフォルトの名無しさん:2011/12/06(火) 23:06:50.64
>>407
Encode::encode はオブジェクトのメソッドとして呼び出すようにできてないから。
422デフォルトの名無しさん:2011/12/07(水) 03:45:17.74
>>404
(?: hoge)はグループ化するだけで、後方参照用に記憶させない
423デフォルトの名無しさん:2011/12/07(水) 08:58:46.12
>>419
その通りです、ありがとうございます。
perlreではやり方が見あたらなかったので助かりました。
424デフォルトの名無しさん:2011/12/07(水) 12:43:07.90
>>407
$hogefuga->encode('utf8','あああ')は、実際はencode($hogefuga,'utf8','あああ')のように
第1引数にオブジェクトを入れて呼ばれます。

>>421が言うように、encodeは第1引数に文字コードを想定しているので、そこにオブジェクトが
来ると>>407のようなエラーになります。

以下のようにすれば望みの結果になるかもしれませんが、このような使い方を私は見たことはないです。

my $nihongo_utf8 = $hogefuga->can("encode")->('utf8','あああ'); #@

Encodeを継承する一般的な方法(Encodeを継承していいのかも含めて)を知りませんが、以下のように
encode/decodeのラッパー関数を作って、@と同じことをすれば望みの機能が達成できるかもしれません。

package HOGE;
use base qw( Encode );
sub new{
my ( $object, @args ) = @_;
my $hash ={hoge => 'HOGEHOGE'};
bless $hash,$object;
}

for my $func ( qw(encode decode) ) {
no strict "refs";
*$func = sub { goto shift->can("SUPER::$func") };
}
425デフォルトの名無しさん:2011/12/08(木) 04:12:23.33
0001001100
0010000001
0000000000
0000000001001
という行単位の出力があるのですが、ここから
0001001100 ====> 4,7,8
0010000001 ====> 3,10
0000000000 ====> 0
0000000001001 => 10,13
というように1のある位置を出力させたいのですが、ワンライナーでできるでしょうか?
1が無い場合は0を出力します。
4,7,8
3,10
0
10,13
こんな感じでもとの行はなくてかまいません。1が1個だけだとIndexでできるんですが、
複数になるとどうすればいいですか
426デフォルトの名無しさん:2011/12/08(木) 04:53:08.27
$ perl -lpe 'my@a;push@a,pos while/1/g;$_=join(",",@a)||0'
とか
427デフォルトの名無しさん:2011/12/08(木) 06:03:09.60
Net::Google::Calendarを使って
ttp://shokai.org/blog/archives/1280にある
googleカレンダーの予定を取得するプログラムを実行したいのですが
実行しても
403 Forbidden at /usr/local/share/perl/5.10.1/Net/Google/Calendar.pm line 619.
エラーが出て予定を取得できません.パケットが流れているのでうまくSSL通信できていないのだろうと思うのですが
原因としてどういったものが考えられるでしょうか?
428デフォルトの名無しさん:2011/12/08(木) 06:40:54.49
試してないけど、loginではなくauthかoauthで認証しないとダメなんじゃないかな
取ってくるだけなら限定公開URLを使えばloginせずに取れる
429407:2011/12/08(木) 15:43:33.52
>>421,424

やっと理由が分かりました。
$hogefuga->encode()で呼び出すということは、第一要素にオブジェクトが入りますね。
encode()で呼ぶ場合はそれが無い。
スコーンと忘れてました。
たまに自分で作ったパッケージでも同じとこで間違えることがあります。

詳しい説明のおかげで理解することができました。
遅くなりましたが、お礼を申し上げます。
ありがとうございました。
430デフォルトの名無しさん:2011/12/08(木) 16:31:16.33
〜色々略〜
$dat = kakou($dat, $in);
sub kakou{
my $dat = shift;
my $in = shift;
〜$inを使って$datを加工する。$inが空なら何もしない〜
return $dat;
}

$datが巨大な場合、$inが空かどうかの判定は&kakouを呼ぶ前に毎回行った方が良いのでしょうか?
こういった場合はどういう書き方が最適なのでしょう?
431デフォルトの名無しさん:2011/12/08(木) 16:57:27.74
>>430
>&kakouを呼ぶ前に毎回行った方が良い
そりゃ、サブプロ行く前に判断した方が早い。
他にはリファレンスを渡す。
432デフォルトの名無しさん:2011/12/08(木) 17:07:50.26
>>431
ありがとうございます。
Perl側で何か上手くやってくれてるのならこの書き方でも問題ないかと思ったんですが、毎回まじめにメモリ確保して代入処理してくれてるってことでしょうか?

ところで、リファレンス渡しの場合は、明示的にリファレンスを渡すのと、$_[0]を直接編集するのではどちらの書き方が一般的なんでしょうか?
433デフォルトの名無しさん:2011/12/08(木) 18:20:21.65
@_ の要素は実引数のコピーではなくエイリアスだから、文字列渡しでも my $dat = shift; とかするまではコピーは発生しないよ。
つっても>>430じゃサブルーチンの戻り値がその文字列だから結局コピーは不可避だけど。

処理するしないにかかわらずコピーを避けるなら、
kakou(\$dat, $in);
sub kakou {
 my($dat_ref, $in) = @_;
 return unless $in;
 # $$dat_ref に直接ほげほげする
}
434デフォルトの名無しさん:2011/12/08(木) 21:17:51.75
「Perlで有名な小飼弾に暴言を吐いたキチガイw OSSコミュニティから物凄いパッシングw」
http://blog.livedoor.jp/dankogai/archives/51733482.html

北畠徹也氏が代表の「テラ・インターナショナル」がPerlを勝手に商標登録

>>この北畠って人は、ツイッターとかでも自殺するって言って話題になったり
よく分からないNPOか何かに募金をしてくれってメールを数万人規模のMLに流したり
それらは実はチョットした技術的ミスだって釈明してたりする人らしいね

Tetsuya_K 北畠徹也
@dankogai の家に電話したら、「小飼弾は死にました」らしい。ざまみろ。ざまみろ。というか、死んだ方が社会にとって幸せ。以上。# どうでもいいが、jcode.plなんて簡単につくれるじゃろ。あんなので調子に乗るアホもどうかしてるぜ。
Tetsuya_K 北畠徹也
I compared my @klout with @dankogai, how does your @klout compare? klout.com/user/dankogai/… @Tetsuya_K に比べたら全く大したことねーな。大口叩く愚か者が。

コメントの一覧

「みんなおもしろいおもしろいいってるけど北畠さん完全にかわいそうな精神病の患者ですよね」
「コメント欄が病的で怖い。人格が分裂してる?」
「本当に何がしたかったんだろう・・・」
「無事取り消されたそうで。本当によかった。」
435デフォルトの名無しさん:2011/12/08(木) 21:51:24.48
その人が頭おかしいのは前からわかってるのでもう名前も見たくないです
436デフォルトの名無しさん:2011/12/08(木) 22:10:36.86
Perlのバージョンは 5.14 subversion 2 OS WinXP Pro sp3
全くの初心者で、本の見ながらサンプルを打ち込んで確認しているんですけど、はてな?で教えて下さい。

$n ='9';
if ($n =~ /^[[:alpha:]]/) {
print "$n はアルファベットです\n";
} elsif ($n = ~ /^[[:digit:]]/) {
print "$nは数値です\n";
} else {
print "$n はアルファベットでも数値でもありません\n";
}


コマンドプロンプトで
perl test.pl
ってやると
9は数値です
って表示されるはずが、
4294967295は数値です
とかって表示されてしまいます。
なんで????
437デフォルトの名無しさん:2011/12/08(木) 22:14:18.66
↓これが答えだ!
438デフォルトの名無しさん:2011/12/08(木) 22:14:23.67
= ~
離すな危険
439デフォルトの名無しさん:2011/12/08(木) 22:18:55.33
'=' と'~'はくっついていないと駄目なんすか!?

へぇぇ、、、びっくりです。

>>438
ありがとうございます。
440437:2011/12/08(木) 23:13:22.62
どういたしまして
441デフォルトの名無しさん:2011/12/09(金) 06:48:18.18
>>439
逆に 何故離れていてもいいと思ったのか知りたい
442デフォルトの名無しさん:2011/12/09(金) 09:18:19.54
>>433
ありがとうございます。

kakou($dat, $in);
sub kakou {
  my $in = $_[1];
 return unless $in;
 # $_[0] に直接ほげほげするか、my $dat_ref = \$_[0];するか
}

この方法でもコピーを避けれるかと思うのですが、
呼び出し側で\付けてリファレンスを渡してやる方が一般的なんでしょうか?
443デフォルトの名無しさん:2011/12/09(金) 09:58:27.40

$stringという値があります。
これをuse Data::Dumperで出力すると下記のようになります。

$VAR1 = [
"\x{e3}\x{81}\x{8c}"
];

しかしfrom_to($string, 'utf8', 'utf8')
をDumperの手前に入れると下記のようになります。

$VAR1 = [
'が'
];

気づいた点は""(展開する)から''(展開しない文字列)に変わっています。
後者の状態にしたいのですが、from_toで「行って来い」だと効率が悪すぎると思うのですが、
何か方法はありますでしょうか?
$string = eval($string)ではうまくできませんでした。

use utf8;は入れています。
444デフォルトの名無しさん:2011/12/09(金) 10:42:31.33
> $stringという値があります。

この値をどっからどうやって取ってきたかが問題なんじゃないの?
445デフォルトの名無しさん:2011/12/09(金) 10:49:44.91
>>442
それでも同じではあるけど、っていうか>>443見て Encode::from_to はまさにそういう呼び出しの例だと思い出したけど、
そういうある程度一般的な関数の場合を除けば普通は呼び出し元で \$dat としておいたほうが「$dat の中身だけを直接変更する」という意図が一目瞭然だと思う。

>>443
from_to でいいと思うよ。それか decode('utf-8', $string) で utf8 フラグ付きの 'が' が得られる(decode_utf8($string) ではダメ)。
ただし、"\x{e3}\x{81}\x{8c}" ってのがそもそも普通の状態じゃない(大抵はコーディングミスかモジュールのバグ)ので、
意図してそういう状態にしてるんじゃなければ、まずその原因を探して取り除いたほうがいい。
(具体的には utf8 フラグなしの 'が' を utf8::upgrade すると "\x{e3}\x{81}\x{8c}" になるのだが、普通そんなことはするべきではない。)
446442:2011/12/09(金) 13:18:22.96
>>445
仰るとおりだと思います。参考になりました。
ありがとうございます。
447デフォルトの名無しさん:2011/12/09(金) 18:05:22.33
掲示板のコメントだけをテキストファイルなどに出力するプログラムってperlが向いてると思うんだけどどう書いたら良いですか?
簡単らしいんですが初心者なんで解りませんorz

よろしくお願いします。
448デフォルトの名無しさん:2011/12/09(金) 18:10:12.09
>>447
掲示板へアクセスしてログを取得

ログの中から必要なコメントだけを抜き出し

ファイルへ出力

出力したファイルを見る事なく数年過ぎる

「なんだこれ?あぁこんなの作ったっけイラネ」

結果:無駄
449デフォルトの名無しさん:2011/12/09(金) 18:56:11.72
>>447
どう、っつーても掲示板次第だと思うぞ
ブラウザ右クリしてソースの表示して法則をみつけるよろし
450デフォルトの名無しさん:2011/12/10(土) 16:52:21.99
>>441
$_ を対象として /^[[:digit:]]/ をマッチさせた結果の
1の補数を $n に代入するだなんて、これっぽっちも思い
つかなかったんで。
451デフォルトの名無しさん:2011/12/10(土) 19:14:45.10
>>441

くっつけて書けって本には書いてなかったもんで
452デフォルトの名無しさん:2011/12/10(土) 19:27:28.23
まあ、ゆとりは大事だからねぇw
453デフォルトの名無しさん:2011/12/10(土) 20:20:27.29
=と~ って考えるか =~ で1つと考えるかだろうねー。
454デフォルトの名無しさん:2011/12/10(土) 21:19:54.36
= は代入演算子
~ はビット否定演算子
=~ はパターン結合演算子

これらが書かれていない本は捨てて、新しい本を
買ってこい。この先何があるか分かったもんじゃ
ないぞ。
455デフォルトの名無しさん:2011/12/10(土) 21:32:15.65
>>451
え?まさか「= ~ と書いてもいい」とか載ってないよね??
456デフォルトの名無しさん:2011/12/10(土) 21:39:52.36
初期のC言語にもこの類の問題があったな。C=+3とか。
457デフォルトの名無しさん:2011/12/10(土) 21:50:09.75
初めまして。cygwinでperlを動かそう思っています。

perl-e 'print "hello!\n";'は上手くいくのですが、hello.plというファイルを作った時は
では上手くいきません、良ければご教授下さい
458デフォルトの名無しさん:2011/12/10(土) 21:56:30.13
hello.plの中身をなぜ書かないのか気になる
459デフォルトの名無しさん:2011/12/10(土) 21:58:29.15
すいません
#!/cygwin/bin/perl
print "Hello, World";

とかいろいろサイトみて試してみたんですが、よくわからなくて
460デフォルトの名無しさん:2011/12/10(土) 22:04:55.52
> perl hello.pl
461デフォルトの名無しさん:2011/12/10(土) 22:08:58.63
perl hello.pl と打ち込むと
Can't open perl script "hello.pl": No such file or directory
と出ます。
462デフォルトの名無しさん:2011/12/10(土) 22:12:05.47
>>455
まあ、
a=b+1;
でも
a = b + 1 ;
でも通るから、スペースは無視されるとでも思ったんじゃね?

463デフォルトの名無しさん:2011/12/10(土) 22:14:09.15
《エスパーモード》

ファイル hello.pl がカレントディレクトリにない。

(たぶんデスクトップ上にある)
464デフォルトの名無しさん:2011/12/10(土) 22:21:40.65
>(たぶんデスクトップ上にある)

そうです!ありがとうございます
cygwin\binに移しました。
-bash: perl: command not found
とでました・・・
465デフォルトの名無しさん:2011/12/10(土) 22:24:58.76
which perl
466デフォルトの名無しさん:2011/12/10(土) 23:05:30.27
「カレントディレクトリ」と「カレントディレクトリの変更」を
調べてもう一度戻ってきてください。
467デフォルトの名無しさん:2011/12/10(土) 23:36:47.09
あるいはフルパスで指定するとか
468デフォルトの名無しさん:2011/12/10(土) 23:46:33.91
もう、すれ違いじゃない?
469デフォルトの名無しさん:2011/12/10(土) 23:50:09.61
すでにCygwinについての質問になってるな。
cygwin上で動かすんだったらshebangは
#!/cygwin/bin/perl
じゃなくて
#!/usr/bin/perl
だろう。

cygwinを普通にインストールしてたら、
cygwin上から /cygwin にアクセスしようとしてもできない筈だぞ。
470デフォルトの名無しさん:2011/12/12(月) 03:27:59.67
proveコマンドでテストを実行できるのはべんりなのですが、
テストが失敗した場合、どのテストが失敗したかを知るにはどうしたらいいですか。
試してみたところ、何番目のテストが失敗したかが表示されるだけで、すごくわかりづらいです。

Test Summary Report
-------------------
t/foo.t (Wstat: 0 Tests: 17 Failed: 1)
Failed test: 17
Files=1, Tests=17, 0 wallclock secs ( 0.04 usr 0.01 sys + 0.06 cusr 0.02 csys = 0.13 CPU)
Result: FAIL

テスト番号ではなく、ファイル名と行番号が表示されるようにしたいのですが、どうしたらいいでしょうか。
よろしくお願いします。
471デフォルトの名無しさん:2011/12/12(月) 03:44:28.32
>>470
すみません、勘違いでした。
Test::Moreだと行番号がきちんと表示されるのですが、自作のツールだと表示されないようです。
もうちょっと調べてみます。
472デフォルトの名無しさん:2011/12/12(月) 04:04:12.86
再度質問です。同じ出力をするスクリプトなのに、proveコマンドの挙動が違うのはなぜかについて。

use strict;
use warnings;
use Test::More tests=>1;
is 1+1, 3;

というファイルをperlで実行すると、次のようになります。

$ perl foo.t
1..1
not ok 1
# Failed test at foo.t line 4.
# got: '2'
# expected: '3'
# Looks like you failed 1 test of 1.

続く
473デフォルトの名無しさん:2011/12/12(月) 04:04:36.54
続き

これをproveコマンドで実行すると、失敗したテストの行番号が表示されます。

$ prove foo.t
foo.t .. 1/1
# Failed test at foo.t line 4.
# got: '2'
# expected: '3'
# Looks like you failed 1 test of 1.
foo.t .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests

Test Summary Report
-------------------
foo.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=1, Tests=1, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.02 cusr 0.00 csys = 0.06 CPU)
Result: FAIL

続く
474デフォルトの名無しさん:2011/12/12(月) 04:05:41.09
続き

で、先程と同じ出力をするスクリプトを、Test::Moreを使わずにprint文だけで作りました。

use strict;
use warnings;
print "1..1¥n";
print "not ok 1¥n";
print "# Failed test at foo2.t line 4.¥n";
print "# got: '2'¥n";
print "# expected: '3'¥n";
print "# Looks like you failed 1 test of 1.¥n";

これをproveコマンドで実行すると、行番号だけでなく、「#」で始まる行が表示されません。

$ prove foo2.t
foo2.t .. Failed 1/1 subtests

Test Summary Report
-------------------
foo2.t (Wstat: 0 Tests: 1 Failed: 1)
Failed test: 1
Files=1, Tests=1, 0 wallclock secs ( 0.03 usr + 0.01 sys = 0.04 CPU)
Result: FAIL

いちおう prove -o で、コメント行が表示されることは分かりましたが、
知りたいのは、2つのスクリプトが同じ出力をしているのに、
proveコマンドの動作が違うのはなぜかということです。
たぶんTest::Moreのis()がなんか特殊なことをしているのだとおもいますが、
どんなことをしているのかは分かりません。
だれか知っている人がいたらおしえてください。
475443:2011/12/12(月) 15:14:39.81
>>445
遅くなりました。
"\x{e3}\x{81}\x{8c}"はフォーマット的におかしいんですね。
しかし、モジュールの結果で返ってきてるんで、今回は仕方ないとあきらめておきます。
教えていただきありがとうございました。

また、別の疑問が出てきました。
utf8の日本語をConfig::TynyとYAML::XS::LoadFileでインポートしてDump::Dumper::Dumperすると下記のようになります。
Configの方は''で完全な文字列ですが、YAMLの方は""で変数展開用のダブルクォーテーションになっています。
この違いはプログラム作成側としては気にしなくて良いのでしょうか?
また、Dumperで確認するときにConfigの方が日本語が読めていいと思うのですが、YAMLでシングルクォートにする方法はどのようにすればよいのでしょうか?

#Config::Tyny
$VAR1 = [
bless( {
'_' => {
'keyword' => 'キーワード'
}
}, 'Config::Tiny' )
];

#YAML::XS
$VAR1 = [
'_' => {
'keyword' => "\x{30ad}\x{30fc}\x{30ef}\x{30fc}\x{30c9}"
}
];
476475:2011/12/12(月) 15:23:39.91
すみません。
>>475
は、少し意味が違いますね。
よく見たらUTF8フラグがついている。↓
"\x{30ad}\x{30fc}\x{30ef}\x{30fc}\x{30c9}"
YAMLでロードすると、内部コードに変換して取り込むんですね。
そのせいで""ダブルコーテーションになってそうな気がしますが、合っていますでしょうか?

これだとインポートした文字列を出力したい時に、
ファイル→インポート(内部文字コード変換)→出力(encode)
と、無駄な変換が発生している気がしますが、そんなに負荷はないのでしょうか?
477デフォルトの名無しさん:2011/12/12(月) 20:28:05.88
おちついてください
478デフォルトの名無しさん:2011/12/13(火) 04:23:56.80
>>475-476
Data::Dumper には U+0080 以上の文字を問答無用で16進表記してしまうという問題が
あるので、日本語をまともに出したい場合は
sub Data::Dumper::qquote { local $_ = shift; s/['\\]/\\$&/g; "'$_'"}
と書いておく(ただしこれだと Useqq=1 が動かなくなる欠点あり)。
479デフォルトの名無しさん:2011/12/13(火) 05:07:52.02
Config::Tiny には read のほかに read_string があるようなので、
自分でファイルをまるごと読んで、その内容を read_string に渡せば
問題なくなるはず。

use Config::Tiny;
sub rd($) { local $/ = undef; open(my $f, '<:utf8', shift); <$f> }
my $cfg = Config::Tiny->read_string(rd('foo.cfg'));
480デフォルトの名無しさん:2011/12/13(火) 05:28:38.49
>>474
>「#」で始まる行が表示されません。

>>472 「#」ではじまる行は STDERR に出力されてるようだけど、そういうことじゃなくて?
481デフォルトの名無しさん:2011/12/13(火) 07:45:42.65
>>478 追記。
$Data::Dumper::Useperl = 1;
これが必要なのを忘れてた。
482デフォルトの名無しさん:2011/12/13(火) 17:29:10.64
my($year, $month, $day, $hour, $minute, $second)から
UNIXタイムスタンプを得る方法を教えてください。
こんな事にモジュールは使いたくないので、計算で出したいです。
どっかのブログに書いてあった計算式では正しい結果が得られませんでした。
483デフォルトの名無しさん:2011/12/13(火) 17:56:46.19
>こんな事にモジュールは使いたくないので
5.005のお守ですか?
ご愁傷様です
484デフォルトの名無しさん:2011/12/13(火) 17:57:15.07
Time::Localでも見てきやがれですyp
485デフォルトの名無しさん:2011/12/13(火) 18:07:39.19
>>484
だからCPANは使いたくないんだってば
486デフォルトの名無しさん:2011/12/13(火) 18:25:15.39
Time::Local は Perl5 に標準添付だから CPAN は使わなくて済むと思うが。
use することすら嫌なら「どっかのブログ」じゃなくて Time::Local の中身でも「見てきやがれ」としか。
487デフォルトの名無しさん:2011/12/13(火) 19:01:13.93
ソースコードは提供されてないとか思ってんだろ(´_ゝ`)プッ
488デフォルトの名無しさん:2011/12/13(火) 21:10:59.26
CPANを使いたくないんじゃなくて
使えないんだろ?
489デフォルトの名無しさん:2011/12/13(火) 21:24:06.47
なにそれ地獄すぎる
490デフォルトの名無しさん:2011/12/14(水) 05:36:55.02
>>482
CPAN使えない(使いたくない)奴がこの程度のことをモジュール使わんと自力で書けずに
2chなんぞに質問ぶっぱなしてる時点でオワってるとわたくしは思います。
素直にモジュール使え。
491デフォルトの名無しさん:2011/12/14(水) 12:01:25.68
何か他人が煽って荒れてる…

>>484
ありがとうございました。
Time::Localごちゃごちゃしてて読む気なかったんですが、参考にして自分で実装しました。

しかし某ブログの計算式は何だったんだろう。
Perl用ではなかったんだけど、intくらいしか関数使ってなかったし。
本来は条件分岐とか一切なしに1行の計算だけで出せるものなんですか?
492デフォルトの名無しさん:2011/12/14(水) 14:33:57.55
markdown.pl http://daringfireball.net/projects/markdown/ についての質問です

Markdown 記法の説明は http://blog.2310.net/archives/6 にありますが、
改行後に文字が続くと<p>でくくります。たとえば

テストですよ、
どうですか

この文字列はつぎのように展開されます。
<p>テストですよ、
どうですか</p>

英文ならこれでも体裁は良いのですが、html上日本語の文の場合いらない空白が出てきてしまいます
<p>テストですよ、どうですか</p>
このように改行直前の文字がマルチバイト文字(非ascii文字)なら
改行を取り除いて<p>でくくりたいのですがどう改変すればいいのでしょうか
markdown.plのsub Markdownがその改変すべき処理なのかと思ったのですが
どこから手をつければよいのかわかりません
493デフォルトの名無しさん:2011/12/14(水) 15:25:07.60
>>491
> 本来は条件分岐とか一切なしに1行の計算だけで出せるものなんですか?
“某ブログ”に、考え方から計算式の導き方まで懇切丁寧に書いてある。
494デフォルトの名無しさん:2011/12/14(水) 15:40:57.70
>>493
でもその肝心の計算式がそれっぽい数字は出るものの結果が合わないです。
計算過程は長すぎて、そこからあるかどうかもわからない間違い探しをするのも手間なので、結論を知ってる方が教えてくだされば早いのですが。
普通はTime::Localで済むので、わざわざ自分で何とかした方はいないですかね。
495デフォルトの名無しさん:2011/12/14(水) 16:47:26.27
>>494
あんまりPerlと関係ないような気がするし、某ブログとやらも知らないけれど、
int を使ってるということだから、プログラミングの初歩で習うゼラーの公式と
同じ考え方を使うんじゃないの?
496デフォルトの名無しさん:2011/12/14(水) 17:03:34.86
>>494
そんなことより、なぜTime::Localを使わず自分で実装したがるのかを知りたい。
Perlはインタプリタ言語だからライブラリをincludeすると重くなる?浅はか。
勝手にバージョンが変わって動かなくなるのが心配?そんな環境ならそもそもPerlを使うのが愚。
497デフォルトの名無しさん:2011/12/14(水) 23:34:53.99
下手の考え休むに似たり。

下手だから無駄なことしてるんだよ。
498デフォルトの名無しさん:2011/12/15(木) 00:08:58.13
>>482
ここで聞くまでもなく「UNIXタイムスタンプ」を(ブログ
なんかじゃなくて、ちゃんと)調べれば自然にできると
思うけどな。
499デフォルトの名無しさん:2011/12/15(木) 16:19:24.70
>>480
そういうことでしたか。ありがとうございます。
500デフォルトの名無しさん:2011/12/16(金) 23:32:27.42
↓これなんで文字化けするの?perlは今まで1文字も書いたことないし、
プログラムも録にしたことないからこれがperl独特の文字化けなのかわからんちん。
ついでに出来れば'<small>晴れ</small></td>'と'<small><font color="#999999">晴れ</font></small></td>'のパターンの中の天気の文字列を取ってくる正規表現ください。

#! /usr/bin/perl

$string = '<small><font color="#999999">晴れ</font></small></td>';
$pattern = ">[^<](.+)[^>]</";

if ($string =~ /$pattern/) {
print '$1は、', $1, "です", "\n";
}
501デフォルトの名無しさん:2011/12/16(金) 23:40:35.58
>>500
use utf8
502デフォルトの名無しさん:2011/12/16(金) 23:53:40.30
>>500
・・・と、適当な事いっちゃったけど、

$pattern = ">([^<].+[^>])</";

こうだな。
503デフォルトの名無しさん:2011/12/17(土) 00:11:11.75
>>502
Genius has come! ありがとうございます。

$pattern = '<small>(?:<font[^>]*>)*(.+)(?:</font>|</small>)';
ここまで作ってみたけどgreedy match使うと後ろの方に引っかかっちゃうよ系の罠に引っかかってた。
504デフォルトの名無しさん:2011/12/17(土) 01:12:02.76
$pattern = '<(small|font).*>([^<>]+)</\1>';

print "\$2は、$2です\n";
505デフォルトの名無しさん:2011/12/17(土) 01:14:32.09
> Genius has come
天才は米を持っている。
506デフォルトの名無しさん:2011/12/17(土) 08:19:09.35
ActivePerlをWindowsにインストして
コマンドプロンプトからPerlのプログラムを実行したいのですが
systemに日本語のファイル名を渡すと正常に処理できません。
どうすればsystemで日本語のファイルを処理できますか?

system "dir 日本語.txt";

を実行すると

「ファイルが見つかりません」となりますが
コマンドプロンプトで

dir 日本語.txt

と打つとファイルの情報が表示されます。
507デフォルトの名無しさん:2011/12/17(土) 08:38:01.84
508デフォルトの名無しさん:2011/12/17(土) 10:07:43.74
>>506
いまから >>7 をするよりは...

----------
use Sjis; # ←これ追加するだけ!!
system "dir 一覧表.txt";
----------

参考
ttp://text.world.coocan.jp/TSNET/?Sjis.pm
509デフォルトの名無しさん:2011/12/17(土) 10:45:25.45
>>7 の 2行目から 5行目って
use open qw(:encoding(cp932) :std);
一個で済むんじゃないの?
510デフォルトの名無しさん:2011/12/17(土) 11:41:24.04
もうなにがなんだか...
511デフォルトの名無しさん:2011/12/17(土) 11:45:35.17
メタルギアファンはここで応援してください
日本のゲーム業界を盛り上げましょう

「小島秀夫応援振興協議会」
http://toro.2ch.net/test/read.cgi/gamedev/1324089321/
512デフォルトの名無しさん:2011/12/17(土) 12:26:51.28
# [Perl 日本語処理]
# さまざまな機能をわかった上でどうしても,という方を留め立てする
# つもりはありませんが,>>7 でできることのほとんどはもう

 use Sjis;
 require 'jacode.pl';

# に含まれてるかもです。
# いまさら >>7 を使わずに,いなばの道を行くしかありません。
513デフォルトの名無しさん:2011/12/17(土) 12:37:30.55
>>506
> system "dir 日本語.txt";
普通に通るぞ。
v5.12.3 build 1204
514デフォルトの名無しさん:2011/12/17(土) 12:38:40.13
Perl 関係のスレで Sjis.pm とか jacode.pl を勧めてくる人って一人でやってんのかな。作者本人かしら。
そういうのが必要なシーンもあるのか知らんが、9割9分の人間は Encode 使ったほうがいいと思うなあ。
515デフォルトの名無しさん:2011/12/17(土) 13:04:35.50
>>513
たぶん 506 の人はプログラムを UTF-8 で書いてるのでは。

>>514
古いスクリプトの資産があって、なるべく変更したくないっていうんならともかく、
新しく書くんなら utf8 + Encode の一択でしょうね。


516デフォルトの名無しさん:2011/12/17(土) 13:38:59.32
なるほど、use utf8;前提なら必要なのは>>7
> # ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
> # この例のように cp932 でエンコードする必要があります。
517506:2011/12/17(土) 14:34:01.02
>>507
>>508
>>509
>>510
>>511
>>512
>>513
>>514
>>515
>>516
ありがとうございます。
木曜日にActivePerlを始めたばかりの初心者です。
use utf8;
encode( 'CP932', "日本語.txt" );
でうまくいきました。
518デフォルトの名無しさん:2011/12/17(土) 16:09:22.04
>>512
「いなばの道」って何でっか?w
519デフォルトの名無しさん:2011/12/17(土) 16:18:07.28
100人乗っても大丈夫な道
520デフォルトの名無しさん:2011/12/17(土) 16:18:15.88
こういうことだろう。
ttp://blog-imgs-18.fc2.com/l/u/c/luckystar01/20090228214717.jpg

故事を辿れば、ワニを騙して道にし、そしてたちまちワニの怒りを買って全身の皮を剥がされる。
521デフォルトの名無しさん:2011/12/17(土) 16:54:02.04
ワニの集団に襲われたのに、よく皮剥がされただけで済んだよな
いなば君強しw
522デフォルトの名無しさん:2011/12/17(土) 17:28:01.40
>>518
おそらく、
ttp://gihyo.jp/dev/serial/01/modern-perl/0031
のパロディだとおもわれ
523デフォルトの名無しさん:2011/12/17(土) 17:29:35.93
剥がされた皮はまだ被っていた皮なんじゃね?
524デフォルトの名無しさん:2011/12/17(土) 17:51:05.69
フォームで入力した文字が、ファイルから読み込んだ文字列に何個含まれるか
を求める方法を教えてください
ようするにパターンマッチした個数ですね。
できればモジュールを使わない場合のやり方も教えてほしいです
十や表などの文字化けする文字がふくまれていてもうまくいくようにです
525デフォルトの名無しさん:2011/12/17(土) 18:01:04.06
また嫌モジュール厨が舞い戻ってきたか。
仮にモジュールを教わったら、自分で中身を読めばいいだけのことだろうが。
526デフォルトの名無しさん:2011/12/17(土) 18:09:34.46
$count = ($input =~ s/\Q$keyword//g);
527デフォルトの名無しさん:2011/12/17(土) 20:15:04.61
>>525
モジュールを使わないのであれば、自分でマルチバイトアンカー
リングする必要がある。
528デフォルトの名無しさん:2011/12/17(土) 21:36:31.64
それはいばらの道だ...
529デフォルトの名無しさん:2011/12/17(土) 21:40:58.02
>>522
「いばら」が読めなかったんだろw
530デフォルトの名無しさん:2011/12/17(土) 21:46:59.41
ち、ちがうもん
531デフォルトの名無しさん:2011/12/17(土) 22:15:11.66
ズババン♪ズババン♪ダダンダン♪
ズババン♪ズババン♪ダダンダン♪
ttp://www.youtube.com/watch?v=Bo0DWYIm8pc
532デフォルトの名無しさん:2011/12/18(日) 03:13:12.55
「できればモジュールを使わない方法が知りたい」って人は理由を書いて、論破されたほうが幸せになれる
533デフォルトの名無しさん:2011/12/18(日) 03:29:21.19
まあ「毎回モジュールの読み込みに時間がかかるから」てのは一昔前に俺も思ってたことあったな
HTML解析系とか、自前で正規表現の組合せでやった方が高速なケースは今もたまにあるし
534デフォルトの名無しさん:2011/12/18(日) 06:24:46.98
Perlのバージョンが上げられないパターンは多そう
535デフォルトの名無しさん:2011/12/18(日) 07:25:32.21
ここですぐ答えがもらえるような類なら、該当モジュールを読んでコピペでもした方が
質問するより手っ取り早いよ。
536デフォルトの名無しさん:2011/12/18(日) 08:50:55.14
>>533
特にOOなモジュールは1桁遅いからねえ
非力な環境ではキツい場合もあるな
537デフォルトの名無しさん:2011/12/18(日) 09:02:39.01
「大きなファイルや沢山のファイルを入れると怒られるから本体と.dllだけ入れて動かすしかない」
…っていう理不尽な状況なら昔俺がやったなw

一応簡単なフィルタならそれだけでも書けなくもなかったが
どうしても苦しい処理があるから選抜して2、3個は入れさせてもらった

ちなみに、一切useしなくても
一部の関数は.pm無しでは動かないものがあったよ、どれか覚えてないが
割と知らず知らずのうちに使ってる可能性がある
538デフォルトの名無しさん:2011/12/18(日) 09:12:18.77
strict.pm と warnings.pm は必ず使ってる。
539デフォルトの名無しさん:2011/12/18(日) 09:30:07.66
>>537
それは Windows だとよくやる。テストマシン上とか。

ファイル2個だけでそこそこ役に立ってくれるのはありがたい。
540デフォルトの名無しさん:2011/12/18(日) 10:03:01.64
>>539
よくある事なのか…理不尽だなんて言ってられんか

まあでも、素のコマンドプロンプトじゃほとんど何も出来ないこと考えると
Perlあるだけで世界が変わるだろな
541デフォルトの名無しさん:2011/12/18(日) 11:39:48.35
JScriptもVBScriptも
コマンドラインで動くから
あまり関係ないな。
542デフォルトの名無しさん:2011/12/18(日) 12:27:59.83
つーか、みなさん環境に恵まれすぎだろう
543デフォルトの名無しさん:2011/12/18(日) 12:53:19.47
おまいらが禁止されすぎなんだよ
ActivePerl禁止、仮想環境禁止って
禁止禁止言ってる側は何と戦ってるんだかw
544デフォルトの名無しさん:2011/12/18(日) 13:07:16.59
jcode.plは禁止
use strict; use warnings;書かないと禁止

禁止

禁止オタクですか?
545デフォルトの名無しさん:2011/12/18(日) 13:11:12.90
>>541
ワンライナー書けねえじゃん
546デフォルトの名無しさん:2011/12/18(日) 13:11:57.00
ワンライナーで失敗したときってダサすぎんだけど
やっぱりワンライナー書く練習してるの?w
547デフォルトの名無しさん:2011/12/18(日) 13:15:32.70
「ワンライナーみせつけてやるか(キリッ」

perl -e " ほにゃららら のひゃら 'ほにゃら"

「ふっ」
Can't find string terminator "'" anywhere before EOF at -e line 1.


ひそひそ ( ;゚д)ザワ ウワダサッ!(;゚д゚;) ワンライナーミスッテマスヨ(д゚; ) ヒソヒソ
548デフォルトの名無しさん:2011/12/18(日) 13:29:13.70
スレタイのPerlには当然Perl4を含んでいると思っている
おいらだから「モジュールを使わない方法で」って言われ
るとそっか、Perl4なのね、ライブラリなら使えるのねっ
てすぐにピンとくらあ。
549デフォルトの名無しさん:2011/12/18(日) 13:39:01.15
>>548
頑張ったんだろうがツマラン
550デフォルトの名無しさん:2011/12/18(日) 13:47:01.99
>>532
その人は個人的な制約で困っているわけじゃないだろうから論破しても意味
がないと思う。仮にその人がギブアップした場合でも他の人がそのポジショ
ンを補うことになるわけで、(2chで質問するかはともかく)「モジュールを
使わない方法」を模索する気がする。
551デフォルトの名無しさん:2011/12/18(日) 14:07:36.38
>>544
正当な理由があるからそれは問題ない。
552デフォルトの名無しさん:2011/12/18(日) 14:09:45.60
>>550=>>548
頭悪そうだな。文章が。
553デフォルトの名無しさん:2011/12/18(日) 14:22:24.01
論破しようとするも、先方が取り合わない
554デフォルトの名無しさん:2011/12/18(日) 16:11:17.11
Sjisを使うのはアホでFA
555デフォルトの名無しさん:2011/12/18(日) 17:11:10.20
リリース日がAFなので正しくは「ばか」、な?
556デフォルトの名無しさん:2011/12/18(日) 17:37:55.11
そうかねこでも使えるのか、そりゃいいな
557デフォルトの名無しさん:2011/12/18(日) 17:40:46.70
まあsjis扱いたかったらjperlがあるしな
558デフォルトの名無しさん:2011/12/18(日) 18:08:58.87
文字列中のマッチした文字を太字にしてマーカー(色)をつけるようにしたいんですが困っています。

$str="あああaaaFONTwww";

$str = &merker($str,"あああ","#00ff00");
$str = &merker($tr,"www","#0000ff");
print "$str";

この場合は"あああ"と"www"にマーカーがつきますが

$str = &merker($str,"あああ","#00ff00");
$str=&merker($str,"FONT","#0000ff");
print "$str";

上記のように"FONT"をマーカーしたい場合だとタグが崩れてうまくいきません
うまくいく方法を教えてください

merker{
my($str) = $_[0];
my($merker_str)=$_[1];
my($merker_color) = $_[2];

$zentai_str =~ s/$merker_str/<FONT STYLE=\"background:$merker_color\"><\/FONT>/g;

return($str);
}
559デフォルトの名無しさん:2011/12/18(日) 18:09:49.84
あ、subが抜けてたsub merkerです
560デフォルトの名無しさん:2011/12/18(日) 18:11:36.05
あ、またまちがえた
$zentai_str =~ s/$merker_str/<FONT STYLE=\"background:$merker_color\"><\/FONT>/g; ではなく
$str =~ s/$merker_str/<FONT STYLE=\"background:$merker_color\"><\/FONT>/g;
です
561デフォルトの名無しさん:2011/12/18(日) 18:13:27.37
あ、またまた間違えました
$str =~ s/$merker_str/<FONT STYLE=\"background:$merker_color\"><B>$merker_str<\/B><\/FONT>/g;
です
562デフォルトの名無しさん:2011/12/18(日) 19:49:23.30
s#(?<!<)$marker_str#<span style="background:$marker_color;font-weight:bold">$marker_str</span>#g
563デフォルトの名無しさん:2011/12/18(日) 23:49:11.34
綴りまちがってるのが気になってコードが考えられない
564デフォルトの名無しさん:2011/12/19(月) 04:46:39.72
おっぱい禁止
565デフォルトの名無しさん:2011/12/19(月) 07:33:35.43
>>563
何しろzentai_strのレベルだから、そこに気づくのも無理だろ
566デフォルトの名無しさん:2011/12/19(月) 09:47:15.50
微妙に遅くなるかもしれないけど、こっちの方が確実だな。
もっとうまい書き方があるのかもしれないけど、とりあえず。

sub marker {
 my ($s, $p, $c) = @_;
 my @d = split m/(<.+?>)/, $s;
 for (@d) {
  next if /^</;
  s|$p|<span style="background-color: $c">$p</span>|g;
 }
 return join '', @d;
}

これならたとえば marker($str, "style", "#ffcc99"); なんてのでも変換できるはず。
なお関数内で複数のパラメータを受け渡す時は my ($a, $b, $c) = @_; みたいにやるのが普通。
あとPerlとは関係ないが、今のHTMLではFONTタグの使用はおすすめできない。
style属性を使うならなおさら、>>562 のようにspanを使うのが一般的。
PerlだけでなくHTMLも勉強しようぜ。
567デフォルトの名無しさん:2011/12/19(月) 09:57:42.09
オレだったらshiftするなぁ

my($str) = shift;
my($merker_str)=shift;
my($merker_color) = shift;

一個一個に or die $! 付けたり付けなかったり
後から引数増やしたりとかの関係で

ともかく、とりあえず$_[0]とかは使わない
568デフォルトの名無しさん:2011/12/19(月) 11:05:51.69
何回もmarker呼び出すんじゃなくて一回の走査で全部置換するようにすればいいんじゃないの。

sub marker {
 my ($str, $color_hr) = @_;
 my $re = join '|', map { quotemeta } keys %$color_hr;
 $str =~ s,($re),<span style="background-color: $color_hr->{$1}">$1</span>,g;
 $str;
}

print marker($str, {'あああ' => '#00ff00', 'www' => '#0000ff'});
569デフォルトの名無しさん:2011/12/19(月) 14:46:27.96
アナルパールとかいうアダルトグッズあるよね
570デフォルトの名無しさん:2011/12/19(月) 15:35:45.78
>>569
パ・パ・パパッパ・Perlライス
571デフォルトの名無しさん:2011/12/19(月) 15:36:14.42
Perlerは手首に巻いたりするらしい
572デフォルトの名無しさん:2011/12/19(月) 15:45:44.45
>>570
山陰?
573デフォルトの名無しさん:2011/12/19(月) 15:58:59.63
>>572
北陸でもやってたぞ
574デフォルトの名無しさん:2011/12/19(月) 16:10:25.05
金井克子?
575デフォルトの名無しさん:2011/12/19(月) 16:36:03.53
金井克子についての質問は板違いです。WEB プログラミング板でどうぞ。
576デフォルトの名無しさん:2011/12/19(月) 17:47:26.91
makeはメイクだから
makerはメイカーだろ?
だからマーカーはmekerで正しいんじゃないのか?
577デフォルトの名無しさん:2011/12/19(月) 17:55:31.38
何がだからなのかわからん
578デフォルトの名無しさん:2011/12/19(月) 18:06:22.58
on your mark!
579デフォルトの名無しさん:2011/12/19(月) 19:16:58.60
$str="<FONT COLOR=\"#00ff00\">aaa</FONT>bbb<FONT COLOR=\"#00ff00\">ccc</FONT>";
$str_ =~ s/<FONT COLOR=\"#00ff00\">.*?<\/FONT>/AAA/g;

このような場合だとaaa〜cccまでがAAAに置換されてしまいますが
aaaとcccだけAAAに置換する方法を教えてください
580デフォルトの名無しさん:2011/12/19(月) 19:53:27.61
.*?を.+?にしたらいいんじゃないの?
581デフォルトの名無しさん:2011/12/19(月) 20:01:57.40
━┓
┏┛    ⌒
・    .___ ⌒  ___   ━┓
   / ―\ / ―  \  ┏┛
 /ノ  (● X  (●)  \ヽ ・.
| (●)  /_  (⌒  (●) /.
|   (__/      ̄ヽ__) /
582デフォルトの名無しさん:2011/12/20(火) 02:02:04.56
>>579
で、それは何なの? 宿題なの?
583デフォルトの名無しさん:2011/12/20(火) 08:04:07.76
>>558
これでいいのか?HTMLにするなら元の文字列もちゃんと括ってくれ。
http://pastebin.com/MbDfDUk4
584デフォルトの名無しさん:2011/12/20(火) 12:27:15.62
>>583
長すぎて理解できませんでした
585デフォルトの名無しさん:2011/12/20(火) 12:35:55.68
579だけど質問が違いました
特定のタグで囲まれた中の文字列の置換について教えてください

例えば
$str = "<FONT COLOR=\"#00ff00\">aaa<\/FONT><FONT COLOR=\"#00ff00\">bbbFONT<\/FONT><FONT COLOR=\"#00ff00\">ccc<\/FONT>";
のbbbFONTの部分のFONTをAAAに置換したい場合

$str =~ s/<FONT COLOR=\"#00ff00\">.*?FONT<\/FONT>/AAA/g;
だと結果はAAA<FONT COLOR=\"#00ff00\">ccc</FONT>になってしまいます
586デフォルトの名無しさん:2011/12/20(火) 13:06:13.16
>>584
理解できなかった理由は「長すぎたから」では無かろ。

#!/usr/bin/perl -w
use strict; use CGI qw(escapeHTML);
my $str = <<'EOH';
あああ<span title="FONT">FONT</span>www
<span title="www
www">あああaaaFONTwww</span
>aaa<span>FONT<span title="aaaあああaaa">wwwあああwww
</span>FONT</span>
EOH
print 'あああ = ', mark(\$str => 'あああ', with => '#00ff00'), "\n";
print mark($str => 'FONT', with => '#0000ff');

sub mark {
  my($str, $target, %css) = @_;
  With: {
    defined $css{'with'} or last With;
    local $_ = delete $css{'with'};
    /^#/ and $css{'background-color'} = $_, last With;
  }
  $css{'font-weight'} ||= 'bold';
  my $css = escapeHTML(join ' ', map "$_:$css{$_};", keys %css);

  # http://www.din.or.jp/~ohzaki/regex.htm#ReplaceOutside
  my $count = (ref $str ? ${$str} : $str) =~
    s{ ((?:\G|>)[^<]*?) (\Q$target\E) } {$1<span style="$css">$2</span>}gx;

  ref $str ? $count : $str;
}
587デフォルトの名無しさん:2011/12/20(火) 13:06:54.85
>>585
おまえ、これまでのみんなの回答をぜんぜん読んでも試してもいないだろ。
質問する資格なしだな。
588デフォルトの名無しさん:2011/12/20(火) 13:36:19.25
>>587
同意
だいたい>>558の方はどうなったんだよ
589デフォルトの名無しさん:2011/12/20(火) 14:05:50.59
こういう手合いは、何か解決作やらヒントを知りたいんじゃなく、
ピンポイントで答えだけを聞きたいヤツだ。
長々書いてやっても、どこに答えがあるのかわかってない。
質問する前に、もっと入門書なり読んで基本学ぶべきだ。
590583:2011/12/20(火) 16:38:20.98
>>584
自分では結構よく書けたと思うんだがなァ……
具体的にどこら辺が分からなかったのか教えてくれると嬉しい。
コメント入れる時の参考にする。
591デフォルトの名無しさん:2011/12/20(火) 19:44:47.38
$str =~ s/>bbbFONT</>bbbAAA</g;
592デフォルトの名無しさん:2011/12/20(火) 22:27:43.83
>>586
リファクタリング練習。求む(反論 or 改善案)
sub mark {
  my($str, $target, %arg) = @_;
  my %css = (
    # specify your default marker styles below:
    'font-weight'   => 'bold',
    'background-color' => delete $arg{with},
    %arg,
  );

  # Serialize CSS.
  my $style = join ' ',
        map { "$_:$css{$_};"      }
        grep {   $css{$_} ne q{}   }
        grep {   $css{$_} !~ /[":]/  }
        grep { ref $css{$_} eq 'SCALAR' }
        keys %css
        ;

  my $count = (ref $str ? ${$str} : $str)
    =~ s{
      ((?:\G|>)[^<]*?) (\Q$target\E)
    } {
      $1<span style="$style">$2</span>
    }gx;

  ref $str
    ? return $count
    : return $str
    ;
}
593デフォルトの名無しさん:2011/12/20(火) 23:04:20.15
こんなかんじじゃねーの。
動かないって?知ってる。

my $parser = HTML::Parser->new(
 api_version => 3,
 text_h => [\&conv],
);

$parser->parse($html);

sub conv {
 my ($self, $tagname, $attr, $text) = @_;
 $text ~= s/$merker_str/<FONT STYLE=\"background:$merker_color\"><\/FONT>/
}
594デフォルトの名無しさん:2011/12/21(水) 02:09:48.38
タグで囲まれた中の置換最短プログラム

$word="FONT";
$chikan="RRR";

$str =~ s/([^<])$word([^>])/$1$chikan$2/g;
595デフォルトの名無しさん:2011/12/21(水) 06:46:13.28
>>594
それだとたとえば $word='COLOR'; $str='<FONT COLOR="#FF0000">'; なんて時にアカン。
596デフォルトの名無しさん:2011/12/21(水) 07:33:06.43
>>585
Web::Scraperを使え
597Glenn Seemann:2011/12/21(水) 13:08:36.24
Web::Scraperとか重すぎ
ごみすぎ
カスすぎ
オワコン

なんか柔軟性にかける
598デフォルトの名無しさん:2011/12/21(水) 13:15:19.50
また新たにヘンなコテハンが出てきたな。
専ブラのブロック設定更新しとくか。
599デフォルトの名無しさん:2011/12/21(水) 13:20:08.34
自分「Web::Scraperっていうのいいですよ」
和田「そういうのは 使わないほうがいい 正規表現があるじゃないか」
自分「え?」
和田「たとえば和田が開発したWEBアプリ Perlがあればそのまま導入できちゃいます 顧客先で」
自分「はい なんかCPANが簡単になるのあるらしいですけど」
和田「Web::Scraperというやらはな CPANから導入しないと大変 依存関係もめんどくさい」
和田「それならPerlだけで動く 標準的なソースコードのほうが導入しやすい」
自分「なるほど でもWeb::Scraperはいいですよ CSSセレクタもそろって抽出しやすいです 正規表現より凄いです」
和田「なんのための Perl!!!! 正規表現は王道!!」
和田「Perlは好き だけど言語学習じゃないんだ 結局は何を作るか」
自分「はい」
和田「まあ見たまえ わしのサイトをhttp://www.synck.com/
自分「凄いです!和田さん!!」
600デフォルトの名無しさん:2011/12/21(水) 13:25:27.47
HolyGrail「



え?なにこのフリーランス



 まじ強すぎ



 俺よりやばくね 



俺元ヤフーなんだけど



負けるわけがない





自分「ゲームばっかりしてるてめーが和田に勝てるかよw」
601デフォルトの名無しさん:2011/12/21(水) 13:29:14.71
説教君まだいたのか。
602デフォルトの名無しさん:2011/12/21(水) 13:36:25.60
コテつけてくださいPerl忍者さん
603デフォルトの名無しさん:2011/12/21(水) 17:13:45.92
my @words = ( 'sevens', 'even' );
foreach(@words){
print "even=$_\n" if( $_ =~ /(?:(?!s)even)/ );
print "sevens=$_\n" if( $_ =~ /(?:sevens)/ );
}

上記でeven=even sevens=sevensとプリントしたいのですが、上記では$_に"sevens"が来たときに
両方プリントされます。
(?!s)でevenの前にsが無い時、と表現しているつもりなのですが、どこがおかしいのでしょうか。
^$(先頭、最後尾)を使わずに実現したいです。
604デフォルトの名無しさん:2011/12/21(水) 17:19:49.44
>>603
その場合は否定戻り読み(?<!…)を使ってください。
605デフォルトの名無しさん:2011/12/22(木) 02:51:47.85
>>603
> print "even=$_\n" if( $_ =~ /[^s]even/ );
> print "sevens=$_\n" if( $_ =~ /sevens/ );
606デフォルトの名無しさん:2011/12/22(木) 02:59:47.14
[^s] は行頭にはマッチしませんことよ
607デフォルトの名無しさん:2011/12/22(木) 03:01:00.99
>>605
/(?:[^s]|^)even/
608デフォルトの名無しさん:2011/12/22(木) 03:01:26.26
あ、s/行/先/
609603:2011/12/22(木) 09:20:21.02
>>604-608

色々と情報ありがとうございます。
607がよさげなのでこれで対応しました。
ありがとうございました。
610デフォルトの名無しさん:2011/12/22(木) 09:58:43.12
> ^$(先頭、最後尾)を使わずに実現したいです。
なんだったのか
611デフォルトの名無しさん:2011/12/22(木) 10:07:37.40
>>610
うん。謎だね。
612デフォルトの名無しさん:2011/12/22(木) 11:44:17.02
単語の部分文字列にマッチしたくないんだから、 ¥b を使えば楽な
ケースじゃないかと
613デフォルトの名無しさん:2011/12/22(木) 12:08:44.95
> 単語の部分文字列にマッチしたくないんだから、
んなこた書いてないと思うけど。

seven と even を区別するだけなら \b でもできるけど、
たとえば revenge はマッチさせたいって場合だと困るね。

個人的には>>604でいいじゃんと思う。
614デフォルトの名無しさん:2011/12/23(金) 00:15:03.03
一番いいのはHTMLパーサーを使うこと。
615デフォルトの名無しさん:2011/12/24(土) 02:47:34.54
length()関数は日本語まじりの文字列でも文字数を返します
例:
my $test="テストです!!!!!";
print length($test),"\n";

結果:
10

バイト数を知りたい場合はどうすればいいのでしょうか?
616デフォルトの名無しさん:2011/12/24(土) 03:23:12.15
617デフォルトの名無しさん:2011/12/24(土) 03:42:46.97
bytes::* は非推奨らしいよ
encode_utf8 しろとさ
618デフォルトの名無しさん:2011/12/24(土) 05:31:00.07
>>615
>>617
バイト数は文字コードによって違ってくるから
utf8ならencode_utf8でいいけどShift JISとか他のコードの場合はまた別

だよね
619デフォルトの名無しさん:2011/12/24(土) 17:40:34.42
本来なら全角一文字は2バイトですよね?
なぜ全角一文字が3バイト扱いされているのでしょうか?

#!/usr/bin/perl
use utf8;
binmode STDIN, ":utf8";
#binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
use Encode;
use Encode qw(encode_utf8);

my $test="あいうえお";
print length(Encode::encode_utf8($test)),"\n"; #結果は15
620デフォルトの名無しさん:2011/12/24(土) 17:44:50.95
>>619
いつから全角一文字が2バイトだと錯覚していた?
621デフォルトの名無しさん:2011/12/24(土) 17:46:20.57
>>619
日本語文字に10バイトくらい使う文字コードもあってもいいんじゃねーーーの???
622デフォルトの名無しさん:2011/12/24(土) 17:48:06.93
shiftjisでうまくいきました
623デフォルトの名無しさん:2011/12/24(土) 18:39:12.73

特殊記号消えるぞ
624デフォルトの名無しさん:2011/12/24(土) 21:18:43.56
タグの中以外の文字列の置換やっとできた
sub make_merker{
my($zentai_str) = shift; #全体の文字列
my($merker_str) = shift; #マーカーをつける文字列
my($merker_color) = shift; #マーカーの色
my($disp_merker_str); #マーカーをつける文字列を表示するときの文字列
my($disp_zentai_str); #表示する全体文字列
my($tag,$data);
my(@tag_list,@data_list);
my($n) = 0;

$disp_merker_str = $merker_str;
$merker_str =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g;

while($zentai_str =~ /<(.*?)>/g){
push(@tag_list,$1);
}
$zentai_str =~ s/<(.*?)>/<>/g;

@data_list = split(/<>/,$zentai_str);

foreach $data(@data_list){
$tag = $tag_list[$n];
if($tag ne ""){$tag = "<".$tag.">";}
else{$tag = "";}
$data =~ s/$merker_str/<FONT STYLE=\"background:$merker_color\"><B>$disp_merker_str<\/B><\/FONT>/g;
$disp_zentai_str = $disp_zentai_str.$data.$tag;
$n++;
}
return($disp_zentai_str);
}
625デフォルトの名無しさん:2011/12/24(土) 21:39:32.05
無駄な努力ご苦労様としか
626デフォルトの名無しさん:2011/12/24(土) 21:45:28.10
こういうゴミが日々生産されるのもperlの醍醐味
本人が手ごろな作業感と達成感を得られるんならほっといてもいいけど
627デフォルトの名無しさん:2011/12/24(土) 21:55:41.29
HTMLパーサー使えばもっと簡単に
もっと安全に作れるのにな。
628デフォルトの名無しさん:2011/12/24(土) 22:23:03.52
何でも自分で作りたい年頃なんだろうな。
629デフォルトの名無しさん:2011/12/24(土) 22:28:11.32
Perl厨って同じ正規表現をあちこちで使うやつ多いよな。
んなもん、適当な名前つけて関数にすればいいのに。
630デフォルトの名無しさん:2011/12/25(日) 02:39:48.85
モジュールのサイトとかほとんど英語で書かれていて
どれが使いたい関数なのか探すのに時間かかるから
結局自分で作った方が速い
631デフォルトの名無しさん:2011/12/25(日) 02:41:44.04
お前がそう思うならなんちゃら
632デフォルトの名無しさん:2011/12/25(日) 02:42:02.34
そうなんだすごいね!
633デフォルトの名無しさん:2011/12/25(日) 05:24:37.68
モジュールのパスは、lib/5.8.8が標準モジュールで、
lib/site_perl/5.8.8は後からCPANで入れたモジュールでしょうか?
634デフォルトの名無しさん:2011/12/25(日) 07:13:02.64
>>633
設定やディストリ次第だが概ねそんな感じ
635デフォルトの名無しさん:2011/12/25(日) 09:17:54.37
>>624
結局 merker のままか…
636デフォルトの名無しさん:2011/12/25(日) 09:21:11.95
彼が他人の回答も意見も全く読んでないことをよく示していますね
637デフォルトの名無しさん:2011/12/25(日) 09:27:44.86
そもそも、引数を取り出すのに今どきshiftだもんなぁ…
>>624のような石頭爺は万事これだから困る。
638デフォルトの名無しさん:2011/12/25(日) 09:49:09.57
>>624なら = @_ のほうがいいってのはわかるけど、
shiftで引数取ること自体は特定の場面では有用だろ。今も昔も。
639デフォルトの名無しさん:2011/12/25(日) 10:55:38.72
'0'と'1'のみで構成された文字列を
4桁ごとにスペースなどで区切って表示したいのですが
(文字列の長さは4の倍数に既になってます)
何か良い関数・妙案はありますか
今のところ配列に突っ込んで愚直に4回ずつshiftしつつ表示してます
640デフォルトの名無しさん:2011/12/25(日) 11:00:28.17
場合によりけりかな。
カプセル化した時なんかはよくshiftつかってる。
sub method { shift->_method(@_); }
641デフォルトの名無しさん:2011/12/25(日) 11:11:39.57
>>639
my $str = '010111010010101010100101010';
print join( ' ', split(/([01]{4})/, $str) );
642デフォルトの名無しさん:2011/12/25(日) 11:20:14.97
print join (' ', unpack("(A4)*", $str));
643デフォルトの名無しさん:2011/12/25(日) 11:21:25.28
print join (' ', $str =~ m/..../g);
644デフォルトの名無しさん:2011/12/25(日) 11:23:22.12
>>643
これ以上ゴルフできるのか?
645デフォルトの名無しさん:2011/12/25(日) 11:36:08.99
>>641
それだと余計な空文字列要素が間や先頭にできてしまう

>>644
切り詰めれば
$,=$";print$str=~/..../g
とかはできる。さらに $str じゃなくて $_ なら6文字縮むし、print のかわりに say が使えれば2文字縮む。
ワンライナーか競技ゴルフじゃなきゃやらんけど
646デフォルトの名無しさん:2011/12/25(日) 11:43:05.18
書く文字数を減らすんじゃなくて、
処理速度が速い方法を考えろよ・・・
647デフォルトの名無しさん:2011/12/25(日) 11:45:16.28
俺はゴルファーでも一行野郎でもないので、
ここは文字列が4の倍数以外でも表示できる
>>642を推したい。
648デフォルトの名無しさん:2011/12/25(日) 14:15:57.78
>>641-647
ありがとうございます。色々と勉強になりました。

一応文字列は4の倍数で来るはずですが
何かの手違いで狂っていた場合に見つけやすいということで >>642 にします。
pack/unpackは未だに苦手なので、あまり理解できていないのですが…

あとは >>645 さんのもワンライナー用に覚えておこうかなと思いました。
パッと見で理解できる分、覚えやすいですし。
$ うんたらかんたら | perl -nE'$,=" ";say/..../g'
みたいな感じでサラッと書けたら楽しそうです。
649デフォルトの名無しさん:2011/12/25(日) 14:40:21.34
>>624>>648 の爪のアカを煎じて飲ませたい
650デフォルトの名無しさん:2011/12/25(日) 17:22:58.16
終了しているとこなのにすまん
$str =~ s/(....)/\1 /g;
または
(my $str1 = $str) =~ s/(....)/\1 /g;
だと思うんだ
評価求む
651デフォルトの名無しさん:2011/12/25(日) 17:39:58.28
>>650
…盲点でした
考えてみれば、それだけのことですよね…
というか、むしろ何故それを思いつかなかったんだろう?!
split()してshift()とか俺は最初に何をしていたんだあああ

ちなみに後に(キリッ)とばかりに書いたワンライナーに至っては
perl -pe's/(....)/\1 /g'
…要するに
sed 's/\(....\)/\1 /g'
になってしまいました…

ま、まあ >>642 という良さげな案を貰えたので結果オーライということにしておきます!ありがとうございました!
652デフォルトの名無しさん:2011/12/25(日) 17:44:37.25
どういたしまして。
653650:2011/12/25(日) 18:20:01.11
>>651
レスありがと
自分が当然こうだと思う答えが微塵も触れられてないと、
いささか不安になります
当たり前のことに気がつかないことって、結構あってこわいですね
654デフォルトの名無しさん:2011/12/25(日) 18:47:59.47
>>653
目的が「表示したい」であって「文字列を加工したい」ではないから、
元データを破壊する方法は採らないし、
出力に流し込めば済むものをわざわざ変数に入れないのが自然。

置換の場合の別解: s/(?<=\G....)/ /g

655デフォルトの名無しさん:2011/12/25(日) 22:58:29.74
>>650
お題だけ見るとそれで正解なんだけど、
察するにバイナリを整列させた上で何かを見比べようとしてる風に見える。
なら4桁毎に配列になってるほうが後々同じ事繰り返すリスクを減らせると思う。
「2桁目が1のヤツだけ抜き出したい」とか「出現頻度調べたい」とか。
1と0の羅列を目に見せるのが最終的な目的とはちょっと思えないかな。
656650:2011/12/25(日) 23:25:29.40
>>654,655
そういうことですか。やっぱ、気が回ってないのですね。
勉強になります。ありがとう
657650:2011/12/25(日) 23:36:46.91
あっ、654も読めてないのですね。
654さん、失礼しましたm(_ _)m
658657orz:2011/12/25(日) 23:43:58.13
×654 ○651
659デフォルトの名無しさん:2011/12/26(月) 02:14:04.76
>>634
ありがとうございました
660デフォルトの名無しさん:2011/12/27(火) 08:39:39.33
map/grep/sortといった関数は、第1引数がブロックだとその後にカンマが要らないのですが、
何故そのような仕様なのでしょうか?
661デフォルトの名無しさん:2011/12/27(火) 09:29:12.21
#-- 初期化 --#
$hash = {
    'name1' => 'value1',
    'name2' => 'value2',
    'name3' => 'value3'
};

#-- 代入 --#
$hash->{'name4'} = 'value4';
$hash->{'name5'} = 'value5';
$hash->{'name6'} = 'value6';
$hash->{'name7'} = 'value7';

複数代入する時に$hashを毎回書かないようにする書き方ってありませんか?
662デフォルトの名無しさん:2011/12/27(火) 09:56:03.92
>>661
動かないコードを示されてもね…
だからヒントだけ。例えば↓
@array = (1, 2, 3);
@array = (@array, 4, 5, 6);
663デフォルトの名無しさん:2011/12/27(火) 10:33:59.97
>>662
普通に動くけど?
664デフォルトの名無しさん:2011/12/27(火) 10:43:19.40
>>661
http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Slices
http://perldoc.jp/docs/perl/5.10.0/perllol.pod#Slices

my $hash = { n1 => 'v1', n2 => 'v2', n3 => 'v3' };
@{$hash}{qw(n4 n5 n6 n7 n1)} = qw(v4 v5 v6 v7 v8);
print map "$_:[$hash->{$_}]\n", sort keys %{$hash};
665デフォルトの名無しさん:2011/12/27(火) 10:46:20.94
>>662
それだと新たなハッシュが作られませんか?
あくまでも現在のハッシュに追加したいのです。
666デフォルトの名無しさん:2011/12/27(火) 10:47:00.50
>>661
データの追加なら↓とか
$hash = {
  %{ $hash },
  'name4' => 'value4',
  'name5' => 'value5',
  'name6' => 'value6',
  'name7' => 'value7'
};
667デフォルトの名無しさん:2011/12/27(火) 10:48:11.94
>>664
ありがとうございます。
参考ページまで付けて頂いて感謝します。
668デフォルトの名無しさん:2011/12/27(火) 16:21:59.06
環境はcygwin windowsXPです。
なぜか文字化けするのですがどうしたらなおりますか?

#!/usr/bin/perl
# ソースコードはutf8で書かれています
use utf8;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
use strict;
use warnings;

print " ここでは文字化けしない";

open (IN, "<./in.txt"); # in.txtはUTF8
while(<IN>){
print $_; #なぜか文字化け
}
close IN;
669デフォルトの名無しさん:2011/12/27(火) 16:26:45.33
open IN, '<:utf8', 'in.txt'
670デフォルトの名無しさん:2011/12/27(火) 16:26:45.35
668ですが
utf8::decode()でなおりました
671デフォルトの名無しさん:2011/12/27(火) 16:28:51.40
>>669
うまくいきました
ありがとうございます

binmode STDIN, ":utf8";
をつかえばUTFフラグつきの文字列を受け取って貰えるかと思っていました
672デフォルトの名無しさん:2011/12/27(火) 16:37:38.56
>>668
open (IN, "<:utf8", "./in.txt");
が最適解かな。
673デフォルトの名無しさん:2011/12/27(火) 16:39:52.97
うわもう出てたごめん。
あとは
open (IN, "<./in.txt");
binmode IN, ":utf8";
while(<IN>){
...

とか。
674668,670,671:2011/12/27(火) 17:06:20.93
取り込んだ文字列を関数で処理しようとしましたが正しく処理されないのはなぜでしょうか?

#!/usr/bin/perl
# test.pl: a /usr/bin/perl\015 script, UTF-8 Unicode (with BOM) text executable, with CRLF line terminators
use utf8;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
use strict;
use warnings;
my @array;
open (IN, "<:utf8", "./in.txt"); # in.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators
while(<IN>){
chomp($_);
push(@array, $_);
}
close IN;
print "$array[0]...........\n"; # ...........
print "$array[1]...........\n"; # ...........
print &repeat($array[0]); # 変になります
print &repeat("テスト2"); # テスト2テスト2
sub repeat{
my ($str) = @_;
chomp($str);
print "*** $str$str ***\n"
}

実行結果:
...........
...........
***トスト
1*** テスト2テスト2 ***
1
675668,670,671:2011/12/27(火) 17:11:01.71
in.txtを CRLFからLFにしたらなおりました
676デフォルトの名無しさん:2011/12/27(火) 17:12:02.04
入力は一応:encoding(UTF-8)が推奨されている

open IN, '<:encoding(UTF-8)', 'in.txt'

perlunifaq - Perl Unicode FAQ
http://perldoc.jp/docs/perl/5.10.0/perlunifaq.pod#What32is32the32difference32between32:encoding32and32:utf863
677デフォルトの名無しさん:2011/12/27(火) 22:57:23.67
>>660
中括弧`{}`はBLOCKにもEXPR(無名ハッシュリファレンス)にも使われるから。
perldocのmapの一番下に例が書いてある。
http://perldoc.jp/func/map

http://perldoc.jp/docs/perl/5.8.8/perlref.pod#Making32References
の項番3にあるように、見つけづらいバグを不用意に埋め込んでしまわないよう
無名ハッシュリファレンスの開き括弧を明示的に`+{`にする人もいる。
逆にBLOCKを`{;`で始めてる例があるけど実際のコードでお目にかかった事はない。どっかにあるのかな。
俺の場合はreturnを省略せずにちゃんと書くかBLOCKの行末に`;`をつける。
678デフォルトの名無しさん:2011/12/28(水) 10:48:25.53
cpanplusで質問です。
下記でモジュールインストール出来ますが、アンインストールをコマンドライン一行でする方法はどのようにすればよいのでしょうか?

perl -MCPANPLUS -e "install Math::Round"
679デフォルトの名無しさん:2011/12/28(水) 13:29:02.80
$_ = decode('utf-8', $_) してる俺に隙はなかった
680デフォルトの名無しさん:2011/12/28(水) 13:43:01.12
>>679
decode_utf8を使わぬとはまだまだだな
681デフォルトの名無しさん:2011/12/28(水) 14:12:31.36
>>678
App::pmuninstall
で行けなかったっけ?
682678:2011/12/28(水) 16:35:13.45
>>681

おお出来ました。
ありがとうございました。
683デフォルトの名無しさん:2011/12/28(水) 17:02:07.51
decode_utf8が気になって今ググってるのですが、decode_utf8の使い方は
utf8の文字コードがあった場合、utf8フラグを付け、すでにフラグがついてればそのまま返す。

というもので、文字コードがsjisとかだと使えないということでしょうか?↓

use utf8;

my $str_utf8 = encode('utf8', 'あああ');
my $str = encode('utf8', $str_utf8);
my $str_test = encode('sjis', $str_utf8);

my $hoge1 = decode_utf8($str_utf8); #そのまま返すのでutf8フラグあり
my $hoge2 = decode_utf8($str); #utf8フラグ付きで返す
my $hoge3 = decode_utf8($str_test); #sjisなのでエラー??


684デフォルトの名無しさん:2011/12/28(水) 17:27:33.03
sjisだと使えません。素直にdecode使ってください。
685デフォルトの名無しさん:2011/12/28(水) 17:29:23.43
encode('utf8', 'フラグ付き') で得られた $str_utf8 をさらに encode してる時点でおかしい
686デフォルトの名無しさん:2011/12/28(水) 17:37:17.49
文字コードがsjisなのに「use utf8;」としている時点でおかしい
687デフォルトの名無しさん:2011/12/28(水) 17:49:09.27
>>686
ソースの文字コードと扱うデータの文字コードは別だからおかしくはないだろ
688デフォルトの名無しさん:2011/12/28(水) 17:55:00.72
>>687
>>683よく見ろ。扱ってるデータはコードの中にしかない。
689デフォルトの名無しさん:2011/12/28(水) 19:00:47.80
(1 .. 5)と(1, 2, 3, 4, 5)は何が異なるのでしょうか?

これだと上手く行くのですが、
foreach my $n (1 .. 5) {
$n = $n * 10;
print "$n\n";
}

これだと「Modification of a read-only value」と言われてしまいます。
foreach my $n (1, 2, 3, 4, 5) {
$n = $n * 10;
print "$n\n";
}
690デフォルトの名無しさん:2011/12/28(水) 19:38:24.77
>>689
http://perldoc.jp/docs/perl/5.10.0/perldiag.pod
http://perldoc.jp/docs/perl/5.10.0/perlsyn.pod#Foreach32Loops
http://perldoc.jp/docs/perl/5.14.1/perlop.pod#Range32Operators

前者の $n は、範囲演算子で生成されたリストの各要素に対するエイリアスなので変更できる。
後者の $n は、コード中に書かれた各定数 1,2,3,4,5 のエイリアスなので変更できない。
691デフォルトの名無しさん:2011/12/28(水) 19:50:41.29
>>683
とりあえず use utf8; を外せばうまくいく。
必要になったときに use utf8; を使うようにすれば悩むことはない。
692デフォルトの名無しさん:2011/12/28(水) 21:19:50.29
文字コード変換は Jcode.pm、フラグの悩み無用か。
693デフォルトの名無しさん:2011/12/28(水) 21:30:06.25
694デフォルトの名無しさん:2011/12/28(水) 21:35:58.37
だんだんと何に悩んでいるのかわからなくなりました
695デフォルトの名無しさん:2011/12/28(水) 21:55:58.29
>>694
今年もおつかれさま。
696デフォルトの名無しさん:2011/12/28(水) 22:09:19.67
一度、C言語に戻ってPERLが必要になったらまたきます
697デフォルトの名無しさん:2011/12/28(水) 22:36:56.77
ポインタより難しいPerlのutf8フラグさすが高級言語初心者お断り
698デフォルトの名無しさん:2011/12/28(水) 22:44:43.65
ポインタよりリファレンスの方が難しいと思う
699デフォルトの名無しさん:2011/12/28(水) 22:55:16.98
1レスで理解できるutf8フラグ

utf8フラグとい名前がまずかったね。
Perl文字列フラグなどという名前だったらよかった。

Perl文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。

バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。

ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。

話はこれだけ。
700デフォルトの名無しさん:2011/12/28(水) 22:57:26.67
とある本ではPerl文字列を「"文字列"」って表現(""含む)してた
これは良かったな
701デフォルトの名無しさん:2011/12/28(水) 23:04:56.66
encode/decode が逆に感じる気もしないでもない?
702デフォルトの名無しさん:2011/12/28(水) 23:16:21.34
情報源→符号化→通信路→復号化→受信
703デフォルトの名無しさん:2011/12/29(木) 00:42:01.31
Perl様の視点から見てencode/decodeだもの
704デフォルトの名無しさん:2011/12/29(木) 06:53:26.43
おれらはPerl様のしもべなのね
目的と手段を逆にするとこんなに苦しいとは
705デフォルトの名無しさん:2011/12/29(木) 07:32:57.74
下位層を実装するときは、実装者が王様になってはいけないと思うの
だってアプリケーションプログラマを見下すようなことになるんだもの
そうでしょ?おじいさん
706デフォルトの名無しさん:2011/12/29(木) 12:06:21.23
えー?
Shift JISとかEUC-JPとかUTF-8とかはそれぞれのコード体系にencodeされてるんだし
Perl内で文字列として処理する時はどんなバイト列になってるかとかは考えない、
つまりcodeとして意識する必要はないってタテマエなんだから、
encode/decodeは現状どおりで合ってんじゃね?
707デフォルトの名無しさん:2011/12/29(木) 12:09:45.69
ASCIIのときもそうしてたっけ?
なんか言ってること間違ってない?
708デフォルトの名無しさん:2011/12/29(木) 13:16:03.82
to_bytes()/to_string()みたいな名前だったら分かりやすかったな。
名前は大事だ。
709デフォルトの名無しさん:2011/12/29(木) 14:04:16.08
つーか、素直に文字コード変換でいんじゃね?
プログラミングするにあたっては何かひとつにまとめるんだろうけどさ
710デフォルトの名無しさん:2011/12/29(木) 16:33:26.40
encodeだけにするとかは?
decode関数は、

my $perl_internal_string = encode("internal", $binary);
711デフォルトの名無しさん:2011/12/29(木) 16:45:37.67
あ、ごめん。
$binaryの文字コード情報がないわw
712デフォルトの名無しさん:2011/12/29(木) 20:47:43.29
いやあるだろ データ列そのものが情報源
なかったらテキストエディタとか自動判別に困る
713デフォルトの名無しさん:2011/12/29(木) 20:54:51.34
いやw
情報源がなくて困ってるから
自動判別なんて曖昧なものを使うしか無いんだろw

100%の制度を持つ全世界言語対応の
自動判別エンジンなんて無いんだぞ。
714デフォルトの名無しさん:2011/12/29(木) 20:56:57.03
デタラメに乱数でねつぞうしたバイナリに
utfフラグ付ければ、それはutf文字列になるのか?
ならんだろ。

そういうことだ
715デフォルトの名無しさん:2011/12/29(木) 21:16:06.47
> Shift JISとかEUC-JPとかUTF-8とかはそれぞれのコード体系に
> encodeされてるんだし
コンピュータサイエンスとして正しいかもしれないけど、プログラマ
もユーザもそのことを意識してない(意識させない)でしょ?普通。
例えば ASCII のときにそのことを意識してないでしょ?
716デフォルトの名無しさん:2011/12/29(木) 21:28:47.50
>>714
そういうことだ(キリッ)って恥ずかしくない?w

バイナリにutf8フラグをつけたらどうなるかだって?
答えは出てる。

一部(全部)が壊れたutf8文字列だ。

壊れているってことが解るのも重要なことなんだが、
お前はランダムで捏造したバイナリを
どう扱って欲しいわけ?
717デフォルトの名無しさん:2011/12/29(木) 21:37:45.93
>>715
> 例えば ASCII のときにそのことを意識してないでしょ?
論点がずれてるなぁw ま論点がずれた話に付き合ってあげるか。

ASCIIの時に意識してないというのは正確に言えば全部が
ASCIIで統一された世界であれば意識しないってことだよ。

残念ながら世界はASCIIで統一されていない。
ASCII以外を扱う世界で、ASCIIと同じように意識させない作るとしたら
すべてを何か一つのコードで統一しなければならない。ASCIIと同じように。

すべてをっていうのはPerlだけじゃなく内外すべての文書をUTF8なりなんなりで
統一するということ。それが可能ならその方法でいいよ。でも現実的じゃないよね。

じゃあどうするか、方法は2つある。
1.変数にどの文字コードが入ってるかを人間が意識してコーディングする
2.Perlの中だけは統一した世界を作って人間は変換処理だけをすればいい。

前者はShift JISとか日本語系文字コード以外も全て意識しないといけないので大変。
後者なら変換部分だけやれば、あとは文字コードを意識しないでいい。

つまり、ASCII以外を扱う世界において、ASCIIのように意識しないでいい最善の方法。
それがUTF8フラグ。
718デフォルトの名無しさん:2011/12/29(木) 22:40:36.63
>>717
最後の一行(と最後から4行目のくだりも)に同意できないんだな、これが
719デフォルトの名無しさん:2011/12/29(木) 23:16:35.10
「後者の変換部分」は「前者の意識しないといけないので大変」と
同じわけだから、後者のほうが(最善の方法とか言って)まるで
魔法のように簡単であるかのような書き方には注意が必要です。
720デフォルトの名無しさん:2011/12/29(木) 23:22:12.97
ASCIIコードはまァ、Perlの処理系の記述に使ってる「大前提」の存在だからな。
「Perlで扱う文字列データ」の範疇の前にまず「Perlを記述するための記号セット」な訳で。
721デフォルトの名無しさん:2011/12/29(木) 23:25:36.64
UTF8はUTF8でOS依存なのどうかならんのか
722デフォルトの名無しさん:2011/12/29(木) 23:28:49.90
>>711
なんにしても外部から入力される文字列のコードページは
誰にも判断できないんだから自動判断するしかないわな
723デフォルトの名無しさん:2011/12/29(木) 23:47:22.16
いわゆる外字を常に使っているような環境では、テキストといっても
公式の規格外の符号位置を含んでいるわけで、そのままではdecode/
encodeがうまくいかない(入出力双方のマッピングテーブルが必要に
なる)。外字セットをたくさん扱っている場合は、毎回テーブルを
作るのも面倒だし、そもそもマッピングテーブルを作ることが仕事の
目的ではない。そうなると外字を含むテキストデータはバイナリと
して扱うのが当然の流れになる。

これが世の中の一般的なことだと主張するつもりはないけれど、自分
の身の回りに限るとこれが一般的。

"前者"も"後者"も変換を強く意識しているものの、自分の環境ではむ
しろ「外字も含めて意図しない変換がされないようにすること」が
ものすごく重要。
724デフォルトの名無しさん:2011/12/30(金) 00:10:04.60
そういう場合に、Encodeモジュールを使えば、
変換規則を自分で簡単にカスタマイズできるからいい。
既存の何かが気に食わなければ自分で作ればいいのよ。
725デフォルトの名無しさん:2011/12/30(金) 00:11:55.78
×そうなると外字を含むテキストデータはバイナリとして扱うのが当然の流れになる。
○そうなると外字を含むテキストデータは入力された文字コードのまま扱うのが当然の流れになる。
726デフォルトの名無しさん:2011/12/30(金) 01:01:39.86
シフトJIS版のJPerlにもEUC版のJPerlにも文字列フラグはない。
にも関わらず、マルチバイト文字もバイナリデータも扱うことが
できる。もしUTF-8版のJPerlがあったとしたらやはり同様だろう。

UTF8フラグの存在理由として、バイナリと文字列の区別のためと
まことしやかに語られるが、それは正しくない。

正しくは、Latin-1とUTF-8の区別のため、だ。
だからLatin-1のサポートをやめればUTF8フラグは必要なくなる。
その際にバイナリデータが扱えなくなる、なんてことにはならない。
727デフォルトの名無しさん:2011/12/30(金) 01:16:48.18
(キリッ)
728デフォルトの名無しさん:2011/12/30(金) 01:43:56.68
>>726
Latin-1のサポートをやめたら
バイナリデータが扱えなくなるぞ。

なんか最後の行で先手を打ったつもりだが無意味だ。
バイナリデータが扱えなくなるぞ。
729デフォルトの名無しさん:2011/12/30(金) 01:48:33.19
>>726
馬鹿だなぁw JPerlを持ってきた所で意味ないじゃないか。
JPerlの制限分かってるか?
その制限はそのまんまお前が言うUTF8版Perlに当てはまるんだよ。
http://gihyo.jp/dev/serial/01/modern-perl/0031
> jperlの制約
>
> ただし,田中氏のパッチではすべてが2バイト文字対応されていたわけではありません。
> readme.sjには以下のような制約が残っていることも明記されています。
>
> tokenに漢字を使うことはできない
> 文字列の大小関係はCのライブラリ関数の実装に依存
> substrやreverseは漢字を意識しない
> index,rindexの返す値は(文字位置ではなく)バイト位置

これがまさにUTF8フラグがなかったら、実現不可能なことになってるんだよ。
730デフォルトの名無しさん:2011/12/30(金) 01:49:08.97
substrやindexについては対応できなかったというより,
すべてを漢字対応にしてしまうと(たまたま漢字と同じバイト列が含まれているような)
バイナリデータを扱うときや,全角半角入り混じった文字列の長さを
考慮した処理をしたいときに困るので,あえてオリジナルの挙動を
残しておいたと見るべきでしょうが,「jperlを使えばどんな書き方をしても
正しく日本語が処理される」というのは幻想にすぎません。jperlを使おうと,
こう書いてしまえば文字化けは起きます(上のchopの例と同じく,
一見正しく動作しているように見えますが,次の出力があったときに文字化けが起こります)。
731デフォルトの名無しさん:2011/12/30(金) 02:00:28.05
indexとか幻想とかそういうキーワードが出てくるなら
その幻想をぶち○す人とかも出てきそうだ。
732デフォルトの名無しさん:2011/12/30(金) 09:45:52.75
言われてる通り自分も名前が混乱の一端になってるような気がする。
encode/decodeは直観的でないし、UTF8フラグとかUTF-8バイナリ文字列と混同しそうだし。
733デフォルトの名無しさん:2011/12/30(金) 09:53:44.25
http://gihyo.jp/dev/serial/01/modern-perl/0031
jperlとjcode.plの区別がないあたりで、実はJPerlをよく分かっていない
ことが分かる。このふたつはやろうとしていること(方向性)が全く別のもの。

>Latin-1のサポートをやめたら バイナリデータが扱えなくなるぞ。

Latin-1とバイナリは別だから大丈夫だ。信じろ。
734デフォルトの名無しさん:2011/12/30(金) 10:30:03.18
Latin-1を捨てられないのであれば、同じ理由でシフトJISを捨てられない
のも道理。別に"対抗処置"で使い続けている訳ではないはず。
735デフォルトの名無しさん:2011/12/30(金) 11:03:34.11
「バイナリデータ」という用語を「デジタルデータ」と「非テキストデータ」
の2つの用語に使い分けると混乱の収拾に役立つ。その場合、「外字を含む
テキストデータ」は「テキストデータ」なの?「非テキストデータ」なの?
ということになるわけで、文字列フラグというアイディアがあんまり有効で
ないことがここで判明する。
736デフォルトの名無しさん:2011/12/30(金) 11:27:47.14
問題はPerlには変数に型がないから
ファイルからデータを変数に読み込んだ時
そのファイルに入っているのが、テキストかバイナリか
区別する必要があるってこと。

UTF8フラグが立っていればUTF8テキストでlengthで
1〜3バイトが1文字として返ってくる。
そうでなければ、lengthはバイト数で返ってくる。

変数に型もない言語においてutf8用の関数を作らないで対応するなら
UTF8フラグみたいに値にフラグをもたせるしか無い。
737デフォルトの名無しさん:2011/12/30(金) 11:34:03.58
いくら、なんだかんだ言ってもしょうがない。
Perlの設計した人がいう通りに使えばいいじゃないか。
特に不便は感じない。
738デフォルトの名無しさん:2011/12/30(金) 12:02:12.47
そうだ、そうだ。オレが出口まで送ってやるから。
739デフォルトの名無しさん:2011/12/30(金) 12:26:16.90
むしろたった数個の関数を追加したほうが手っ取り早いし、使う側も
理解しやすい。UTF8フラグ1ビットに数年かけて議論するということ
もない。
740デフォルトの名無しさん:2011/12/30(金) 12:50:31.85
ほう、すべてのテキスト処理関数に
UTF8版を作れってかw

CPANモジュールにあるほぼすべての
関数が2倍になるなw

UTF8フラグを付けるだけで対応は完了するのに
ご苦労なことだなw
741デフォルトの名無しさん:2011/12/30(金) 13:01:07.69
>>740
Yes, No, No、な。
742デフォルトの名無しさん:2011/12/30(金) 13:03:38.63
どんな関数でも一文字づつ処理するだろう。
ただのデータ出力であったとしてもだ。
UTF8バイトの途中で切れたらいけないしな。

そうすると、大きな修正が必要になる。
すべての関数が2倍になるほどに。
743デフォルトの名無しさん:2011/12/30(金) 13:10:13.00
中で正規表現使っているような関数はUTF8フラグがあれば、
正規表現部分がUTF8対応になれば動作するけど、
UTF8対応正規表現が別に用意されると、関数自体を書き換えないといけない。

もちろん互換性のために関数自体を書き換えるのではなく、別の名前の関数を
用意しないといけない。

そしてこの関数を使用している部分も書き換えないといけない。
このように依存関係のことまで考えると、そうとう修正が大きくなるのだが。
744デフォルトの名無しさん:2011/12/30(金) 13:43:41.74
「使わないようにしていこう」と「取り除こう」は別、な。
特殊変数 $[ や $* は存在し続けているおかげで、既存の
スクリプトを書き換える必要がなかった。

エリートは過激にコトを考えすぎるので困る。
745デフォルトの名無しさん:2011/12/30(金) 13:55:11.96
UTF8フラグは存在し続けることで再発明を防いで欲しい。
746デフォルトの名無しさん:2011/12/31(土) 08:58:26.82
テキスト処理関数の数はbytes.pmを見ると分かるようにたいした数ではない。
747デフォルトの名無しさん:2011/12/31(土) 13:03:21.46
入力→decode()→処理→encode()→出力
※decode/encodeを二度がけしてはならない。

基本これだけ。
あとは、複数ある、どの方法でdecode/encode処理をするか。
748デフォルトの名無しさん:2011/12/31(土) 18:29:02.11
連想配列についてですが
%test("mikan","みかん","ringo","りんご","budou","ブドウ");

foreach(%test){
print "$_<br>";
}
これだと全部出力されてしまいます
アルファベットの部分だけ出力するにはどうすればいいんですか?
749デフォルトの名無しさん:2011/12/31(土) 18:31:48.49
>>748
foreach(keys(%test)){
print "$_<br>";
}
750デフォルトの名無しさん:2011/12/31(土) 20:05:54.57
>>749
どうも
751デフォルトの名無しさん:2011/12/31(土) 21:19:08.34
昨日までファイルを追加書き込みモードでオープンすると
古いファイルが勝手にリネームされて困ってたのが
今実行したらファイルの最後に追加されるようになった。
ソースを全くいじってないのにうまくいってしまった
どういうことですか?

if ( !open( DATAFILE, ">>", $input ) )
752デフォルトの名無しさん:2011/12/31(土) 21:27:05.94
>>751
正直にいっとこう。
なんかいじったんだろ?な?
753デフォルトの名無しさん:2011/12/31(土) 21:27:47.46
こりゃなんか絶対にいじったなwww
754751:2011/12/31(土) 21:43:36.17
いじってないです。
もうひとつの謎が急にpathが通ったことです。
ActivePerlをインストした時に環境変数のpathを通したはずなのに
”perl”では認識されずに”c:\perl\bin\perl”と毎回打ってたのが
再起動もせずに休止状態から復帰しただけで”perl”で認識されました。
755デフォルトの名無しさん:2011/12/31(土) 21:46:11.63
まsかインストしてから一度も再起動しなかった……
とかじゃねーーーだろなwww
756754:2011/12/31(土) 21:50:49.73
インスト直後に再起動しました。
757デフォルトの名無しさん:2011/12/31(土) 21:58:15.52
>>754
落ち着いてもう一度思い出すんだ。

環境変数はシェル毎に異なりうる。
設定が行われる前に開いていた違うシェルでは当然反映されない。
また再起動しなくても環境変数は反映させることができる。

古いファイルがリネームというのはどういう状況なのか>>751ではよく分からない。
一行だけじゃなくて、動くコードが無いと判断しようがない。
758デフォルトの名無しさん:2012/01/04(水) 15:38:08.25
イメージとしてはこんな感じか?
ttp://www.kagematya.com/img/movie/10218/s02.jpg
759片山博文MZ ◆0lBZNi.Q7evd :2012/01/04(水) 15:40:11.85
>>758 ホモ画像注意。
760デフォルトの名無しさん:2012/01/05(木) 12:45:23.83
配列はunshiftで追加できるけど
連想配列を先頭に追加するにはどうやったらいいんですか?
761デフォルトの名無しさん:2012/01/05(木) 12:46:35.75
連想配列に連想配列の要素を追加するという意味です
762デフォルトの名無しさん:2012/01/05(木) 13:11:28.87
連想配列に前も後ろもないですよ
763デフォルトの名無しさん:2012/01/05(木) 13:50:51.47
%todoufuken("toukyou","東京","chiba","千葉","gumma","群馬");

$todoufuken{'hokkaidou'}="北海道";

foreach(keys(%todoufuken)){
print "$todoufuken{$_}<br>";
}

ソートしないで北海道を最初に表示させたいんですがどうすればいいんですか?
keysはどういう順番で表示されるのかわかりません
764デフォルトの名無しさん:2012/01/05(木) 14:04:25.69
>>763
ハッシュは普通、格納順番なんて記憶してない。
順番通りに取り出したいなら配列使うしかない。

使った事ないけど、そういうモジュールは存在するようだけど。
http://vv1.jp/bRL
765デフォルトの名無しさん:2012/01/05(木) 15:15:07.43
my @todoufuken = (
 {k => 'toukyou', v => '東京'},
 {k => 'chiba', v => '千葉'},
 {k => 'gunma', v => '群馬'},
);
unshift @todoufuken, {k => 'hokkaidou', v => '北海道'};
for (@todoufuken) {
 print $_->{v}, "<br>";
}

とか。(あまりすっきりはしてないが)
766デフォルトの名無しさん:2012/01/05(木) 17:24:51.79
自分のIPアドレスやホストを取得するにはどうすればいいのでしょうか?
767デフォルトの名無しさん:2012/01/05(木) 17:48:49.67
>>766
まじでggrks
768デフォルトの名無しさん:2012/01/05(木) 18:04:00.87
訪問者のIPアドレスを表示するのはたくさんありますが自分のはありません
http://www.perl-labo.org/analyse/host/

実行してもマシンの型番?みたいな環境変数の英数字しかでてきませんでした。
769デフォルトの名無しさん:2012/01/05(木) 18:19:48.08
hostname は Sys::Hostname の hostname()
ip は IO::Interface::Simple でとればいいんじゃね
Windows だとどうなるか知らないけど
あと、手元の環境では、IO::Interface::Simple だと
IPの振り方によっては2つ目以降のIPを取れないことがあるっぽい
770デフォルトの名無しさん:2012/01/05(木) 18:20:47.01
Perl以前の質問、CGIの質問、どっちにしてもスレ違いなんだなあ
771デフォルトの名無しさん:2012/01/05(木) 18:24:38.61
ちょっと探したら、
http://d.hatena.ne.jp/NeoCat/20070721/1184994948
こんなのとか出てくるじゃねーか
どんな調べ方してんだ
772デフォルトの名無しさん:2012/01/05(木) 18:26:38.25
>>766>>768
あまりに抽象的すぎるなぁ…
「自分がインターネットにアクセスしたときに相手から見えるIPアドレス」ならば、
Perlならワンライナーで
% perl -MLWP::Simple -e 'getprint "http://whatismyip.org/";'
かな。

参考
ttp://diary.sshida.com/20090409-3-diary.html
773デフォルトの名無しさん:2012/01/05(木) 19:23:49.14
>>769
hostname も変な環境変数しか出力されません
>>771
参考のためにどう検索したか教えて下さい
>>772
参考になりました
ありがとうございました
774デフォルトの名無しさん:2012/01/05(木) 20:47:34.42
775デフォルトの名無しさん:2012/01/05(木) 21:30:44.08
テキストファイルを開くとして
そのファイルを利用する部分から抜けたら
確実に閉じられるような書き方・関数などはありますか?

こう書いておけば、途中でいきなりlastとかreturnとかしちゃってても
その部分から出る際に自動的に閉じてくれる、みたいな感じです
776デフォルトの名無しさん:2012/01/05(木) 21:33:54.58
close
777デフォルトの名無しさん:2012/01/05(木) 21:48:10.87
open my $fh, ...
で開いてれば $fh のスコープが終わると同時に自動クローズされる
それでも本当は毎回 close $fh or die $!; とかするべきではあるけど
778デフォルトの名無しさん:2012/01/05(木) 23:09:25.00
そういうfuckな話が二ヶ月ほど前にあった
堂開いたらいいか どう作ったらいいかってな話が
際限なくソースがのびてグダグダになってabonしそうなクソが出来上がった
過去グロ嫁
779デフォルトの名無しさん:2012/01/06(金) 00:20:42.58
要するにこんなことがしたいだけです。
Perlじゃ簡単にできないんですね。

http://dev.classmethod.jp/etc/p3210/

The try-with-resources Statement
リソースを含めたtry文
プログラムが終了した際にクローズされていなければならないリソースを
try文に含めることができるようになりました。これらのリソースは
ステートメント終了時にクローズされることが保証されます。
780デフォルトの名無しさん:2012/01/06(金) 00:23:30.09
781デフォルトの名無しさん:2012/01/06(金) 00:36:53.66
>>779
http://perldoc.jp/docs/perl/5.10.0/perlopentut.pod#Indirect32Filehandles
> もう一つの便利は振る舞いとして、間接ファイルハンドルは、
> スコープ外に出るか undef にされると、自動的に閉じます:
782デフォルトの名無しさん:2012/01/06(金) 03:27:17.79
>>777 >>779
ありがとうございます、これで安心して開けます
>>777さんの最後が「閉じるほうも or die したほうが良いの?」と
ちょっと気になりましたが
>>779さんのサイトからclose()で偽を返す場合について確認しました
パイプは分かるのですが
PerlIO層がエラーを返す場合ってどんな場合なんでしょう?

>>779
確かにその類のことがやりたかったことに違いはありませんが
煽り目的の成り済ましはやめて下さい。
783デフォルトの名無しさん:2012/01/06(金) 03:28:34.79
うああレスアンカー間違えてる!
ええと…感謝とサイトは>>781さんへ、です…
784デフォルトの名無しさん:2012/01/06(金) 04:58:35.76
初心者ですが詰まってしまいヘルプお願いします。

1,2,3,4,5
aiu,eo,kaki,ku,keko

と書いてあるdata.csvを用意しておき、これを使って新しくnewfile.textを作成して、その内容を

こんにちは
こんな 1 感じに 2 文字を 3 挿入 4 したい 5
こんな aiu 感じに eo 文字を kaki 挿入 ku したい keko

としたいと思っています。formatを使ってやったところ、@<<<<< の長さが固定されてしまい、
csvファイルに描いてある文字列の長さによっては不必要な空白が入ってしまいます。
これをうまく回避するにはどうしたらいいでしょうか?
785デフォルトの名無しさん:2012/01/06(金) 06:10:46.30
perl -nle 'use List::MoreUtils qw/zip/; print zip @{[qw(こんな 感じに 文字を 挿入 したい)]}, @{[split(/,/)]};' data.csv > newfile.text
786デフォルトの名無しさん:2012/01/06(金) 11:54:11.00
>>784
宿題?
787デフォルトの名無しさん:2012/01/06(金) 12:03:36.82
>>784
formatをつかわない。
788デフォルトの名無しさん:2012/01/06(金) 15:50:27.66
>>782
> PerlIO層がエラーを返す場合ってどんな場合なんでしょう?
書き込んでいてcloseされると、バッファフラッシュでwrite(2)が呼ばれて、そのエラーが返ることがある。
よくネタにされるのが、デバイス領域が足りない(ENOSPC)。
この辺りはCと同じ。
789デフォルトの名無しさん:2012/01/06(金) 17:00:56.09
>>785
ありがとうございます。しかし高度すぎて理解するのに時間がかかりそう。がんがります
>>786
MySQLの勉強してたんですけど、tableに一気にデータ入れたくてそれをperlでやってみようとしたらドツボにはまりました。
作ったのは以下のようなスクリプトなんですが、@<<<<<を長くすると不必要な空白が入ってしまいます。
------
open (NEWFILE, "> newfile.text");
open (DATA, "data.csv");
@data = <DATA>;
$length_data = @data;
for ($record_num = 0; $record_num < $length_data; $record_num++){
#print ("@data[$record_num]");
($id, $user_id, $title, $body, $created, $joined) = split(/,/,@data[$record_num]);
write NEWFILE;
}
close (NEWFILE);
close (DATA);

# Start Format
format NEWFILE =
insert into posts (id, user_id, title, body, created, modified) values (null, '@<<', @<<<<<', '@<<<<<', '@<<<<', '@<<<<<');
$user_id, $title, $body, $created, $joined
.
# End Format
---------------
それで、Formatのほうでは、@<<などの文字をVuser_idVなどの文字にして、writeのあとで文字置換しようとしたんですが、write NEWFILEの下に

while(<NEWFILE>){
  s/Vuser_idV/$user_id/;
}

と書いてみたんですがダメでした。forループの中でその都度置換すればいいかと考えたんですが正しいやり方とかありますでしょうか。
790デフォルトの名無しさん:2012/01/06(金) 17:19:32.06
回答じゃなくて申し訳ないけど
>open (NEWFILE, "> newfile.text");
今時どんな本でこういう書き方してるのか気になる
あとformat, writeとか使ってる人なんて十数年ぶりに見た
791デフォルトの名無しさん:2012/01/06(金) 17:23:23.75
いくら丁寧な文章を書いても「がんがります」で台無し
792デフォルトの名無しさん:2012/01/06(金) 17:25:08.57
あと、スクリプト見る限りではSQL命令をずらずら並べたテキストファイル作って
mysqlコマンドにリダイレクトしようとしてるのかな?

その書き方じゃ普通にSQLインジェクションに弱くて危険だから
今からでも遅くないのでDBI使うようにするのをおすすめしたいです
793デフォルトの名無しさん:2012/01/06(金) 17:25:34.65
「すいません」
>>791「す『み』ませんだろゴルァ」
794デフォルトの名無しさん:2012/01/06(金) 17:28:59.39
>>791
はいはい先生は偉いお方だから口悪くても許されますねー
795デフォルトの名無しさん:2012/01/06(金) 22:10:10.24
手元にあるのが95年初版のLearning Perlなんだけど、やっぱり古すぎたのか…。どうしよ
796デフォルトの名無しさん:2012/01/06(金) 23:36:38.23
下記の3つのprintのうち、真ん中のprintの出力理由が分かりません。
どのように動作しているのでしょうか?
よろしくお願いいたします。


#!/usr/bin/perl

my $str = "abc";

print utf8::is_utf8($str)? 'flag' : 'no flag', "\n"; # no flag
print "x" . utf8::is_utf8($str)? 'flag' : 'no flag', "\n"; # flag <- ?
print "x" . (utf8::is_utf8($str)? 'flag' : 'no flag'), "\n"; # xno flag
797デフォルトの名無しさん:2012/01/06(金) 23:59:56.89
print(("x" . utf8::is_utf8($str))? 'flag' : 'no flag', "\n");
と等価になってるのでは?
798デフォルトの名無しさん:2012/01/07(土) 00:23:27.09
print 3+5 . "km";

print (3+5) . "km";
どちらも8kmと表示されるものかと思いましたが違いました。
結合順が変わってしまうのは何故なのでしょうか?
前者では8kmと表示されますが、
後者では3+5とprintが先にくっついてしまい8と表示されてしまいます。
799デフォルトの名無しさん:2012/01/07(土) 00:26:37.71
あ、関数名()が関数呼び出しの基本だからですね。
print(3+5)という形があり、それに. "km"している形ですね。
printのカッコ省略に慣れて見えていませんでした。
スレ汚しスマソ
800デフォルトの名無しさん:2012/01/07(土) 00:47:26.49
>>788
なるほど。
その辺まで突き詰めると、もうPerl固有の話ではなくなりそうですね。
色々調べてみます、ありがとうございました!
801デフォルトの名無しさん:2012/01/07(土) 02:21:42.37
|a.あいうえお
| かきくけこ

という文章のあ〜そまでを抽出する正規表現を書きました。 m/^a.(.*?)\n\n/ms
思い通りに動きました。ここに例外を加えたいです。それは

|a.あいうえお
| 
 ↑ここに全角スペースがある場合はマッチさせないという動作です。
否定戻りよみを使い右のようにしました。 m/^a.(.*?)(?!< )\n\n/ms
しかしこれでは上記の文がマッチしてしまいました。
.*?が全角スペースを含む長さまで伸びた際にマッチするからだと思います。
どのように書けば期待する動くを実現できるのでしょうか?お知恵をお貸し下さい。
802デフォルトの名無しさん:2012/01/07(土) 04:10:34.68
>>801
http://www.din.or.jp/~ohzaki/regex.htm#Without

print "[$1]\n" while <<'EOS' =~ /^([a-d]\.(?:(?! ).)*?)(?:\n\n|\n*\z)/gms;
a.あいうえお

b.アイウエオ
カキクケコ
サシスセソ

c.いろはにほへと
 ちりぬるを

d.イロハニホヘト
チリヌルヲ
EOS
803デフォルトの名無しさん:2012/01/07(土) 09:41:19.77
>>795
もしかして表紙が赤い奴?うひいw
もう「初めてのPerl」は5版まで出てるから新しいの入手した方がいいと思います。

さてここからはスレの皆さんへ質問。
リャマ本って第3版と第5版で内容は大幅に変わっているんでしょうか?
第5版 http://www.amazon.co.jp/dp/4873114276/
第3版 http://www.amazon.co.jp/dp/4873111269/ (安い中古出品中)
804デフォルトの名無しさん:2012/01/07(土) 18:40:20.28
>>802
レスありがとうございます!
なるほど否定先読みを使ったアプローチをすれば良かったのですね。

マッチさせたくないケースは1行目より下に全角スペースだけの行がある場合なので
例えば
d.イロ ハニホヘト
チリヌルヲ
のように途中にスペースを含むケースはマッチさせたいです。
なので(?:(?!\n ).)*?)としたらうまくいきました。

本題からそれますが、このHERE演算子の使い方は初めて見ました。こういう使い方も出来るんですね。
示してもらった具体例をコードにするための方法としてぴったりしていると感じました。
趣味とはいえそこそこ長い間Perlを触って来ましたが、
まだまだ知らない事だらけのような気がしてきました。リャマボン買ってみようかなー。
805デフォルトの名無しさん:2012/01/07(土) 19:32:46.63
>>804
折角 /m 付けてるんだからその場合 (?!\n ) より (?!^ ) の方が文意を読み取り易いかもな。
806デフォルトの名無しさん:2012/01/07(土) 19:48:31.25
一方ロシアは grep や next if を使った
807デフォルトの名無しさん:2012/01/08(日) 16:45:11.65
アレイを[-1]でアクセスしている古いスクリプトがあるのですが、
これはどういう意味でしょうか? (最終要素?)
perl 5.14で動くようにする簡単な記法も教えてちょーだい。
808デフォルトの名無しさん:2012/01/08(日) 16:47:28.72
自分で試してから聞け屑
809デフォルトの名無しさん:2012/01/08(日) 16:49:25.95
動かねえなら問題はそこ以外だ
810デフォルトの名無しさん:2012/01/08(日) 16:51:53.54
古いperlがないから聞いたんだけど、インストールしないで試す方法を教えてちょうだい。
インストールするくらいなら聞かずに試してるわ。
811デフォルトの名無しさん:2012/01/08(日) 16:55:02.82
$ perl -le '@a=qw(f * c k);print $a[-1]'
812デフォルトの名無しさん:2012/01/08(日) 16:59:09.95
>>809
抜き出すと、↓これで
my @a = ();
print $a[-1]->[0];

エラーメッセージは
Modification of non-creatable array value attempted, subscript -1 at x.pl line 2.
813デフォルトの名無しさん:2012/01/08(日) 17:04:20.42
>>811
なぜか
print $a[-1];
はOKで
print $a[-1]->[0];
はエラーなのですよ。

それで、古いperlは[-1]で最終要素にアクセス出来たのでは? と予想したんだけど。
require 5.005;と書いてある。^^;

>>808
古いperlを入れずに試す方法を早く教えれ。
814デフォルトの名無しさん:2012/01/08(日) 17:09:41.45
C言語の配列とアドレスを百ペン嫁
815デフォルトの名無しさん:2012/01/08(日) 17:13:04.01
$ perl -le '@a=([],[],[qw(a h o)]);print $a[-1]->[0]'

エラーの意味も分からないのねかわいそうに
816デフォルトの名無しさん:2012/01/08(日) 17:20:14.68
最新バージョンでも15年前のスクリプトが基本的にそのままで動くように後方互換を維持してるのがperlだというのにな。良くも悪くも。
817デフォルトの名無しさん:2012/01/08(日) 17:20:16.08
どーも。それじゃ[-1]は5.14でも最終要素ってことか。
原因は別のところか面倒だなあ。
818デフォルトの名無しさん:2012/01/08(日) 17:54:01.51
>>814
お前は何を言っているんだ
819デフォルトの名無しさん:2012/01/08(日) 17:59:46.25
>>817
>>815 を見て分からないなら->の意味がわかってないのでは。
820デフォルトの名無しさん:2012/01/08(日) 18:01:52.33
>>818
リファレンスって言いたいのでは
821デフォルトの名無しさん:2012/01/08(日) 22:04:01.89
馬鹿なくせにその自覚のまったくない質問者ってイライラするね。


自戒自戒…
822デフォルトの名無しさん:2012/01/08(日) 22:54:52.27
バカっていうか、質問文が完璧だったという前提があるかのような自信はどこからくるのっていう、、、、
とにかく前提を省略しまくった質問は勘弁だわ、、、、、
823デフォルトの名無しさん:2012/01/09(月) 04:16:28.67
>>822
お前にエスパー能力が足りてないだけ
824デフォルトの名無しさん:2012/01/09(月) 11:25:49.71
>>823
世の中にはおまえみたいな気違いもいる、といういい見本になってくれてありがとう。
825デフォルトの名無しさん:2012/01/09(月) 19:14:30.68
perlref読めとしか……
826デフォルトの名無しさん:2012/01/10(火) 17:59:44.50
formで入力したパスワードをこのようにhiddenで渡していくのは好ましくないんでしょうか?

print "<INPUT TYPE=\"hidden\" NAME=\"pass\" VALUE=\"$FORM{'pass'}\">";

crypt関数っていうの使った方がいいのですか?

これだと元に戻すのができないんだよな
827デフォルトの名無しさん:2012/01/10(火) 18:33:48.19
>>826
>>1を最低10回は声出して復唱しような。
828デフォルトの名無しさん:2012/01/10(火) 22:38:38.60
>>826
>>827に加えてついでに書いとくと
> formで入力したパスワードをこのようにhiddenで渡していくのは好ましくないんでしょうか?
好ましくないどころか根本から大間違い
829デフォルトの名無しさん:2012/01/11(水) 01:19:01.38
でも結局はhiddenで渡していくしかないよな
830デフォルトの名無しさん:2012/01/11(水) 01:28:14.84
なわけねーだろ
お前セッションて知らないのか?
831デフォルトの名無しさん:2012/01/11(水) 01:31:33.41
>>829
自炎乙
832デフォルトの名無しさん:2012/01/11(水) 03:01:59.77
>>829
徳丸本読んで出なおせ
833デフォルトの名無しさん:2012/01/11(水) 10:08:24.32
確認画面でパスワードなどをhiddenにしておくのがだめって
HTMLソースで見られるか、外部打ちでデータ書き換えできるからってことだろ?
そんなことするやつなんておらんだろ。
仮にいたとしてもパスワードをcryptで暗号化しておけば見られても平気だし
リファラ調べて外部打ち禁止にすればいいだけだからな
834デフォルトの名無しさん:2012/01/11(水) 10:13:15.69
>>828 >>830 >>832 >>833
おめえら、全員web板へ逝けよ、ゴミカス
835デフォルトの名無しさん:2012/01/11(水) 10:48:30.04
>>832で徳丸本薦めてる一つ後のレスが「IPA()とベッタリの徳丸本なんかクソクラエ」と言わんばかりのダメダメ論理で泣けてくる
てゆか2chで徳丸本読んでる奴って100人もいないんじゃないか?

>>833
一体お前いつの常識に基づいてプログラムしてるんだ
手元にあるテキストは90年代に出版されたやつじゃないだろうな?
あとWebの基本知ってればReferer改ざんなんて誰でもできるぞ

>>834
すまん、これで最後にする
あとはセキュリティのセの字もわからん奴が暴れ続けないことを祈りたい
836デフォルトの名無しさん:2012/01/11(水) 12:20:06.75
>>835
90年代でもそんなひどい本は売ってなかったろ さすがに…
>>834
ゴミカスって言った奴が真のゴミカス と昔から決まっている
837デフォルトの名無しさん:2012/01/11(水) 12:28:56.90
>>836
黙れ。死ね
web板でやれ。
838デフォルトの名無しさん:2012/01/11(水) 13:42:23.48
バカがなんかほざいてます
839デフォルトの名無しさん:2012/01/11(水) 13:52:39.97
Windows7 32bit + ActivePerlでGUIプログラミングをしたい人は
gtk2を使うべきなんですか?
840デフォルトの名無しさん:2012/01/12(木) 00:32:13.46
丸得本ってどれのことですか?
841デフォルトの名無しさん:2012/01/12(木) 12:29:13.88
結局セッションを使ったとしてもセッションIDをhiddenに埋め込むわけだから
やっていることはほとんどかわらんな
842デフォルトの名無しさん:2012/01/12(木) 12:49:31.17
>>841
釣りの練習なら余所でやれ
843デフォルトの名無しさん:2012/01/12(木) 23:47:24.10
>>839
あ、俺も聞きたい。
Tkいじってて、GUI32:+LOFTに手を出してみたらLOFTがダメで、
wxPerlに手を出そうとして資料の無さに絶望してTkにもどった
趣味でいじっているだけの人間だけどGTK+ってどう?


844デフォルトの名無しさん:2012/01/14(土) 15:36:11.96
なぜTkのままじゃいけないのか自問しました。
845デフォルトの名無しさん:2012/01/14(土) 16:46:17.24
>>840
ママゾンの和書のページに「本のお買い得情報・バーゲン」っていう
のがあります。
846デフォルトの名無しさん:2012/01/14(土) 18:02:22.87
Tkは見た目が古い
847デフォルトの名無しさん:2012/01/14(土) 23:48:15.14
時間がたてば古く見えるのは当然だと思うけど、これからも見た目を
新しくするためにスクリプトを書き直したり、新しいモジュールの
使い方を覚えたりするの?その労力を何か創造的な方面に...
848デフォルトの名無しさん:2012/01/15(日) 14:38:28.68
>>847
TkはPPMでいれられない
5.14.2用どっかあるとこ知らない?
849デフォルトの名無しさん:2012/01/15(日) 15:53:25.92
@hobby_list=("ゲーム","アニメ","パソコン");
foreach(@hobby_list){
print "hobby=$_";
}
これの結果が
ゲーム、アニメ、パャRンになってしまいますが
ファイルにゲーム,アニメ,パソコンと書き込んで

open(IN,"hobby.dat");
$line = <IN>;
close(IN);
@hobby_list = split(/,/,$line);
としてprintした場合ちゃんとパソコンと表示されますがこれはどうしてでしょうか?
また文字化けをパソ\コンと手動で文字化けを直すのではなくて
自動で直す方法を教えてください
850デフォルトの名無しさん:2012/01/15(日) 15:58:13.46
>>848
ActivePerl なら始めから Tkx が付いてくるけど。
Tk を使いたいのなら bribes.org にあるからリポジトリに追加しとくといいよ。
http://www.bribes.org/perl/ppm/package.xml
851デフォルトの名無しさん:2012/01/15(日) 16:02:02.13
>>849
q/ソんな文字コードで大丈夫か?/
852デフォルトの名無しさん:2012/01/15(日) 16:03:26.05
853デフォルトの名無しさん:2012/01/15(日) 16:58:57.11
>>850
今そこにないんだよ

854デフォルトの名無しさん:2012/01/15(日) 17:05:30.62
>>853
あるよ。
http://www.bribes.org/perl/ppm/Tk-804.029-PPM514.tar.gz
PPMでもちゃんと出てくる。
855デフォルトの名無しさん:2012/01/15(日) 18:19:01.35
>>851
ソースコードをEUCにするとソースコード中の全角文字が読めない文字になるので
好ましくないだからshift-jisでやってる。
パソコンをパソ\コンというように文字化けしないように
自動的に\を付けるようにするようにしたいのである。
856デフォルトの名無しさん:2012/01/15(日) 19:03:11.13
utf8使えよアフォwwwwwwwwwwwwwwwwwwww
フォフォフォwwwwwww
857デフォルトの名無しさん:2012/01/15(日) 19:05:17.57
>>849
前者は、まずソースファイル上でメタキャラクタとして認識された後に、データとして格納されている。
後者は、最初からデータとして扱われている。
858デフォルトの名無しさん:2012/01/15(日) 19:05:42.79
なんでutf8で書かないのかな?
859デフォルトの名無しさん:2012/01/15(日) 19:24:20.15
(エディタの問題じゃ…?
860デフォルトの名無しさん:2012/01/15(日) 19:24:37.08
(ヴァカなのか……?
861デフォルトの名無しさん:2012/01/15(日) 19:54:29.36
>>855
諦めてuse utf8とuse Encodeで処理したまえ。
862デフォルトの名無しさん:2012/01/15(日) 19:59:25.43
855じゃないけど、utf8嫌いだから、shiftjisを細工なしに扱えるperlが欲しいや…
863デフォルトの名無しさん:2012/01/15(日) 20:01:54.67
そんなこと言うとまたjacode.plとかSjis.pmとかいうゴミをドヤ顔で紹介する人が来ちゃうでしょ!
864デフォルトの名無しさん:2012/01/15(日) 20:08:03.20
                                 ,.へ
  ___                             ム  i
 「 ヒ_i〉                            ゝ 〈
 ト ノ                           iニ(()
 i  {              ____           |  ヽ
 i  i           /__,  , ‐-\           i   }
 |   i         /(●)   ( ● )\       {、  λ
 ト−┤.      /    (__人__)    \    ,ノ  ̄ ,!
 i   ゝ、_     |     ´ ̄`       | ,. '´ハ   ,!
. ヽ、    `` 、,__\              /" \  ヽ/
   \ノ ノ   ハ ̄r/:::r―--―/::7   ノ    /
       ヽ.      ヽ::〈; . '::. :' |::/   /   ,. "
        `ー 、    \ヽ::. ;:::|/     r'"
     / ̄二二二二二二二二二二二二二二二二ヽ
     | 答 |      j c o d e . p l      │|
     \_二二二二二二二二二二二二二二二二ノ
865デフォルトの名無しさん:2012/01/15(日) 20:12:19.95
use encoding 'cp932';

以下、「>>865空気嫁」が1000まで続きます
866デフォルトの名無しさん:2012/01/15(日) 20:28:39.50
文字コードを攻略する一番の近道は
utf8フラグを理解することだってわかってないのかね?

どうせ、sjisだけ使う、euc-jpだけ使うと言ってても
結局はライブラリの制限によってutf8フラグに
かかわらないといけないだろう?

ほんの数時間、ちゃんと勉強すれば分かるはずのことを避けて、
逆に時間がかかってたら意味が無いだろう。
それとも認めるのかい?

自分がutf8フラグを理解出来ない馬鹿だってことを。
867デフォルトの名無しさん:2012/01/15(日) 20:37:43.53

Windows環境ならuse utf8で標準入出力をcp932にした方が早い。
868デフォルトの名無しさん:2012/01/15(日) 20:38:19.63
まあ、どおぉ〜してもShift JISで処理したいまたは処理しなければならないなら、
がんばってjperlでも探してくるしかないな。
869デフォルトの名無しさん:2012/01/15(日) 20:42:47.42
use encoding qw(cp932); で十分。
870デフォルトの名無しさん:2012/01/15(日) 20:46:31.78
>>869
4つ前のレスも読めんのかバカ
871デフォルトの名無しさん:2012/01/15(日) 20:47:36.50
>>869
それじゃだめだろ。
お前、use encodingの意味わかってないな。


だ〜か〜ら〜、ちゃんとutf8フラグを勉強しろと。
872デフォルトの名無しさん:2012/01/15(日) 20:59:04.83
シフトJISを使うときになぜutf8フラグ必要になるのかまるで
共感できない場合は

require 'jcode.pl';
@hobby_list=("ゲーム","アニメ","パソコン");
foreach(@hobby_list){
jcode::convert(\$_,'sjis','sjis','z');
print "hobby=$_";
}
873デフォルトの名無しさん:2012/01/15(日) 21:01:34.34
>>871
さらに
open(IN,"<:encoding(cp932)", "hobby.dat");
にすればおkじゃね?
874デフォルトの名無しさん:2012/01/15(日) 21:12:42.96
そんなバッドノウハウ覚えるぐらいなら、
普通にutf8フラグを理解すれば良い。

遠回りすんなや。
875デフォルトの名無しさん:2012/01/15(日) 21:25:05.31
は?decode()、encode()は基本だけど
PerlIO触るのも別にバッドノウハウじゃねーだろ
876デフォルトの名無しさん:2012/01/15(日) 21:26:55.48
utf8フラグが普通じゃない罠。
877デフォルトの名無しさん:2012/01/15(日) 21:28:57.72
>>866
そんなに必死にならなくても
878デフォルトの名無しさん:2012/01/15(日) 21:35:24.35
utf8フラグはPerlで文字列触る基本となってるのは事実。
それ以外の推奨されないようなやり方は、自分がいいなら使えばいいけど、
初心者に進んで教えてるのはよくないな。
879デフォルトの名無しさん:2012/01/15(日) 21:35:59.27
1レスで理解できるコピペなかったけ?あれ出せばいいじゃん
880デフォルトの名無しさん:2012/01/15(日) 21:42:47.07
1レスで理解できるutf8フラグ

utf8フラグとい名前がまずかったね。
文字列フラグなどという名前だったらよかった。

文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。

バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。

ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。

話はこれだけ。

(やばいぞ、この流れw)
881デフォルトの名無しさん:2012/01/15(日) 21:45:03.16
CPAN本でdecode済みの文字列を"文字列"って表現してたのは良かったね(""含めて)
882デフォルトの名無しさん:2012/01/15(日) 21:45:46.83
同意できない
883デフォルトの名無しさん:2012/01/15(日) 22:25:31.54
誰かのご機嫌をとりながら書かなきゃいけないプログラミング言語って
Perlの他にもあるのかな?
884デフォルトの名無しさん:2012/01/15(日) 22:30:02.65
>>883
えっ、Perl は言語の中ではご機嫌を取らないほうだろ?
885デフォルトの名無しさん:2012/01/15(日) 22:30:38.47
悪いこと言わない。
よっぽどの理由が無い限りコードはutf8で書いときなよ。
886デフォルトの名無しさん:2012/01/15(日) 22:32:28.44
うちは出来上がるデータが命だから、そういうことはできないのん
887デフォルトの名無しさん:2012/01/15(日) 22:46:52.72
ちょっとよく分からん……
888デフォルトの名無しさん:2012/01/15(日) 22:48:06.95
文字コード変換がロスレスだと考えるのは夢想的すぎる
889デフォルトの名無しさん:2012/01/15(日) 22:53:05.31
>>888
cp932とeucjpms使わんから…
890デフォルトの名無しさん:2012/01/15(日) 22:53:15.88
扱うデータがシフトJISの場合、コードに書かれているutf8による
リテラルと比較するにはどちらかをコード変換して合わせる必要が
ある。まあ、推奨の方法によれば外部データのシフトJISをutf8に
変換(decode)するわけだが。
891デフォルトの名無しさん:2012/01/15(日) 23:53:59.04
ウインドウズでPerlやりたいんですが

ストロベリーパールっていうやつはどうなんですか???
リナックスみたいに ウインドウズでもPerlとかCPANモジュール使いたいんですが

お勧めの構成教えて下さい
なんか

crygwinっていうやつクソでした Linuxとまるっきり同じ感じにしたいです

ストロベリーパールっていうやつは

CPANモジュールとかダウンロードできるような機能あんですか???

教えてください
892デフォルトの名無しさん:2012/01/15(日) 23:57:49.82
じゃあlinux入れれば
893デフォルトの名無しさん:2012/01/16(月) 00:00:05.86
オンラインゲームができなくなるからいやです
894デフォルトの名無しさん:2012/01/16(月) 00:01:34.71
誰がお前のPC上のWindows消せと言った…
てゆか板違いだし英語もろくに書けないし何なの一体
895デフォルトの名無しさん:2012/01/16(月) 00:15:02.20
>>894

ありがとうございます

解決 しました
896デフォルトの名無しさん:2012/01/16(月) 00:18:12.89
>>891
クノーピクスでも使っていやがれ
CD-ROMで起動できるfuckな環境だっぜ
897デフォルトの名無しさん:2012/01/16(月) 00:19:23.33
Windowsでutf8つかいたいんですが
コマンドプロンプトだとなんか変な風になります
http://d.hatena.ne.jp/perlcodesample/20080706/1215291523
ここの設定を見たんでうが
よくできません

あいうえおって表示させると

あいうえお・うえおえお・お・・

って表示されます

もうWindowsはこりごりです
なんかutf8を表示させる端末などなんかあったら教えてください
調べたくないです
誰か変わりに教えてください
898デフォルトの名無しさん:2012/01/16(月) 00:22:59.96
colinuxつかって環境作ってる。便利。
すれち、すまぬ。
899デフォルトの名無しさん:2012/01/16(月) 00:56:21.65
文字化けする文字の後ろに\をつけるのだと難しいので
全角文字すべての後ろに\をつけるようにした方が簡単だな
900デフォルトの名無しさん:2012/01/16(月) 01:02:39.58
質問側も回答側もなんでこう…90年代から進歩してないんだ…
901デフォルトの名無しさん:2012/01/16(月) 02:50:06.59
>>897
iconvインスコして、以下のバッチを作って、適当に名前付けて、パス通しておけばいいよ。
@echo off
perl %* | iconv -f utf-8 -t cp932

という私もcolinux突っ込んでる。
902デフォルトの名無しさん:2012/01/16(月) 08:39:53.80
>>900
おれはいろんなperl入門のサイトで見て勉強してる
とほほとかKENTとか
903デフォルトの名無しさん:2012/01/16(月) 09:32:20.97
釣れますか?
904デフォルトの名無しさん:2012/01/16(月) 11:25:54.92
一人釣れたようですね
905デフォルトの名無しさん:2012/01/16(月) 12:29:29.87
メモ帳でソース書いてるけど
EUCで保存って項目がないわ
906デフォルトの名無しさん:2012/01/16(月) 12:39:04.00
$str="aaa\bbb\ccc";

$str =~ s/aaa/www/g;
aaaをwwwに置換はできますが
$str =~ s/\/www/g;
\をwwwに置換しようとするとエラーになります
どのようにして\を置換できるのか教えて
907デフォルトの名無しさん:2012/01/16(月) 12:44:48.44
\\
908デフォルトの名無しさん:2012/01/16(月) 14:29:23.55
正規表現もだけど、もう1行目の時点で期待してるであろう文字列とは違ってるよね
909デフォルトの名無しさん:2012/01/16(月) 15:41:23.58
バカしかいないのか
910デフォルトの名無しさん:2012/01/16(月) 15:53:28.12
>>906は解決しました
でも$str="あ表あ";

$str=~s/あ/www/g;は置換できるけど
$str=~s/表/www/g;はエラーで置換できませんでした
これの置換方法を教えてください
911デフォルトの名無しさん:2012/01/16(月) 15:56:10.45
以下シフトJISの話題でループ
912デフォルトの名無しさん:2012/01/16(月) 16:11:11.29
とりあえず、Windows環境でPerlやるヤツはファイルの先頭に
なにも考えずにコレを書いて、utf8で保存だ。

-- ここから --
#!c:/perl/bin/perl.exe
use strict;
use warnings;
use utf8;
binmode(STDOUT, ":encoding(cp932)");
binmode(STDIN, ":encoding(cp932)");
binmode(STDERR, ":encoding(cp932)");
-- ここまで --
913デフォルトの名無しさん:2012/01/16(月) 17:50:05.14
>>910
CP932で 表/ は(\x95,\x5C,\x2F)の並びになる。
\x5Cはバックスラッシュ(\)なので、次の文字のスラッシュ(/)はクォートされ、
リテラルキャラクタ扱いになる。
これを防ぐには、"\\"というようにバックスラッシュを二つ重ねて、
バックスラッシュをリテラルキャラクタにする。

つまり、表\/ (\x95,\x5C,\x5C,\x2F)の並びにすれば良い。
よって、
$str=~s/表\/www/g;

これは、CP932の文字列をバイナリ列のまま扱うことに起因する問題なので、
>>7を守れば問題は起きない。

参照:
http://perldoc.perl.org/perlre.html
914デフォルトの名無しさん:2012/01/16(月) 17:55:11.13
メモ帳でANSI形式で保存して
$str="パソコン";
&jcode'convert(*str,'euc');
print "str=$str";としたところ文字化けしてしまいました、
ちゃんとEUCに変換したのに結局はパソ\コンとして\を追加しなければだめでした
EUCならば文字化けしないはずじゃなかったのですか?
もちろんHTMLのMETAタグはEUC-JPにしてます
915デフォルトの名無しさん:2012/01/16(月) 18:00:27.99
916デフォルトの名無しさん:2012/01/16(月) 18:11:20.47
なるほどわかりました
917デフォルトの名無しさん:2012/01/16(月) 20:14:53.13
perl5.8以降のopen関数で書き込む場合ファイルハンドル、文字コード、ファイルパス
の3つの引数が指定できるらしいけど
それ以前のperlでは書き込みファイルの文字コードはどうやって指定するんでしょうか?

普通はそのまんまopenでファイル作るとsjis形式になっているのでそこにEUCデータを書き込むと
ファイル開いたとき全く読めない文字になっているので
918デフォルトの名無しさん:2012/01/16(月) 20:46:53.13
このメンバーで1000まで行こう、な
919デフォルトの名無しさん:2012/01/16(月) 20:49:47.95
トロロベリーパールはどこにありますか?
920デフォルトの名無しさん:2012/01/16(月) 20:59:50.23
>>917
古くはjcode.plなどを使って文字コードを変換してから書き出した。
921デフォルトの名無しさん:2012/01/16(月) 21:02:57.49
その後、PerlがPerl5になるのにともない、Jcode.pmがリリースされ、
オブジェクト指向による文字コード変換が行われるようになった。
922デフォルトの名無しさん:2012/01/16(月) 21:05:07.62
さらにその後、さすがのゆとり世代でもご存知かと思われるが、
Encodeモジュールというものができ、日本語だけではなく、世界中
の文字を扱えるようになったと一部では信じられている。
923デフォルトの名無しさん:2012/01/16(月) 21:11:45.16
以下、Encodeの酸鼻が続く
924デフォルトの名無しさん:2012/01/16(月) 21:14:11.13
>>917はPerl5.8以降を使ってはいけない会社で働かされているんだろうか
925デフォルトの名無しさん:2012/01/16(月) 21:19:05.99
いま、うちの会社をばかにしましたか?
926デフォルトの名無しさん:2012/01/16(月) 21:21:45.65
>>885
よっぽどの理由があるのでsjisで書かせてください。
927デフォルトの名無しさん:2012/01/16(月) 21:24:07.87
俺も長いことやってるけどUTF-8なんて聞いたことないよ、
おとぎ話の中でしか。
928デフォルトの名無しさん:2012/01/16(月) 21:27:47.04
>>905 Meryおぬぬめ
929デフォルトの名無しさん:2012/01/16(月) 21:31:05.84
素直にutf8でやったほうが
早く終わるよ。

今ではutf8を使ったのほうが
ノウハウ多いしね。
930デフォルトの名無しさん:2012/01/16(月) 21:31:54.91
どうしてもjcode.plでハングルを扱いたいです。

よろしくお願いします。
931デフォルトの名無しさん:2012/01/16(月) 21:35:06.67
ハングルを扱うのならjcode.plは不要と思われ。素のperlだけで扱える。
コードは何から何に変換するつもりなの?
932デフォルトの名無しさん:2012/01/16(月) 21:39:34.97
>>930
釣りの練習なら余所でやれよ。
933デフォルトの名無しさん:2012/01/16(月) 21:52:36.13
>>929
プログラマにそんな選択の自由与えられていないだろ。
934デフォルトの名無しさん:2012/01/16(月) 22:16:45.89
>>933
社長様がPerl4で書けなどと強要する脳内ブラック企業はもういいです
935デフォルトの名無しさん:2012/01/16(月) 22:40:52.97
社長と俺しかいないのかよっ(しかもPerl4て、ぷぷ)
936デフォルトの名無しさん:2012/01/17(火) 00:38:30.68
重要性の比較

インタプリタの互換性 < スクリプトの互換性 < データの互換性

な。スクリプトはある意味、データだからな。
937デフォルトの名無しさん:2012/01/17(火) 02:39:24.50
・大規模データ
・分散システム
・無停止システム
・さらにこれらに付随する多数の小規模システム
そう簡単にUTF-8にできるわけじゃないし、そうする動機もない
938デフォルトの名無しさん:2012/01/17(火) 02:42:50.41
東電みたいなこと言うなよ。
939デフォルトの名無しさん:2012/01/17(火) 02:58:45.17
>>937
そんなのをPerlで作ってるところなんて無いからw
940デフォルトの名無しさん:2012/01/17(火) 03:04:24.25
webアプリのようなmod_perlとか使うなら大規模なシステムもperl使えそうだけど、
それ以外でなら、Javaとかの方がいいかもしんない
941デフォルトの名無しさん:2012/01/17(火) 08:37:49.45
>>940
こういうとき絶対に「Java上で書かれた言語」とかじゃなく「生のJava」をお勧めされるよねw
942デフォルトの名無しさん:2012/01/17(火) 09:38:22.87
コードをutf8で書いたらデータの互換性が無くなるとか
書き方はいくらでもあるだろ
943デフォルトの名無しさん:2012/01/17(火) 12:15:39.86
utf8とかいうの試してみたけどエラーで表示できませんでした
環境はatciveperl5.8でwin7でブラウザはIEです
ちゃんとterapadとかいうエディタでソースコードをUTF8保存しました
どこがだめなんでしょうか?
結局sjisかeucでやるしかないのかな?

use utf8;
binmode STDIN,":encoding(cp932)";
binmode STDOUT,":encoding(cp932)";
print "テスト";
944デフォルトの名無しさん:2012/01/17(火) 12:20:55.05
>>943
まずエラーメッセージの内容ください
945デフォルトの名無しさん:2012/01/17(火) 12:32:10.47
>>943
ソースにBOMついてない?
一応レス。
946デフォルトの名無しさん:2012/01/17(火) 12:33:52.16
>>944
IEでこのブラウザでは表示できませんってエラーがでてくる
947デフォルトの名無しさん:2012/01/17(火) 12:38:09.74
えっ?コマンドラインじゃないの?
本買ってきて基礎からやった方がいいよ。
948デフォルトの名無しさん:2012/01/17(火) 12:39:44.90
>>943
terapad はutf-8n指定しないとBOM
が付くみたいだから、それためしてみ。
949デフォルトの名無しさん:2012/01/17(火) 12:41:18.67
>>947
そしてどこで買ったか知らないが「表紙が赤い」オライリー本で勉強するいつものパターンですね、わかります
950デフォルトの名無しさん:2012/01/17(火) 13:00:27.50
ブラウザはIEです、ってまず意味がわからん。なぜIEが出てくる。
もしCGIの話をしてるんだったらスレ違いだ。
951デフォルトの名無しさん:2012/01/17(火) 13:07:22.28
>>943はCGIとPerlの区別もついてないゴミクズ
よく恥ずかしくないなこのゴミ
>>1すら読めない池沼はさっさと回線切れや
952デフォルトの名無しさん:2012/01/17(火) 18:50:33.75
スレを無駄に消費しないでください
分かる方のみ回答をお願いします
953デフォルトの名無しさん:2012/01/17(火) 19:00:09.94
分かってる人しか回答していない事実
954デフォルトの名無しさん:2012/01/17(火) 22:11:12.31
>>939 単に知らないだけだろ
955デフォルトの名無しさん:2012/01/17(火) 22:23:31.86
1000に届くついでに
・Perl4スレ
・Perl5.005スレ
・Perl5.8以降スレ
に分割すればいいのかと夢想したが、そうすると話題がないので
スレが伸び悩む。
956デフォルトの名無しさん:2012/01/17(火) 22:33:57.56
>>955
>>1の先頭に
use 5.008;
って入れておくのか。
957デフォルトの名無しさん:2012/01/17(火) 22:42:49.23
5.8以前は全部いっしょくたでいいよ
それよりモダンなPerlの書き方に関するスレ立てたいんだが閑古鳥必死かね…
958デフォルトの名無しさん:2012/01/17(火) 22:55:50.81
それは立ててみないと分からないので try{} すべし
959デフォルトの名無しさん:2012/01/17(火) 23:09:02.61
モダンPerlだのユニコードだのutf8フラグだのと机上でトップダウン
で考え出されたものは・・・・・・だからね。
960デフォルトの名無しさん:2012/01/17(火) 23:18:57.22
>>959
お前が無知なだけw

お前の知ってる方法で、世界中の言語を
扱ってみろよ。
961デフォルトの名無しさん:2012/01/17(火) 23:21:59.27
世界中の言語を扱[わえ]ないからw
962デフォルトの名無しさん:2012/01/17(火) 23:27:19.96
世界中の言語を扱うっていうのはどういうことを言っているの?
length 関数と substr 関数が使えれば世界中の言語を扱っている
っていうことなの?プログラマ自身が読み書き会話できないと
その言語を扱うっていうのは無理なんじゃないかと思うんだけど。
963デフォルトの名無しさん:2012/01/17(火) 23:32:16.87
>>962
たとえば受信したメールを
文字化けしないように表示すること
964デフォルトの名無しさん:2012/01/17(火) 23:33:45.51
内容を理解する必要はないわなw
文字化けしないように表示できればいいだけだな。
そんなこともわかんないのか?w
965デフォルトの名無しさん:2012/01/17(火) 23:37:41.39
>>961
扱ってみろと言ってるだけ。

練習すらできない?
966デフォルトの名無しさん:2012/01/17(火) 23:39:47.48
文字を扱うのと言語を扱うことの区別がないとはw
もうじきクラス替えみたいだから、元気でな
967デフォルトの名無しさん:2012/01/17(火) 23:40:39.42
>>966
揚げ足?
968デフォルトの名無しさん:2012/01/17(火) 23:44:26.89
高専あたりにゃクラス替えはないから
これから最長4年間ほどは耐えなきゃならんな
まあガンバれYO!プークスクス
969デフォルトの名無しさん:2012/01/17(火) 23:45:05.44
揚げ足のつもりはない。気が向いたらこっちのスレにも顔出してな。
970デフォルトの名無しさん:2012/01/17(火) 23:46:52.21
揚げ足取りなんてつまらないことやめて、

世界中の文字コードをちゃんと解釈して表示できるものを
jcodeなんかを使ってやってみせてよ。

Encodeでしかまともに実現できないでしょ。
大幅に時間がかかる方法は却下。
971デフォルトの名無しさん:2012/01/18(水) 00:12:50.92
1.第一に世界中の言語を扱うことがない。大事な主張なのでこれで2度目な。
2.表示の問題はフォントや表示機器の問題。
3.jcode(jcode.plのこと?)は変換のためのものだから表示うんぬんに関係がない。
4.文字が扱えるけど言語は扱えないっていうのは例えば、数式の記述にギリシア文字が使えるが、ギリシャ語を扱えるわけじゃないっていう例がある。でもそれは恣意的な例に思える。例えばその言語の禁則処理はできなくてもいいのか?それで言語を扱えてると言えるのか?

まあ、世界中の文字を扱えるって言いたかったのかもしれないとエスパーするが。
972デフォルトの名無しさん:2012/01/18(水) 00:14:13.12
扱うことがないかは問題ではない。

やってみせろと言ってるだけ。
練習もできないのか?
973デフォルトの名無しさん:2012/01/18(水) 00:15:55.20
結局「いままでこの方法でやって来れたから」
できたから、現在主流になってる方法がつかえなく
いつまでも古い問題に振り回されてるんだよな。

勉強する気がないならプログラマ向いてないよ
やめたほうがいい。
974デフォルトの名無しさん:2012/01/18(水) 00:15:55.94
お前のために練習できない。

それと中学はやっぱりクラス替えあるってよ。
975デフォルトの名無しさん:2012/01/18(水) 00:16:28.49
> お前のために練習できない。

日本語も不自由なようだw
976デフォルトの名無しさん:2012/01/18(水) 00:17:40.73
出来る奴と出来ない奴

出来ない奴は、やらない理由を探す癖がある。
977デフォルトの名無しさん:2012/01/18(水) 00:18:20.91
そういう実験はお前がやって自己満足してろよ、おれは邪魔したりはしないよ。
978デフォルトの名無しさん:2012/01/18(水) 00:20:06.06
実験じゃなく、実用で使ってる。

つか世間的にはそれが一般的
メンテが続いているほとんどのCPANモジュールも
きちんと対応されてる。

お前と俺とでは格が違うよ。
俺はやった上で言ってる。
お前はやらない理由を探してる。
979デフォルトの名無しさん:2012/01/18(水) 00:21:09.61
だから、実験でも実用でもお前の邪魔したりしないから、落ち着け。
そんなに向きになんな。
980デフォルトの名無しさん:2012/01/18(水) 00:23:18.24
えらい、えらい、おまえはえらい、おれはバカだ。そうだ、そうだ。
これからもおれはお前の邪魔したりはしないから、向きになんな。
981デフォルトの名無しさん:2012/01/18(水) 00:26:06.84
>>979
じゃまとかなにか勘違いしてるんじゃないのか?

俺は、お前以外の人に、最新のPerlはEncodeモジュールを
使うのが標準と伝え、お前のように勉強しない奴が
どれほどダメな人間かをこうやって伝えてるんじゃないか。

やってみろといってもやらない、
やらない理由探し、俺には必要ない。
言い訳ばかり、お前のしゃべる言葉すべてが
恥ずかしい言葉として、他に人の目に写っている。

それこそが俺がこうやってレスしている目的なんだがw
982デフォルトの名無しさん:2012/01/18(水) 00:26:50.86
ようし、これで1000までいこうぜ!
983デフォルトの名無しさん:2012/01/18(水) 00:27:45.46
邪魔どころか、俺の計画通り
ダメ人間っぷりを晒してくれて
手伝ってくれて、どうもありがとうって感じなんだがねw
984デフォルトの名無しさん:2012/01/18(水) 00:27:48.62
そういえば、お前仕事は見つかったのか?
985デフォルトの名無しさん:2012/01/18(水) 00:28:40.86
>>984
きっとその件についても
やらない理由を探してるよw
986デフォルトの名無しさん:2012/01/18(水) 00:29:42.64
>>985
すまん、残り少なくなってきたが分からないので解説よろ。
987デフォルトの名無しさん:2012/01/18(水) 00:31:27.24
>>986
仕事さがしてないってことだろw

Encodeモジュール程度でさえ、やらない理由を言ってるやつだぞ
仕事探しもやらない理由を言うばっかりでやってないに決まってるw
988デフォルトの名無しさん:2012/01/18(水) 00:31:53.70
うめ
989デフォルトの名無しさん:2012/01/18(水) 00:32:18.72
うめ
990デフォルトの名無しさん:2012/01/18(水) 00:32:35.64
うめ
991デフォルトの名無しさん:2012/01/18(水) 00:33:01.86
うめ
992デフォルトの名無しさん:2012/01/18(水) 00:33:21.95
うめ
993デフォルトの名無しさん:2012/01/18(水) 00:33:39.81
うめ
994デフォルトの名無しさん:2012/01/18(水) 00:33:59.01
うめ
995デフォルトの名無しさん:2012/01/18(水) 00:34:23.03
うめ
996デフォルトの名無しさん:2012/01/18(水) 00:34:46.06
うめ
997デフォルトの名無しさん:2012/01/18(水) 00:35:08.94
>>987
了解。納得したw
998デフォルトの名無しさん:2012/01/18(水) 00:35:26.11
うめ
999デフォルトの名無しさん:2012/01/18(水) 00:35:32.51
この世界はおれたちの心のようには美しくなくて、ときどきめげそう
になることがあるな。でもな、生きていればきっといいことがあるから、
あきらめるんじゃないぞ。
1000デフォルトの名無しさん:2012/01/18(水) 00:35:41.12
うめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。