Perlについての質問箱 36箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/07/09(水) 11:11:10"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 http://pc11.2ch.net/php/ )
CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2008/07/09 現在の最新版(安定版): 5.10.0
● 2008/07/09 現在の開発版: ------
▼ 前スレ
Perlについての質問箱 35箱目
http://pc11.2ch.net/test/read.cgi/tech/1208674881/
リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5 あたり
0002デフォルトの名無しさん
2008/07/09(水) 11:12:05Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.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/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi (停止中)
perldoc.jp: ttp://www.perldoc.jp/
perldoc.com: ttp://www.perldoc.com/
0003デフォルトの名無しさん
2008/07/09(水) 11:13:06CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl 5.8 Unicodeメモ]
http://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2008/07/09(水) 11:13:52# このレスは、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でエンコードする必要があります。
0005デフォルトの名無しさん
2008/07/09(水) 11:14:551 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/ (事故により消滅)
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/ (事故により消滅)
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/
0006デフォルトの名無しさん
2008/07/09(水) 11:15:4521 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/
26 ttp://pc8.2ch.net/test/read.cgi/tech/1153412251/
27 ttp://pc8.2ch.net/test/read.cgi/tech/1157874614/
28 ttp://pc8.2ch.net/test/read.cgi/tech/1162273941/
29 ttp://pc11.2ch.net/test/read.cgi/tech/1166708139/
30 ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/
31 ttp://pc11.2ch.net/test/read.cgi/tech/1181500187/
32 ttp://pc11.2ch.net/test/read.cgi/tech/1186995713/
33 ttp://pc11.2ch.net/test/read.cgi/tech/1192463997/
34 ttp://pc11.2ch.net/test/read.cgi/tech/1199977642/
35 ttp://pc11.2ch.net/test/read.cgi/tech/1208674881/
0007デフォルトの名無しさん
2008/07/09(水) 12:21:470008デフォルトの名無しさん
2008/07/10(木) 00:22:31>>1乙
0009デフォルトの名無しさん
2008/07/10(木) 02:12:07☆ チン
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< perlboob まだ〜?
\_/⊂ ⊂_)_ \_______
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| .|/
0010デフォルトの名無しさん
2008/07/11(金) 03:24:390011デフォルトの名無しさん
2008/07/11(金) 11:31:07my %d = ( 'name'=>'ami', 'size'=>74 );
push @list, \%d;
という感じで詰めていけるけど、これを取り出すとき
一旦変数に入れたいんだけどどうしたらいい?
my %e = $list[0];
print $e{'size'};
とかやっても見れないみたい。
print $list[0]['size'];
などで見るのはできるのに。
0012デフォルトの名無しさん
2008/07/11(金) 11:36:580013デフォルトの名無しさん
2008/07/11(金) 11:50:15デリファレンスを勉強する
%e = %{$list[0]};
print $e{'size'};
または
$e = $list[0];
print $$e{'size'};
0014デフォルトの名無しさん
2008/07/11(金) 11:50:41print $e->{'size'};
0015デフォルトの名無しさん
2008/07/11(金) 12:26:59えーと・・・ $e = $list[0]; の時点では 実体のコピーは発生してない
ってことでおk?
0016デフォルトの名無しさん
2008/07/11(金) 13:08:05001715
2008/07/11(金) 13:48:300018デフォルトの名無しさん
2008/07/11(金) 14:19:35001915
2008/07/11(金) 16:29:390020デフォルトの名無しさん
2008/07/11(金) 17:58:280021デフォルトの名無しさん
2008/07/11(金) 18:36:450022デフォルトの名無しさん
2008/07/11(金) 19:10:510023デフォルトの名無しさん
2008/07/12(土) 15:58:44euc-jp.txt の最初の 1 行しか出力してくれませんでした
何故なんでしょうか?
-- to_sjis.pl --
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Encode::Guess;
# Shift_JIS
if ( ref(guess_encoding($_, qw/shiftjis/)) )
{
print $_;
exit;
}
# EUC-JP
if ( ref(guess_encoding($_, qw/euc-jp/)) )
{
print encode("shiftjis", decode("euc-jp", $_));
exit;
}
# Others
die "error!";
-- to_sjis.pl --
0024デフォルトの名無しさん
2008/07/12(土) 16:15:11何故も何も-nの動作詳細とprintした直後に何してるのかを100万回見直せ。
0025デフォルトの名無しさん
2008/07/12(土) 16:24:31> printした直後に何してるのか
ああどうも
perl -n って全行に perl hoge.pl を適用するんじゃなく
while (<>) { 〜 } の 〜 に hoge.pl を埋め込むような動作なわけね
んで exit が効いちゃうわけね
002623
2008/07/12(土) 16:31:18当たり前かもしれないけど Encode::encode じゃ文字コードは変わっても改行コードは変わらんのね…
-- to_sjis.pl --
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Encode::Guess;
if ( ref(guess_encoding($_, qw/euc-jp/)) )
{
$_ = encode("shiftjis", decode("euc-jp", $_));
}
0027デフォルトの名無しさん
2008/07/13(日) 21:18:30ActivePerl5.10だとcore_rl_magick.dllがありません的なこと言われて、
ActivePerl5.8だとCan't locate Image/Magick.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib.)って出ます。
ImageMagickはImageMagick-6.4.2-1-Q16-windows-dll.exeで入れました。
ActivePerl5.8とImageMagick6.3.4-7入れてる別のパソコンでは使えてるんですが
そのバージョンのImageMagickを入手できるところがない。
0028デフォルトの名無しさん
2008/07/13(日) 22:16:33002927
2008/07/13(日) 22:26:02PPM見ても
Apache-ImageMagick
Image-Magick-Square
Image-Magick-Thumbnail-Fixed
しかなくて、目的のとは違うと思うんですよね。
0030デフォルトの名無しさん
2008/07/13(日) 22:33:16ppm install Image-Magick
0031デフォルトの名無しさん
2008/07/13(日) 23:28:15できました!!!
聞いてよかった。ありがとうございましたー
0032デフォルトの名無しさん
2008/07/13(日) 23:39:06ImageMagickって古いversionはどこに置いてあるんだろうね。
0033デフォルトの名無しさん
2008/07/14(月) 11:30:500034デフォルトの名無しさん
2008/07/15(火) 02:28:340035デフォルトの名無しさん
2008/07/15(火) 23:04:37という変数があるとき
この変数が宣言されただけか、なにか値が入れられたかを
判定する方法ってありますか?
0036デフォルトの名無しさん
2008/07/15(火) 23:16:26defined $hoge
で、undef か否かを判定する事は出来るよ。
0038デフォルトの名無しさん
2008/07/16(水) 01:37:47いいってことよ
0039デフォルトの名無しさん
2008/07/16(水) 03:41:10毎行はじめにprintと書いているのですが、
これを書かずに1回のprint、或いはもう少し簡単に表記できる方法はありませんか?
0040デフォルトの名無しさん
2008/07/16(水) 04:23:430041デフォルトの名無しさん
2008/07/16(水) 04:36:04毎行はじめにprintと書いているのですが、
これを書かずに1回のprint、或いはもう少し簡単に表記できる方法はありませんか?};
0042デフォルトの名無しさん
2008/07/16(水) 07:16:52print を使い何行もの文章を書く場合
毎行はじめにprintと書いているのですが、
これを書かずに1回のprint、或いはもう少し簡単に表記できる方法はありませんか?
MULTIPLE_LINES
0043デフォルトの名無しさん
2008/07/16(水) 07:23:55print << "MULTIPLE_LINES";
print を使い何行もの文章を書く場合
毎行はじめにprintと書いているのですが、
これを書かずに1回のprint、或いはもう少し簡単に表記できる方法はありませんか?
MULTIPLE_LINES
0044デフォルトの名無しさん
2008/07/16(水) 16:36:58ttp://chalow.net/2006-09-07-1.html こういう話もあるけど
0045デフォルトの名無しさん
2008/07/16(水) 17:02:38何か有名な解説本に載ってた解法。
(都合上 indent は全角でやってるが、半角 x 4 に置き換えてくれ)
sub del_ind ($$){ ( my $in = $_[0] ) =~ s/^\s{$_[1]}//gm ; $in ; }
my $bar = del_ind <<' EOF', 4 ;
hoge
foo
bar
EOF
print $bar ;
0046デフォルトの名無しさん
2008/07/16(水) 23:12:30#変数展開したければevalするよろし。
print <DATA>;
__END__
print を使い何行もの文章を書く場合
毎行はじめにprintと書いているのですが、
これを書かずに1回のprint、或いはもう少し簡単に表記できる方法はありませんか?
0047デフォルトの名無しさん
2008/07/17(木) 16:58:150048デフォルトの名無しさん
2008/07/17(木) 17:00:190049デフォルトの名無しさん
2008/07/17(木) 17:02:05my @test = system( 'ls');
としているのですが、lsの内容がstdoutに出力されてしまい、@testには代入されません。
@testにls(他のコマンドの場合もあります)の出力を代入したいのですが、
そのような方法はありませんか?
0050デフォルトの名無しさん
2008/07/17(木) 17:10:23qx演算子とかopen関数とか
詳しくはperlop, perlfunc参照
0051デフォルトの名無しさん
2008/07/17(木) 17:25:16lsコマンドの変わりにglobとかstat使っても良いよ。
0052デフォルトの名無しさん
2008/07/17(木) 17:26:52my @test = `ls`;
0053デフォルトの名無しさん
2008/07/17(木) 19:20:47.∧_∧
(`・ω・) ……むぅ、のってないよ
/ヽ/⌒/⌒/
⌒`⌒
0054デフォルトの名無しさん
2008/07/17(木) 19:51:30lsを囲んでるのはシングルクォート「'」じゃなくて、バッククォート「`」だよ
見づらくてすみません
0055デフォルトの名無しさん
2008/07/17(木) 23:17:52if ( $nullpo =~ /\'/ ) {
print "\(’$`\)";
}
0056デフォルトの名無しさん
2008/07/18(金) 01:29:43いくらもらってるの?
0057デフォルトの名無しさん
2008/07/18(金) 01:38:050058デフォルトの名無しさん
2008/07/18(金) 15:18:50$max = List::Util::max(@$foo[0]);
ではだめなのですか?
0059デフォルトの名無しさん
2008/07/18(金) 15:26:50実行したいのですがスマートなやり方はありませんでしょうか。
以下のような感じです。
---main.tt2---
[%
INCLUDE sub_func.tt2;
hoge(111);
fuga(222);
%]
---sub_func.tt2---
[%
MACRO hoge(n) BLOCK; 'hoge = ' _ n; END;
MACRO fuga(n) BLOCK; 'fuga = ' _ n; END; %]
期待する結果:hoge=111fuga=222
実際は何も表示されません。恐らくスコープ関係かなと考えます。
0060デフォルトの名無しさん
2008/07/18(金) 15:51:28max map {max @$_} @foo
0061デフォルトの名無しさん
2008/07/18(金) 16:02:18でけますた
0062デフォルトの名無しさん
2008/07/18(金) 16:15:44localizeしたくないときはINCLUDEじゃなくてPROCESS
0064デフォルトの名無しさん
2008/07/18(金) 21:38:14明示的に宣言する方法はあるでしょうか。
具体的には
$hensuu = 0;
$hensuu--;
print $hensuu;
出力結果 : 255
という処理を行いたいです。
現在は$hensuuの内容を判断し、0〜255の範囲に丸めています。
0065デフォルトの名無しさん
2008/07/18(金) 21:57:570066デフォルトの名無しさん
2008/07/18(金) 22:09:47006764
2008/07/18(金) 22:19:17ありがとうございます。明示的な型宣言は無理で、利用する際に下位1バイトだけを
持ってくるしかないんですね。勉強になりました。以下実行速度です。
$ time { ./65.pl; }
255
real 0m0.133s
user 0m0.030s
sys 0m0.077s
$ time { ./66.pl; }
255
real 0m0.144s
user 0m0.046s
sys 0m0.062s
後学のために、ついでに質問させていただきますが、
$hensuuを大きな配列($hensuu[0xFFFFFF]など)として利用する場合、
メモリ消費を節約しようと考えたら、pack/unpackなどを使い自分でデータを管理した方が早いでしょうか。
是非をお答えいただけたら幸いです。
0068デフォルトの名無しさん
2008/07/18(金) 22:51:05あんたがPerl(データに型は無いが、演算子には厳格な型がある)を使うのは無理、とも言う
> メモリ消費を節約しようと考えたら、pack/unpackなど
pack以前/unpack以降のメモリ消費量を考えていない、とも言う
もっtieないお化けが出ちゃうぞ
0069デフォルトの名無しさん
2008/07/18(金) 23:06:40決して恥ずかしいことじゃ無いんだよ。
0070デフォルトの名無しさん
2008/07/18(金) 23:09:28型のオブジェクト作れば厳格にできるじゃん。
0071デフォルトの名無しさん
2008/07/19(土) 00:24:350072デフォルトの名無しさん
2008/07/19(土) 00:35:100073デフォルトの名無しさん
2008/07/19(土) 01:15:190074デフォルトの名無しさん
2008/07/19(土) 01:28:41> メモリ消費を節約しようと考えたら、pack/unpackなどを使い自分でデータを管理した方が早いでしょうか。
http://search.cpan.org/search?query=Tie%3A%3AArray%3A%3APackedC&mode=all
Tie::Array::Packedが最高速なのかな
0075デフォルトの名無しさん
2008/07/19(土) 09:53:36それほど大きくはないけど速度がほしいときはInline::C。
0076デフォルトの名無しさん
2008/07/19(土) 17:31:210077デフォルトの名無しさん
2008/07/19(土) 20:59:43それいつの時代の話?w
0078デフォルトの名無しさん
2008/07/19(土) 21:00:070079デフォルトの名無しさん
2008/07/20(日) 12:54:43ギチギチ・・・・。゚ ゚ < ̄ω ̄・> ←>>78
/ ̄ ̄||uu.|| ̄ ̄\ コナー
/ __||UU||__ \
._ | | | |
| |===| |===========| |llO
∧_∧ | | . | | | |
( ・∀・) | |. |__| |__|
=U==U==|_|
0080デフォルトの名無しさん
2008/07/20(日) 22:21:53「利用する際に下位1バイトだけを持ってくる」風な機能を投げやりに自動化してみた。
使い方は、お好きな変数を
tie $var, 'CharLike';
するだけ。
以下 CharLike.pm:
package CharLike;
use strict;
use warnings;
use utf8;
use Tie::Scalar;
our @ISA = qw( Tie::StdScalar );
sub FETCH { return ${ $_[0] } % 256; }
1;
0081デフォルトの名無しさん
2008/07/20(日) 23:29:28use utf8と書いておいたほうがいいのでしょうか?
0082デフォルトの名無しさん
2008/07/20(日) 23:51:48utfプラグマはファイルをUTFで書いたときに使います
008382
2008/07/20(日) 23:52:15なぜか8を二回とも書き忘れた
0084デフォルトの名無しさん
2008/07/21(月) 09:09:49php だと php.ini ってファイルにデフォルトのエンコーディングを設定したりするよな。
MySQL も my.ini にデフォルトのエンコーディングを設定するところがある。
java は デフォルトで Shift-JIS だよな(Windows の場合)
perl には 「デフォルトのエンコーディング」 ってのは無いんだな。
0085デフォルトの名無しさん
2008/07/21(月) 09:24:00なにを要するとそういう意味不明な答えが出るの?
0086デフォルトの名無しさん
2008/07/21(月) 09:32:560087デフォルトの名無しさん
2008/07/21(月) 09:37:48好きなほう使えよw
0088デフォルトの名無しさん
2008/07/21(月) 09:58:34ヒント
php --help
0089デフォルトの名無しさん
2008/07/21(月) 10:10:50まぁ、結局WebはPHPの一人勝ちか
0090デフォルトの名無しさん
2008/07/21(月) 10:14:080091デフォルトの名無しさん
2008/07/21(月) 10:19:470093デフォルトの名無しさん
2008/07/21(月) 10:38:19なるほど、サンクス
0094デフォルトの名無しさん
2008/07/21(月) 15:41:190095デフォルトの名無しさん
2008/07/21(月) 16:08:230096デフォルトの名無しさん
2008/07/21(月) 21:27:480097デフォルトの名無しさん
2008/07/22(火) 05:05:39$date =~ s/\([月火水木金土日]\)//g;
というのでやってみたんですができなかったんですが
どうすればいいでしょうか
0098デフォルトの名無しさん
2008/07/22(火) 05:25:37正規表現でマルチバイト文字を使うと、誤作動することがあるけど
それなんじゃないかなあ。
$dateには何が入ってるの?
必ず「2008年07月22日 (火)」みたいな文字列が入るって分かるなら、
日付だけ抜き出した方が早いかも
0099デフォルトの名無しさん
2008/07/22(火) 05:27:14入力文字のコードセットが分かってる場合は
曜日文字のコードを直接してもいいかも
0100デフォルトの名無しさん
2008/07/22(火) 05:30:58>正規表現でマルチバイト文字を使うと
そうなんですかわかりました
>$dateには何が入ってるの?
元は2chのdatなので「2008/07/22(火)」みたいな感じです
>日付だけ抜き出した方が早いかも
よくわからないので手ほどきお願いします
>>99
よくわからないです。初心者ですみません。
0101デフォルトの名無しさん
2008/07/22(火) 06:07:53んじゃこんなんで
$date =~ s/([0-9]+)\/([0-9]{2})\/([0-9]{2}).*/\1\/\2\/\3/;
0102デフォルトの名無しさん
2008/07/22(火) 06:14:56おお!できました。ありがとうございました!
0103デフォルトの名無しさん
2008/07/22(火) 08:14:500104デフォルトの名無しさん
2008/07/22(火) 09:51:48Windowsなら、おまじないの>>4を使うとできるかもね
0105デフォルトの名無しさん
2008/07/22(火) 11:11:20open(makefile "makefile.text");
open(mainfile "ARGV[0]");
print makefile <mainfile>;
close(mainfile);
close(makefile);
と直感的に書いてみたのですが、実際には何も書き込まれていない
makefile.htmlが出来上がりました。
ARGV[0]のところか、print makefile <mainfile>;
の所に問題がある気がするのですがよろしくお願いします。
0106デフォルトの名無しさん
2008/07/22(火) 11:42:110107デフォルトの名無しさん
2008/07/22(火) 12:17:57これ、いったい何がしたいの?他人に説明できる?
いま自分が何をしているのか、自分でわかって無いでしょ?
perl 本を読むとか、ネットで検索するとか、少しは努力をしてから
質問しなさい。
0108デフォルトの名無しさん
2008/07/22(火) 12:28:42それを開いてくれればと思ったのですが。
0109デフォルトの名無しさん
2008/07/22(火) 12:30:16と、
open $fh,・・・
の違いは何ですか?
0110デフォルトの名無しさん
2008/07/22(火) 12:31:18あと書式は$ARGV[0]だった気がするんだけど
0111110
2008/07/22(火) 12:32:450112デフォルトの名無しさん
2008/07/22(火) 12:41:57いいえ!!
助かりました。
うまくいきました。
ありがとうございます。
0113デフォルトの名無しさん
2008/07/22(火) 13:11:39コマンドのリダイレクトを多用するのって、やっぱマズいんですかねー。
ロックが必要な時はちゃんとopen/closeするけど、readonlyなログなどは
`cat log | tail -l 3`みたいに、一行で済ませることが多いっす。
これについて詳しく解説してあるサイトないかな。
ちなみに
・配布目的ではない。Windows環境では使わない。
・最低限の基本コマンド程度しか使わない。
・外部から入力される変数をコマンドに丸投げしない。
といった状況ですー。
0114デフォルトの名無しさん
2008/07/22(火) 13:17:50そのものずばりではないが、ラクダ本の「24章 Perlの常識」あたりを読むと気が
楽になると思う。
0115デフォルトの名無しさん
2008/07/22(火) 13:37:24おお、ありがとー。掘り出して読んできます。
これ自体は問題ないとしたら、最近のPerl入門書やらPerl対PHPみたいな論争のお陰で
本来のグルー言語的な使い方のほうがイレギュラーになってのかなあ。
肩身狭く感じるわー。
0116デフォルトの名無しさん
2008/07/22(火) 15:38:330117デフォルトの名無しさん
2008/07/22(火) 16:16:520118デフォルトの名無しさん
2008/07/22(火) 16:23:49(2) 君が変数だと思うものをパターンマッチで抽出して、値に置換
(3) Template Toolkitとか使った方がいくない?
0119デフォルトの名無しさん
2008/07/22(火) 16:49:00s///で置き換えを行っていたのですが、エスケープしてなかったせいで置き換えができていなかったようです。
0120デフォルトの名無しさん
2008/07/22(火) 21:07:000121デフォルトの名無しさん
2008/07/22(火) 21:25:510122105
2008/07/22(火) 21:39:52じつは書いていなかったのですが、
textの中身をHTML化するプログラムを作っていたので
あれで良かったのです。
<pre>タグの間に入れたかったのです。
ありがとうございました。
0123120
2008/07/22(火) 22:20:59perl -nle "1-$.||print'<PRE>'}continue{print}{print'</PRE>'"
0124105
2008/07/22(火) 22:33:35コマンドライン一発でできるんですね。
<html>
<head>
エンコード宣言(長いので省略)
<title>sth</title>(sthはsomethingの略)
</head>
<body>
<pre>
ファイルの内容
</pre>
</body>
</html>
を出力するのはどうなるでしょうか?
かなり長くなるのでプログラムにしてみたのですが・・
0125105
2008/07/22(火) 22:34:49です。
0126123
2008/07/22(火) 22:38:180127デフォルトの名無しさん
2008/07/22(火) 22:40:340128デフォルトの名無しさん
2008/07/22(火) 23:00:04なんつうか、コマンドラインでやるんだったら、わざわざPerlを使うまでもない気がするが
0129105
2008/07/22(火) 23:04:27そうなんですよ
ですから私も以前shell scriptで作成しました。
UNIXの資産も利用できますし
ですが学習のためにperlで書き直してみました。
htmlのライブラリなど有るのでしょうか。
現在は<title>と</title>のように対応するタグを
一回一回書き込んでいるのですが、
まあ使い捨てのつもりでとっさに書いたので良いのですが。
効率化の方法が有ればよろしくお願いします。
0130デフォルトの名無しさん
2008/07/22(火) 23:09:14・・・あのさ。学習のためにPerlって言ってる割には
基本的なファイル入出力も直感で書いてるよね、お前。
ちょっと調べれば出てくる入門レベルの質問をしてるって分からないのか?
0131デフォルトの名無しさん
2008/07/22(火) 23:39:24そゆことなら HTML::Template を調べるのが吉ぽ。
0132200000000000 ◆TFmStiahY2
2008/07/23(水) 00:01:200133デフォルトの名無しさん
2008/07/23(水) 00:46:24readdirって文字数の長すぎるファイルがあると止まったりしませんか?
対応策ご存知でしたらどなたかご教授ください・・・。
0134デフォルトの名無しさん
2008/07/23(水) 00:54:02バグレポして直してもらうのが筋だと思うが
lsの出力を食ってなんとかするとかそういう
手は考えられるな
0135デフォルトの名無しさん
2008/07/23(水) 01:20:29バグなんですか・・・。
そちらのヒントを参考に(win機なんで)dir使ってなんとかしてみます。
ありがとうございました。
0136デフォルトの名無しさん
2008/07/23(水) 02:09:41>文字数の長すぎるファイルがあると止まったりしませんか?
「長すぎる」じゃ誰にもワカランだろ。
もっと具体的に、たとえば「100万文字を越えると止まる」みたいに書かんとダメやろ。
perl よりも前に、コミュニケーション能力を学習しろよ。
0137デフォルトの名無しさん
2008/07/23(水) 02:13:53100万行を指定したところで、MMX時代マシンとメモリ実装8GBの最新マシンだと結果は歴然。
じゃあファイル名の長さは?属性などの情報は?
言い出したらきりがないのがわからんのかこのすかぽんたんめが。
0138デフォルトの名無しさん
2008/07/23(水) 02:32:10頭が痛いのか、腹が痛いのか、ケツの穴が痛いのか、くしゃみが出るのか、変な汁が出るのか
いったいどうしたんかハッキリ言わんと、名医ブラック・ジャックにも治せんよ?
幼稚園児みたいに「頭が痛いでちゅかぁ〜?ぽんぽんが痛いでちゅかぁ〜?」って聞いてもらわんと
自分からは言えんのかよ?
それとも、「言い出したらきりがないのがわからんのか」と逆切れするつもり?
なぁ、幼稚園児さんよ。
0139デフォルトの名無しさん
2008/07/23(水) 04:13:25(笑)
0140デフォルトの名無しさん
2008/07/23(水) 04:43:31質問者の大半は「何が患部なのか」すらも分かってないのにw
>>138
例えがきもすぎ。気に入らない質問なら黙ってスルーしとけよな、カス。
0141デフォルトの名無しさん
2008/07/23(水) 04:47:50ちゃんと説明する気はないんだから、>>136みたいなやつこそスルーしとけ
0142デフォルトの名無しさん
2008/07/23(水) 06:42:06perlのファイルシステム周りの関数はホントどうしようもない。
未だにA関数つかってるし、どうせMAX_PATH超えて引っかかってるんだろ。
0143デフォルトの名無しさん
2008/07/23(水) 06:48:400144デフォルトの名無しさん
2008/07/23(水) 07:57:33ナオシテ( 'Д`) >>142
0145デフォルトの名無しさん
2008/07/23(水) 08:17:22質問だけでなく、気に入らないレスもスルーしとけよな、カス。
あ、他人に許さない色んなことを、自分にだけは許してるタイプの人?w
0146デフォルトの名無しさん
2008/07/23(水) 08:20:190147デフォルトの名無しさん
2008/07/23(水) 08:29:220148デフォルトの名無しさん
2008/07/23(水) 08:54:140149デフォルトの名無しさん
2008/07/23(水) 08:56:220150デフォルトの名無しさん
2008/07/23(水) 09:52:190151デフォルトの名無しさん
2008/07/23(水) 10:24:580152デフォルトの名無しさん
2008/07/23(水) 12:18:120153デフォルトの名無しさん
2008/07/23(水) 13:24:340154デフォルトの名無しさん
2008/07/23(水) 17:53:59WWW::Mechanizeをつかってlivedoorブログに投稿テストを
しようとしているのですが、投稿ページ中のテキストフィールド名が
title,tagまではエラーが出ないのですが本文の部分のテキストフィールド名
でエラーが出てしまいます。(ソースコードを見た所bodyと言う名前だったと思います。)
no such field 'body' at /Library/Perl/5.8.8/WWW/Mechanize.pm line 1371
途中でソースを出力するようにしたのでログインはできている事が確認できました。
そこから先で詰まっているのでよろしくお願いします。
0155デフォルトの名無しさん
2008/07/23(水) 19:04:280156デフォルトの名無しさん
2008/07/23(水) 19:44:480157154
2008/07/23(水) 20:18:11一応自分でググって粘ってできました。
ですがエンコーディングが・・・・EUCに変換して投稿しなければ・・・
盲点だった。
がんばります。
0158154
2008/07/23(水) 22:04:54UNIXのnkfの力を借りてEUCにファイル全体を変換して実行すると
きれいに投稿する事ができました。
ありがとうございました。
0159デフォルトの名無しさん
2008/07/23(水) 23:58:100161デフォルトの名無しさん
2008/07/24(木) 00:17:03このあたりを読めばいい
0162デフォルトの名無しさん
2008/07/24(木) 02:10:39画面のある一部だけを保存するようなPerlを作成したいと思っています
矩形のサイズをあらかじめ決めておきPerlを実行した際に
画面野左上などから 何ピクセル移動したところの矩形の部分ををBMPとして保存するものを作りたいと思っているのですが
PerlでBMPの保存するのに何かいい関数は無いものでしょうか
もし何かいい関数などがありましたら教えてください
0163デフォルトの名無しさん
2008/07/24(木) 03:18:53何がPerlに向いてて何が向いていないのかがおぼろげにわかる
0164デフォルトの名無しさん
2008/07/24(木) 05:07:38質問の具合から見ると全くPerlのことを理解してないんだろうなぁ・・・。
余談だが、世の中にゃPerl-SDLなるものもあるから、Perlで3Dオンラインゲームみたいなのも作れんこともない。
0165デフォルトの名無しさん
2008/07/24(木) 07:17:19スクリプト内部で utf8 フラグ付の文字列操作をするなら、
入力が UTF-8 でも Encode::decode('utf8', $str) しないといかんです。
出力が UTF-8 でも Encode::encode('utf8', $str) しないといかんです。
外してたら失礼。
0166154
2008/07/24(木) 07:44:51ありがとうございます。
早速導入しました。
私のUNIX端末はUTF8が基本エンコードなので
入力文字列を出力前にEUC-JPに変換しておいて実行した所
無事に投稿できました。
0167デフォルトの名無しさん
2008/07/24(木) 08:09:170168デフォルトの名無しさん
2008/07/24(木) 08:12:18> もし何かいい関数などがありましたら教えてください
CPAN
0169デフォルトの名無しさん
2008/07/24(木) 08:33:50これだと、全角文字を分断する可能性があります。
正規表現を使って出来るだけシンプルに全角文字を分断しないようにするには、
どうしたらいいでしょうか?
入力される全角文字は半角英数を含むShiftJIS固定、Perlはv5.8.8です。
#!perl
my $herpussy = <STDIN>;
my $mystick = 79;
$herpussy =~ s/([^\n]{$mystick})/\1\n/g;
print $herpussy;
0170デフォルトの名無しさん
2008/07/24(木) 08:36:40改行を挿入する場所の直前のバイトが0x82だったら、
$mystick-1の位置に改行を挿入、そうでなければそのまま挿入とやってみたいのです(´・ω・`)
0171デフォルトの名無しさん
2008/07/24(木) 08:44:18ここよんできます(´・ω・`)
http://www.din.or.jp/~ohzaki/regex.htm
0172デフォルトの名無しさん
2008/07/24(木) 09:55:01だな。
screenshotで検索すると、それっぽいのが出てくるし。
0173154
2008/07/24(木) 10:28:29本文を入力する際
print "本文:";
$body = <STDIN>;
としているのでどうしても一行しか投稿する事ができません。
この問題を解決するにはどのようにすれば良いのでしょうか?
今思い浮かんでいるのは
1,テキストファイルを引数に入れてもらいそれを本文にする。
2,何らかの方法で入力中に文末である事を明示する仕組みを実装。
2に使える関数など有ればよろしくお願いします。
0174デフォルトの名無しさん
2008/07/24(木) 10:37:36それは自前のロジックで処理すべきもんだろう。
「"q"1文字+改行が入力されたら終了」とかのロジックを入れてwhileとかで回しとけ。
0175デフォルトの名無しさん
2008/07/24(木) 10:38:100176154
2008/07/24(木) 10:45:13その場合qを本文で入力したい場合どうしたら良いのでしょうか?
例
vimのキーバインド解説!!
:q
とすると・・・・投稿されたー!?という自体が起こりえる危険を感じます。
ただ、何となく方向性は見えてきました。
ありがとうございます。
>>175
ありがとうございます。参考にします。
0177デフォルトの名無しさん
2008/07/24(木) 10:52:560179デフォルトの名無しさん
2008/07/24(木) 11:24:19> その場合qを本文で入力したい場合どうしたら良いのでしょうか?
端末からの入力なのか? 昔から、"."のみの行を終端とするのが多いな。
行頭の".."は"."に変換されると言うようなルールを入れて。
0180154
2008/07/24(木) 11:56:01端末から直接投稿できるプログラムを作成したく思っていまして。
一行だけならなんとかできたのですが。
数行にわたる文章を変数に代入して操作するのがうまくいかなくて困っていたのです。
0181デフォルトの名無しさん
2008/07/24(木) 12:07:300182154
2008/07/24(木) 12:16:01body:
今日は今perlでブログに投稿しようとしています。
数行にわたる文章を投稿したいのですがどうしようか迷っています。
.
と書くと
$mech->submit_form(form_name => 'ArticleForm',
fields => {
title => $title,
tag => $tag,
body => $body,←此処に代入されて
今日は今perlでブログに投稿しようとしています。
数行にわたる文章を投稿したいのですがどうしようか迷っています。
が投稿される様にしたいのです。
そもそもWWW::Mechanizeを使っているのが間違いなのでしょうか?
よろしくお願いします。
0183デフォルトの名無しさん
2008/07/24(木) 12:49:100185デフォルトの名無しさん
2008/07/24(木) 13:52:13といったものでもいいですが)をオブジェクト指向でつくるメリットてなんでしょうか?
メリット
その1 クラスをモジュール化することによる改良しやすいプログラムになること
その2 メインプログラムはモジュールつかって書くので変数のバッティングを気にしなくてもいい。
ということでしょうか?しかし、
その1については別にOPPのモジュールにしなくても単なるサブルーチンモジュールでやっても
改良はやりやすいだろうし。
その2についても、変数が1000とかのオーダーでないかぎりしっかりと仕様をおって変数定義
していれば間違わないとおもうし
あえて掲示板でOPPを使うメリットとはなんでしょうか?
0186デフォルトの名無しさん
2008/07/24(木) 14:02:460187デフォルトの名無しさん
2008/07/24(木) 14:04:090188デフォルトの名無しさん
2008/07/24(木) 14:05:300189デフォルトの名無しさん
2008/07/24(木) 14:37:560190デフォルトの名無しさん
2008/07/24(木) 14:40:32こりゃ無理そうだな。
0191デフォルトの名無しさん
2008/07/24(木) 14:50:13テスト文です。
複数行にわたっています。
を代入して,$make_textに
テスト文です。<br>複数行にわたっています。<br>
を代入できるように変換したいのです。
どのようにすれば実装できるかお願いします。
0192デフォルトの名無しさん
2008/07/24(木) 14:51:14>>190
まぁ、カプセル化したほうが安全ではありますが。。。
0193デフォルトの名無しさん
2008/07/24(木) 14:58:28my $make_text = join '<br>', @test, '';
0194デフォルトの名無しさん
2008/07/24(木) 15:06:04> 質問です。perlで掲示板(別に掲示板でなくてもショッピングカートや商品リスト生成
> といったものでもいいですが)をオブジェクト指向でつくるメリットてなんでしょうか?
OOPについてこられないほど頭が悪いバグ生産器を排除できること。
0195デフォルトの名無しさん
2008/07/24(木) 15:11:140196デフォルトの名無しさん
2008/07/24(木) 15:40:09それは単なる一例だから。何もqに限らなくていいじゃん。
他の人が言ってるけど、割り切ってEOF(UNIXなら^D、Windowsなら^Z+改行)でもいいし。
0197デフォルトの名無しさん
2008/07/24(木) 17:03:03(ある種の)if文を書かなくてよくなることがOOP最大のメリット。(俺主観)
if (商品->{種別} == A) { 処理1A(商品) } elsif (商品->{種別} == B) { 処理1B(商品) }
...
if (商品->{種別} == A) { 処理2A(商品) } elsif (商品->{種別} == B) { 処理2B(商品) }
みたいなコードがあちこちにあった場合、商品の種別が変更される毎に、悪夢のような修正が待っている。
そもそも0から書く場合でも、いちいちif文をずらずら並べるのはものすごく面倒くさい。
ところがOOPで書くと、そもそもif文自体が不要になる。
商品->処理1;
...
商品->処理2;
こうなると、商品の種別に変更があっても、呼び出し側を修正する必要性を大きく減らすことができる。(※正しく設計すれば)
なにより、面倒くさくないのが良い。
いわゆるデザインパターンが利用できる。(しやすくなる)
関数(メソッド)間の変数の取り回しが楽になる。
って感じかなぁ
0199デフォルトの名無しさん
2008/07/24(木) 17:32:010200デフォルトの名無しさん
2008/07/24(木) 18:20:57たしかに、開発者のレベルの足切りにつかえそうですねw 自分は継承までは
使いこなせないです。いや、継承をしてメリットがでるようなプログラムは
まだであったことがないといったほうがいいのか。
>>197
メインプログラムでif分を減らせるってことですよね?そして変更は
モジュール部分で行なえるし、そのモジュールを使うほかの各種メインプログラム
自体はいじらずにすむ。ということですよね。
たしかにOOPでつくるとメインプログラムがメモ帳というか箇条書きチックになって
みやすいし面白いですね。その分、モジュールの設計が鬼のように大変ですけど。
>>198
これは、開発してきたOOPモジュールを部分的に再利用したりってことですかね。
継承とかではなくて。 あとはひな形みたいなものをつくっておけばコピペで
基本的なモジュールも専用につくれますしね。
>>199
いや、ヒアック的簡単なものという限定ではなくてもおっけいです。
ただ、掲示板は例は基本的なテクニックが網羅されているっていう点で
あげたわけです。
0201デフォルトの名無しさん
2008/07/24(木) 18:28:50HTMLモジュール=HTMLのヘッダーやフッターやその他を組み立てる部分
ファイル、データ関係モジュール=データの読み込みや書き込み、
フォーム処理、そしてそれらデータをひな形HTMLに合成したHTMLのパーツを生成する部分
当然、ここがOOPプログラムの中枢になるモジュールで、変数の扱いで無名ハッシュ、リファレンス
とつかった多次元配列などのテクニックを使う。またデータを扱う部分なので当然、データの
整合チェックを行ないエラーカウントやエラーメッセージパーツを生成する部分でもある。
アカウントモジュール=ユーザーアカウントの認証、セッション発行や、不正アクセス
行為のアカウントロックなど行ない、エラーカウント、メッセージを生成
その他モジュール=上記以外で必要になるパーツを用意するクラス
これらのモジュールをつかって、メインプログラムでは必要となるモジュールを
動作させる。という感じなのですが。
0202デフォルトの名無しさん
2008/07/24(木) 18:32:47アカウントや出力スタイルを共有する
別のプログラムを作りたくなったときに便利だな。
0203デフォルトの名無しさん
2008/07/24(木) 18:50:370204デフォルトの名無しさん
2008/07/24(木) 19:06:27$body . $_ while <>;
0205デフォルトの名無しさん
2008/07/24(木) 19:28:28$herpussy =~ s/((?>.{78}))(.)/ $2 =~ /[\x81-\x9f\xe0-\xfc]/ ? $1 . "\n" : $1 . $2 . "\n" /eg;
# 未テスト注意
0206デフォルトの名無しさん
2008/07/24(木) 19:46:06感想かくのは自由だが、質問スレなのにどこが具体的にひどいのか指摘しないのも
みていて痛すぎるよ。人を笑えないって。
0207205
2008/07/24(木) 19:48:18$herpussy =~ s/((?>.{78}))(.)/
my ($pre, $post) = ($1, $2);
($2 =~ m{[\x81-\x9f\xe0-\xfc]})
? (pos($herpussy) -1) && $pre . "\n" . $post
: $pre . $post . "\n";
/eg;
# あんまりだったのでセルフサービス
0208デフォルトの名無しさん
2008/07/24(木) 20:48:54それは機能単位でシステムを分割してるから、OOPよりも構造化プログラミング寄りだと思うよ。
どうちがうのかと聞かれたら、俺はOOPは構造化よりもデータ指向プログラミング寄りだと答える。
0209デフォルトの名無しさん
2008/07/24(木) 21:08:39レスありがとうございます。おっしゃっている意味はなんとなくわかります。
上の例でいうならOOPが問題になる部分はファイルやデータをあつかうモジュール
部分のクラスの書き方だとおもいます。 実際問題として掲示板のデータを考えると、
コンストラクタで生成したインスタンスに掲示板の投稿者や内容、日付といった
データをセットするわけですが、その構成方法のみを考えると、OOPのメリットは
なく、あるとすればアクセサ経由のカプセル化とほかのクラスとの連携を考えた上
での構成(構造化っていうんですかね)くらいかなぁとおもうんです。
>>202
ヘッダーやフッターや基本のミッダー表示だけなら、なんの面倒もなく
かけるし、ミッダー部分の処理だけあらためにクラスをつくればいいだけ
ですので、転用はしやすいですよね。
0210デフォルトの名無しさん
2008/07/24(木) 21:20:13よく解説書の説明で車などを例により、オブジェクトとして車をいくつも
生成できるでしょ!便利でしょ! みたいな説明がありますよね。あとは
ゲームでいうと敵機をいくつでもコピーして画面にだせるでしょ!みたいな
説明もあります。
この考え方をperlによる掲示板プログラムに適用すると果たしてモジュールは
どういう構成にすればいいのか? という点です。
正直いって、自分はまったくわかりません。車に相当するものを投稿データと
するならば、投稿データオブジェクトクラス なんかをつくったとしましょう。
それをメインプログラムの方で、必要な投稿数だけ(たとえば10件表示した
としましょう)ひとって出力するとすれば、メインプログラム内で
投稿データオブジェクトクラスを10回ループして、一つ一つの投稿のデータ
はループの中でメインプログラムのスコープで配列にし、それを10回くり
返すことになり、結局、投稿データクラスで生成したオブジェクトを10回分
生成、破棄を繰り返すことになり、はたしてそれはメリットなのか?とおもう
わけです。
投稿データの変数をインスタンスとしてセットしたならそのオブジェクトの
空間(スコープ)で、データを保持したいですよね。そうすると、投稿データの
クラスのプログラムとしては、必要なデータ分をファイル分からとりだして、
その個数分だけインスタンスを用意して読み込んだ値をセットすることに
なります。
あと、もう一つ、初心者として恥ずかしい疑問があるのですが、それはまた別に書きたいと
おもいます。
0211デフォルトの名無しさん
2008/07/24(木) 21:36:330212デフォルトの名無しさん
2008/07/24(木) 21:41:52オブジェクト指向でうれしいのは多態性かな。
例えば、投稿のパターンが複数ある場合。
ある投稿は画像だけ、ある投稿はテキストだけ、ある投稿はHTMLで、ある投稿はDESで暗号化されてるとする。
でもカプセル化して、各オブジェクトのhogehogeメソッドを呼び出すことによって、必要な形(ここではHTML)に変換して出力するようにしておけば、
メインプログラムにおいて、投稿されたデータが何であるかを意識する必要がなく、
ただループの中でhogehogeメソッドを呼び出すだけ。
みたいな。
(結局データ読み込み部でそれを判別して、それぞれのオブジェクト作らないといけないけど。)
0213デフォルトの名無しさん
2008/07/24(木) 21:50:39さっぱり意味不明。コード書いてどっかのアップローダに上げて添削してもらえ。
0214デフォルトの名無しさん
2008/07/24(木) 22:38:56投稿データをクラスにする方向だとメリットはほとんどないと思う。
それよりは「掲示板システム」自体をクラス化するほうがメリットが出てくるだろう。
0215デフォルトの名無しさん
2008/07/24(木) 23:39:43・メモ帳
・予定表
・WEBメール
これを1つのクラスから派生させるといいかな。
全体的に統一感が出る。
認証も一箇所で済むよね。
0216デフォルトの名無しさん
2008/07/24(木) 23:50:10・・・と思ったら、下位の関数側で
if (obj instanceOf なんとか) {
・・・
} else if (obj instanceOf かんとか) {
・・・
} else if (obj instanceOf うんこっこ) {
・・・
} else if (obj instanceOf しっこっこ) {
・・・
こんなのが延々と続いてる、ってのをよく見かける。
単にメイン側の if 文を 下位関数に移動させただけ。
結局、仕様変更時の手間は変わらない。
再利用不能!
0217154
2008/07/25(金) 00:08:01皆さんにはとてもお世話になりました。
知らなかったテクニックなども沢山ご教授いただきありがとうございました。
Perlプログラマに幸あれ!!!
0218デフォルトの名無しさん
2008/07/25(金) 01:41:040219デフォルトの名無しさん
2008/07/25(金) 01:49:00ググったらあったよ\(^o^)/
http://minna.cert.yahoo.co.jp/bsmii/179971
0220デフォルトの名無しさん
2008/07/25(金) 02:08:52もし仮にコレが国家試験だとしても、履歴書に書くのだけはやめような。
0221デフォルトの名無しさん
2008/07/25(金) 02:26:360222デフォルトの名無しさん
2008/07/25(金) 02:27:09↑
これはいったいなんだ?
0223デフォルトの名無しさん
2008/07/25(金) 02:29:42>>219のような出題もあるので、効力も信憑性も皆無だ。
0224デフォルトの名無しさん
2008/07/25(金) 02:50:02こ・れ・は・酷・い。(言葉通りの意味で)
0225デフォルトの名無しさん
2008/07/25(金) 03:27:42print "\a";
print "\a";
print "\a";
print "\a";
print "\a";
print "\a";
print "\a";
print "\a";
print "\a";
print "\a";
↑これを実行しても音が出ないんだが?
0226デフォルトの名無しさん
2008/07/25(金) 03:36:510227デフォルトの名無しさん
2008/07/25(金) 04:50:58これはひどい
いや、ほんとにひどい
0228デフォルトの名無しさん
2008/07/25(金) 05:53:32「JPerlでないPerlでは、
文字クラス内の
日本語文字コードは
2文字すなわち文字2個に分解されるので、
同じ日本語文字コードとはマッチしません」
と書いてあるのだが、これ本当なの?
自分は無料で借りれるレンタルサーバーでCGIを
動かしているのだが、これってJPerlなのかな?
すごい困るんだけど。
0229デフォルトの名無しさん
2008/07/25(金) 06:25:08Perlの正規表現、一度学んだら
別の言語でもそのまま使えるの?
0230デフォルトの名無しさん
2008/07/25(金) 06:48:21https://donate.perl-foundation.org/index.pl?node=Fund%20Drive%20Status&lastnode_id=305
ってところのページを見たんだが、著作権の表示が
2005年で止まってるね。なんで?死んだの?
0231デフォルトの名無しさん
2008/07/25(金) 07:50:59もっと新しい本買え
0232Perl中級者になりたい
2008/07/25(金) 10:17:47URLを入力するとリンク切れをチェックしてくれるツールをPerlで作ってみました。
http://w7.oroti.com/~webhacks/
ソースコードを公開してますので、
コーディングについてアドバイスしていただけると嬉しいです。。
0233デフォルトの名無しさん
2008/07/25(金) 11:07:45とりあえず至急に改善すべき点が1つ。クロスサイトスクリプティング脆弱性を何とかするように。
26, 31-34行あたり。他にもあるかもしれんが、まだ見てない。
0234233
2008/07/25(金) 11:09:200235デフォルトの名無しさん
2008/07/25(金) 11:33:39せめてHTML出力は切り分けよう・・・
0236デフォルトの名無しさん
2008/07/25(金) 11:54:11775 名前:デフォルトの名無しさん メェル:sage 投稿日:2008/07/23(水) 17:06:30
>>773
http://w7.oroti.com/~webhacks/cgi-bin/linkhacks.cgi?url=%3cscript%3ealert%28%22aho%22%29%3b%3c%2fscript%3e
気をつけろよ。
780 名前:Perl中級者になりたい 投稿日:2008/07/23(水) 18:22:40
>>775
ahoの嵐・・・orz
受け取ったデータのチェックが必要ですね。。頑張って修正します。
0237デフォルトの名無しさん
2008/07/25(金) 12:06:46WebProg行けって言われたのになんでここに来るんだw
http://pc11.2ch.net/test/read.cgi/tech/1037383722/773-
CGI.pmのHTML吐く関数郡使うかTT使え
あと同じ処理はまとめろ
例:
1.リクエストする関数
2.チェック済か判断する関数
3.外部リンクか判断する関数
4.1-3をまとめる関数
0238デフォルトの名無しさん
2008/07/25(金) 12:25:12Webの方ではあらかたPHPに移行したと思ってたんだが。
# >>232ってもしかしてコピペ?
0239デフォルトの名無しさん
2008/07/25(金) 12:48:330240デフォルトの名無しさん
2008/07/25(金) 15:41:56よこれすですが、
その行の部分の虚弱性ってのは、利用しているモジュールが変数のサニタイズを
していない可能性があるし、外部入力の文字(urlなど)がはいるところなので
ヤバい文字列をチェック削除置換しておけ!
っていう意味にとっていいですか?
0241デフォルトの名無しさん
2008/07/25(金) 15:42:12Googleで検索してみると沢山有るようでどれがベストな選択か
迷っています。
おすすめなMLをお教え願います。
0242デフォルトの名無しさん
2008/07/25(金) 15:57:47newsgroupだけど。
0243デフォルトの名無しさん
2008/07/25(金) 17:38:07パターンマッチの仕方がわからない状態になっています
ファイルをバイナリモードで開いて 16FF6Dがあるかパターンマチングをする
参考になるコードを教えていただけないでしょうか
0244デフォルトの名無しさん
2008/07/25(金) 17:45:33彼は脇目もふらずにドラクエ3をやっていて、正直、「こいつでもドラクエとかわかるんだなあ」と思った
三十分ほど彼のプレイを見ていて、とても悲しい事に気が付いた
彼がそのゲームでやっているのは、アリアハンの周りでスライムとカラスを倒す、ただそれだけだった。
パーティにただ一人の勇者のLvは50を越えていた。彼は永遠、素手でスライムを殺し続けた
とても楽しそうだった
先に進めてやろうと思い1コンに手を伸ばしたら凄い剣幕で怒鳴られた。
なんて怒鳴られたか聞き取れなかったけれど、とにかく怒鳴られた
それを見て彼の母親が「ごめんなさいね、○○ちゃんはファミコン大好きのよ」と僕に謝った
彼はドラクエ以外のソフトは持っていなかった
僕はそれ以来、ゲームをやらなくなった。以前のようにゲームにのめり込めなくなってしまったのだ。
コントローラーを握るとやるせなくなった。友達の家に行ってもみんながやるのを見ているだけだった
その間、僕はゲームに興じる友達の背中だけを見るように努めた
本当にむなしかった
その内に、僕はファミコンを憎むようにさえなった。今までの人生の中で、あんなに何かを憎んだことはない
それは真夜中に僕を目覚めさせた
ゲームなんかこの世からなくなってくれと本当に願った
僕はソフトを彼に全部あげて、本体は捨ててしまおうと思ったが、兄に怒られそれすらできなかった。
一人暮らしをしている今でもゲームは嫌いだし、もちろん家にも置いていない。
時々、彼と、永遠に世界を救えなかったであろう彼の勇者の事を思い出すと、とても悲しくなる
0245デフォルトの名無しさん
2008/07/25(金) 17:46:04まで呼んだ
0246デフォルトの名無しさん
2008/07/25(金) 18:07:580247デフォルトの名無しさん
2008/07/25(金) 18:29:400248デフォルトの名無しさん
2008/07/25(金) 18:32:12気がつかない人は多い。
ちゃんころだからしょうがないか。
0249デフォルトの名無しさん
2008/07/25(金) 19:51:21ことの差ってのは、基本的レベルまでおとしこめば、差はないとおもう。
プログラムやっている人ならそれくらいわかるだろ。結局はゲームという枠組みの
中でさるのように(受け身にしかなれないわけだが)なってシコシコやっている姿
は障害でも健常でもかわらないこった。
唯一違うことは、物作りだ。244はゲームのむなしさに気がついたのだろうか。
0250デフォルトの名無しさん
2008/07/25(金) 20:02:42「パターンマッチングが終了した場所を記憶しておき、そこにマッチ」という説明がされていますが、
なんのことやら。。。
例題を用いて挙動を説明してもらえると嬉しいです。
0251デフォルトの名無しさん
2008/07/25(金) 20:05:140252デフォルトの名無しさん
2008/07/25(金) 20:06:43渡されたデータを生のまま出力すんな、くらいのつもりだったけど。
MVCで考えると、表示において異常を生じないようにするのは原則
としてViewの責任なので、Viewに相当する部分を指摘すべき箇所と
考えた、というところ。
# あと、個人的には、適切なバリデーションと適切なエスケープを
# していれば、サニタイズという考え方は必要ないと思ってる。
0253デフォルトの名無しさん
2008/07/25(金) 20:06:520254デフォルトの名無しさん
2008/07/25(金) 21:06:09あれから20年たって、まだスライムを倒し続けているのを知ってもそう思えるか?
0255250
2008/07/25(金) 21:06:520256デフォルトの名無しさん
2008/07/25(金) 21:36:39出力バッファをフラッシュするために、
一番上の行に
$|
を必ず書くように、との記述がありましたが、
そうなの?
0257デフォルトの名無しさん
2008/07/25(金) 21:49:30正規表現のみは難しいんじゃないかな?
以下サイトに書いてあるよ。
Shift-JISテキストを正しく扱う
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm#fold
0258デフォルトの名無しさん
2008/07/25(金) 22:28:41%も出てこないのにわけわからん。
@hash{a,b,c} = ();
0259デフォルトの名無しさん
2008/07/25(金) 22:37:15$| = 1;
の間違いじゃないの? もし本当にそう書いてあったら、そんな参考書捨ててしまえ。
あと、1リクエスト内で時間のかかる処理をやるのでなければバッファリングを解除する理由はないと思うが。
0260デフォルトの名無しさん
2008/07/25(金) 22:39:14他のゲーム好きは、わざわざ別のソフトを買って
だいたい同じことをやってるわけだからな。
どっちもどっちだ。
0261デフォルトの名無しさん
2008/07/25(金) 22:41:450262デフォルトの名無しさん
2008/07/25(金) 22:46:52初めて見た文法だった。
ハッシュスライスと言うらしい。
ちょっぴり感動した。
0263デフォルトの名無しさん
2008/07/25(金) 22:51:15サンクス。
そういう文法なんだ。
0265デフォルトの名無しさん
2008/07/25(金) 23:52:56もう一度よくみたら、たしかにそうでした。
0266デフォルトの名無しさん
2008/07/25(金) 23:55:42そんで、
「出力のバッファをフラッシュしないと、
デッドロック問題が起こるから、そうしろ」
って書いてありました。
0267デフォルトの名無しさん
2008/07/25(金) 23:55:56260の意見と同じく、ほかのゲームにしろやってることは根本的にかわらない。
だから障害児のやっていることと健常者がゲームに夢中になっていることは
本質的に大差ないんだよ。画面みてパッドをシコシコやっているだけ。
当人にとってはそれが面白い行為なので、ゲームの束縛から脱却できた人もしくは
はなっからそういう行為は無駄だとラッキーにも経験的に知って自らは創作する
側や演奏する側、送り手側にたつことができた人からみれば、あわれにおもう。
俺個人も大事な時期なのにシューティングにのめり込んでいたけど、今はまったくやらな
くなった。こないだ久々に昔のゲームがどんなものなのかニコニコでみてみたけど、
よくこんな行為をあきもせず延々とやっていたなぁと、驚愕するだけだった。
0268デフォルトの名無しさん
2008/07/25(金) 23:56:57他人が書いたCGIゲームを改造するんですが、
local使ってるかな?と思って
「local」
でソースコードを検索かけたところ、
#!/usr/local/bin/perl
とかまでもがひっかかってしまいます。
#!/usr/local/bin/perl
とかは、検索にひっかかってほしくないんです。
localを変数として使っている局面だけ知りたいので、
こういう場合はどうすればいいですか?
0269デフォルトの名無しさん
2008/07/25(金) 23:58:33"local"ではなくて、"local "で検索してみたら?
0270デフォルトの名無しさん
2008/07/26(土) 00:09:520271デフォルトの名無しさん
2008/07/26(土) 00:43:50そんなことできるの?
Windowsに普通についてる「検索」機能でやってます。
0272デフォルトの名無しさん
2008/07/26(土) 00:46:210273デフォルトの名無しさん
2008/07/26(土) 01:20:27CGIゲームなんだけど、
「いきなりサーバーにアップロードする前に
ローカルでテストしてください」
とか書いてあるんだけど、
OSがwindowsでactiveperlをインストールして
Windows用のアパッチを入れてあるんだけど、
ファイルロック用で、symlinkっていう関数があるんだけど、
これってWindowsでは動かない、って参考書に書いてあるんだけど、
それだともしかして、symlinkがソースコード中にあったら、
Windows環境では、ローカルでのテストは、できない、ってことなの?
0274デフォルトの名無しさん
2008/07/26(土) 01:36:54はっきり言って、そんなもん使うならflockした方がいいと思うよ。
って、ここまで書いて、ここがム板だということに気付いた
0275デフォルトの名無しさん
2008/07/26(土) 03:35:51ハンドルって
ファイルハンドルと
ディレクトリハンドルの
二つしかない?
0276デフォルトの名無しさん
2008/07/26(土) 03:50:31参考書を読むと、
「ApacheなどのWWWサーバでは、
CGIで標準出力に対してバッファリングを
行うとデッドロック問題を引き起こす可能性が
あります。必ずCGIスクリプトの先頭部に
次の行を加えておきましょう」
と書いてあるんですよね。
「必ず」
とかって書かれてるので、
「本当にそうなのかなぁ?」
って、一応は疑ってみたんですよね。
0277デフォルトの名無しさん
2008/07/26(土) 04:12:40参考書を読むと、
「Windowsでは、イメージファイルの読み取り時などに、
改行コードを変換するよう、binmode関数を使う必要があります。」
って書いてあるけど、「Windowsでは」って書いてあるってことは、
ひょっとして、UNIXでは、binmodeなんて使わなくてもいいんでないの?
で、自分はWindowsでテストして、レンタルサーバーにアップロードして
CGIを動かすんだけど、binmodeは使わないとだめなの?
それって、テスト時のみ必要ってことなの?
0278デフォルトの名無しさん
2008/07/26(土) 04:22:25「#を使った場合、そこから後ろはコメントと
みなされます」
って書いてあるのだが、ヒアドキュメントを使った
場合のみ、そのルールが例外になるんだよね?
ヒアドキュメントだと、#があっても
コメント扱いされず、そのまま出力されるっていう。
0279デフォルトの名無しさん
2008/07/26(土) 04:24:000280デフォルトの名無しさん
2008/07/26(土) 04:26:22それ以前に#じゃなくて#だ
0281デフォルトの名無しさん
2008/07/26(土) 04:33:21例外になるのか、って聞いてるんだー
0282デフォルトの名無しさん
2008/07/26(土) 04:34:18じゃ簡単なクイズをやろう。
print "うんこ#ちんこ\n"
さて、どう表示されるでしょう?
0283デフォルトの名無しさん
2008/07/26(土) 04:37:37UNIX には テキストファイル、バイナリファイルの区別が無いんだよ。
binmode は Windows でのみ効果がある。UNIX との違いを吸収するためのおまじない。
UNIX で使っても無視されるから、そのまま放っておいて構わない。
0284デフォルトの名無しさん
2008/07/26(土) 04:38:51その前に、「デッドロック」 の意味がわかってるのかな?
0285デフォルトの名無しさん
2008/07/26(土) 04:40:51それは、どこまでをハンドルと認めるかによって違うから
非常に答えづらい質問だ。おそらくみんな無視するだろうね。
0286デフォルトの名無しさん
2008/07/26(土) 04:43:09print "うんこ #ちんこ\n"
こうなるはずだな。
あーでも、printを閉じるダブルクオーテーションがないよ。
だから、エラーになるのでは?
0287デフォルトの名無しさん
2008/07/26(土) 04:44:07うちの環境では
うんこ#ちんこ
と表示された!ふしぎ!
0288デフォルトの名無しさん
2008/07/26(土) 04:45:36いや、ハンドル、って名前がついてればそれでいいから。
0289デフォルトの名無しさん
2008/07/26(土) 04:46:330290デフォルトの名無しさん
2008/07/26(土) 04:50:34複数行のコメントで、
=pod
=cut
って説明と、
=comment
=cut
って説明と、二通りあるんだけど、
どっちが正しいの?
それとも、両方とも正しいの?
0291デフォルトの名無しさん
2008/07/26(土) 04:51:27__END__
この次の行からは、
なんでも好きなことを勝手に書いてもいいの?
0292デフォルトの名無しさん
2008/07/26(土) 05:18:040293デフォルトの名無しさん
2008/07/26(土) 05:36:050294デフォルトの名無しさん
2008/07/26(土) 06:41:020295デフォルトの名無しさん
2008/07/26(土) 07:24:360296デフォルトの名無しさん
2008/07/26(土) 08:41:26perlのスレで何意味不明なネタを延々と続けてんだ。いい加減止めろ。
0297デフォルトの名無しさん
2008/07/26(土) 08:59:37は? 原理的にありえないような気がしつつ、ぐぐってみたけど、それらしい情報が引っかからんな。
誰かそれらしい話知ってる? あるいはデッドロックが生じる原理知ってる人。
ttps://issues.apache.org/bugzilla/show_bug.cgi?id=22030
こいつは標準エラー出力だし、結局fixされたバグだから関係ないよなあ……。
0298デフォルトの名無しさん
2008/07/26(土) 09:18:06また逆にlt;を表示したい場合<に変換しなければ成りません。
このような処理を行うにはどのようにすれば良いのでしょうか?
文章中で<だったものはlt;にlt;と書かれていた物は<に変換という
方法がわかりません。
よろしくお願いします。
0299デフォルトの名無しさん
2008/07/26(土) 09:24:09CGI.pmの関数、escapeHTMLとunescapeHTMLの使用を検討することをお薦めします。
0300デフォルトの名無しさん
2008/07/26(土) 09:58:00試したら一瞬で結果は出るが、なぜそうなるのか、理由が知りたいって事なんじゃないのか?
0301デフォルトの名無しさん
2008/07/26(土) 10:42:29上のほうのレスを見ると分かるとおり、そういう意図で質問するやつなら
ちゃんとその旨を伝えるべきだと思うよ。やってるやつはやってるし。
これこれこういうことをやってみて、こういう結果になったが
仕様として規定されているのか、またその理由は?
という質問なら、ちゃんとレスが付いてる。
0302デフォルトの名無しさん
2008/07/26(土) 11:54:260303デフォルトの名無しさん
2008/07/26(土) 12:29:010304デフォルトの名無しさん
2008/07/26(土) 16:01:11>の文字がほかの文字に化けていて、なんという文法なんだってしばらく
分からずじまいだった。でオブジェクト指向やリファレンスやらの
表記になれてきたとき、そのサイトを読み直して文字化けだったと
気がついたw orz
いいサイトなんだけど、そのおかげで初学者には超えられない壁になっていた。
0305デフォルトの名無しさん
2008/07/26(土) 16:31:29print $words_arr[1];
みたいに、
配列や変数を複数連続してprintすると、
HTMLのソース内で変数の中身が
hoge
hoge
みたいに改行されて表示されます。
これをブラウザで見ると、中身と中身の間に
hoge hoge
みたいに半角スペースが入ってしまいます。
中身と中身の間にスペースを入れずに表示させたいのですが、
何か方法はありませんか?
0306デフォルトの名無しさん
2008/07/26(土) 16:35:01print join( '', @words_arr );
でうまくいくと思いますよ。
0307デフォルトの名無しさん
2008/07/26(土) 16:41:53いや、ちょっとま違えた。
各項目に改行コードが入っているなら
print join( '', map({ chomp($_); $_; } @words_arr) );
かな。
0308デフォルトの名無しさん
2008/07/26(土) 16:53:31{
local $,;
print @words_arr;
}
0309デフォルトの名無しさん
2008/07/26(土) 17:17:00レスありがとうございます。。
どれも試してみたのですが、だめっぽいです。
ブラウザで表示させて、ソースを見ると単語が改行されて表示されてます。
色々試してみたのですが、どうもブラウザによっても違うみたいで、
IEやfirefox2だと、ソースで改行されててもスペースは入らないのですが、
firefox3だとソースで改行されてるとスペースが入るみたいです。
0310デフォルトの名無しさん
2008/07/26(土) 17:21:33参考になります。
0311デフォルトの名無しさん
2008/07/26(土) 17:25:13もしかして各項目に改行が二つ以上入っていますか?
正規表現で改行を全て取り除くという技もありますが。
print join( '', map({ $_ =~ s/\n//g; $_; } @words_arr) );
0312デフォルトの名無しさん
2008/07/26(土) 17:35:060313デフォルトの名無しさん
2008/07/26(土) 17:41:270314デフォルトの名無しさん
2008/07/26(土) 17:59:22みなさんありがとうございます。
HTMLの問題でもあるっぽいんですが、
HTMLソースで改行さえされなければ何とかなりそうです。
open IN, "<mydata.dat";
my @words_arr;
foreach (<IN>) {
push( @words_arr, $_ );
}
chomp @words_arr;
print "Content-type: text/html\n\n";
for ( my $i = 0 ; $i < 3 ; $i++ ) {
print $words_arr[ int( rand(30) ) ];
}
ソースはこんな感じです。。
0315デフォルトの名無しさん
2008/07/26(土) 18:32:59open IN, "./mydata.dat" or die $!;
chomp(my @words_arr = <IN>);
print "Content-type: text/html\n\n";
print $words_arr[int(rand 30)] . " " for 1..3;
俺が質問を理解できてないのかもしれないけど
「mydata.dat」の中身は適当な文字列で
こんな感じでやってみたけど、IE6でもFirefox3でも変わらなかったよ
0316デフォルトの名無しさん
2008/07/26(土) 18:35:34質問も回答もまるでWebProg板。
0317デフォルトの名無しさん
2008/07/26(土) 19:21:13は自分で調べてわかったからもう、ええわ。
http://perl-mongers.org/2008/06/pod.html
0318デフォルトの名無しさん
2008/07/26(土) 19:22:26なんでsystem関数だけ、
失敗したとき1を返すの?
普通は、成功したら1
失敗したら0
を返すものだと思ったましたが、
なんでsystem関数だけ、
失敗したときに1を返すの?
変態なの?
0319デフォルトの名無しさん
2008/07/26(土) 19:32:190320デフォルトの名無しさん
2008/07/26(土) 19:35:29外国語って難しいな。
0321デフォルトの名無しさん
2008/07/26(土) 19:36:23UNIX系のシステムコールでは「真(成功)が0、偽(失敗)が非0」。
UNIX系のシェルもそうなっている。
なぜそう設計したかというと、成功したときはその要因を詳しく調べる必要がないけれど、
失敗したときは「どのように失敗したか」という要因を戻り値として詳しく伝えたいから。
0322デフォルトの名無しさん
2008/07/26(土) 19:40:500323デフォルトの名無しさん
2008/07/26(土) 22:21:23いろんなIDE40個くらい試してみて
体験レポートとかブログとかに
まとめてる人とかっていないの?
そういうマニアみたいな人
0324デフォルトの名無しさん
2008/07/26(土) 23:31:56おお、そういう風に書くとカッコいいですね!
色々勉強になります。
あと試させてもらったのですが、
やっぱり自分の環境だとスペース入るみたいです。
板違いな質問っぽくなってきたので、また出直します。
ありがとうございました!
0325デフォルトの名無しさん
2008/07/26(土) 23:34:35型グロブとレファレンスについて。
型グロブとはPerl4の時代に使われた
古い仕組みで、主に変数の別名をつけるなどの
目的で使われた。
現在のPerl5では、型グロブなど使う池沼はいなくて
ほぼ全部レファレンスで置き換えられている。
これであってる?
0326デフォルトの名無しさん
2008/07/26(土) 23:39:57ちょっと間違えた。
Perl4の時代の型グロブの主な使い方は、
(1)
サブルーチンなどで、配列やハッシュのもつ値ではなく、
配列やハッシュ自体を指し示す「参照」を受け渡す
(2)
ファイルハンドルを渡したり、格納する
こう書いてました。
0327デフォルトの名無しさん
2008/07/26(土) 23:48:14NSAは日本語情報を実はうまく取得できていないのでは?
なぜなら、ラリー・ウオールはNSAに所属しているときに、
「大量の文字列処理」
を行う必要性に迫られてPerlを作ったと
書いているが、Perlは日本語はあまりうまく処理できないので、
当然NSA内部でも日本語の情報はうまく扱えて
いなかったのではないか、と推測される。
0328デフォルトの名無しさん
2008/07/26(土) 23:55:060329デフォルトの名無しさん
2008/07/26(土) 23:57:16日本サーフィン連盟が大量の文字列処理をする必要あるのか?
大波小波を掻き分けてりゃ十分だろ?
0330デフォルトの名無しさん
2008/07/27(日) 00:15:07勉強したいなら本ばっか読んでないで
プログラム書けよ
受験勉強じゃねーんだからw
0331デフォルトの名無しさん
2008/07/27(日) 00:32:090332デフォルトの名無しさん
2008/07/27(日) 00:34:54> 勉強したいなら本ばっか読んでないで
> プログラム書けよ
> 受験勉強じゃねーんだからw
おぞましくも病的な
http://kazz7.air-nifty.com/tekito/2008/07/learning_perl.html
を思い出した。
0333デフォルトの名無しさん
2008/07/27(日) 00:36:22なんかものすごいバッグドアがありそうな言語だな。
0334デフォルトの名無しさん
2008/07/27(日) 00:43:53NSAが開発したんでなくて、
ラリーがNSAに在籍してるときに
「大量の文字列処理」
を要求されて、それで仕方なく作ったのがPerl
0335デフォルトの名無しさん
2008/07/27(日) 00:44:31Rubyの開発者は日本人なので、
日本語処理は得意なの?
0336デフォルトの名無しさん
2008/07/27(日) 01:10:15誰か日本語のプログラミング言語を開発してくれないかな。
0337デフォルトの名無しさん
2008/07/27(日) 01:17:33ttp://nadesi.com/
ttp://kujirahand.com/himawari/
0338デフォルトの名無しさん
2008/07/27(日) 01:22:41http://www.scripts-lab.co.jp/mind/ver7/v7win_news.htm
0339デフォルトの名無しさん
2008/07/27(日) 01:27:04http://www.nsa-surf.org/
0340デフォルトの名無しさん
2008/07/27(日) 01:35:14http://pc11.2ch.net/test/read.cgi/tech/1213272571/
http://pc11.2ch.net/test/read.cgi/tech/1128688303/
http://pc11.2ch.net/test/read.cgi/tech/1200173891/
http://pc11.2ch.net/test/read.cgi/tech/1106606281/
0341デフォルトの名無しさん
2008/07/27(日) 01:49:210342デフォルトの名無しさん
2008/07/27(日) 01:58:340343デフォルトの名無しさん
2008/07/27(日) 02:05:54なぜ、本などに書いてあることをここに丸々書き写して
いちいち確認を求めるの?
0344デフォルトの名無しさん
2008/07/27(日) 02:13:26ま、まさかキミ、「本に書いてある事はすべて正しい」・・・とか思ってない?
0345デフォルトの名無しさん
2008/07/27(日) 02:14:530346デフォルトの名無しさん
2008/07/27(日) 02:21:01実は漏れは別の分野で
「本を書く側」
の人間なんだが、ウソやでたらめを
いままでも散々書きまくってきたため、
自分もデタラメを書いてるのだから
他人もそうに違いないと思って
本に書いてあることはいちいち
確認してから信用するようにしているのだよ
0347デフォルトの名無しさん
2008/07/27(日) 02:22:45参考書を読むと
「$value = 5;
よみやすくするため、スカラー変数と、=と、 値の間には
それぞれ空白文字をいれます。」
と書いてあるのだが、それくらい自動でできないの?
コンピューターでしょ?
0348デフォルトの名無しさん
2008/07/27(日) 02:34:01なぜマニュアル読んだり、Perlの実装で確かめないの?を遠回りに聞いてるのだと思うぞ。
はっきり言って、2chの情報を鵜呑みにするとか、2chで確認するなんて頭がイカレてる。
0349デフォルトの名無しさん
2008/07/27(日) 02:38:060350デフォルトの名無しさん
2008/07/27(日) 03:00:02$a = <stdin>;
chomp $a;
print "こんにちわ、 $aさん\n";
↑このスクリプトで、$aの直前に、全角スペースを
入れているのだが、そうすると、出力するときに
文字化けになる。
なんでだろう?
0351デフォルトの名無しさん
2008/07/27(日) 03:05:170352デフォルトの名無しさん
2008/07/27(日) 03:08:49むかしむかし、ビジュアルベーシックのIDEが、そういう事をやってたが評判が悪かった。
コーディングスタイルに介入されると無性に腹が立つ。
「できるか、できないか」、では無く、「余計なおせっかいしてほしくない」 だ。
0353デフォルトの名無しさん
2008/07/27(日) 03:09:28use strict したらこんなエラーがでた
配列リファレンスとして見られてるんじゃない?
0354デフォルトの名無しさん
2008/07/27(日) 03:23:491バイト目と2バイト目とで構成されていて、
そんで、そのどっちかが、アスキーコードで
メタ文字と同じになっていて、それでおかしく
なってるのかな?
0355デフォルトの名無しさん
2008/07/27(日) 03:34:360356デフォルトの名無しさん
2008/07/27(日) 03:49:330357デフォルトの名無しさん
2008/07/27(日) 03:57:02これって最終的にはUNIXのレンタルサーバーにアップロード
して使うので、そのときはuse encodingしないでも
動くのではないですか?
0358デフォルトの名無しさん
2008/07/27(日) 04:09:06「おお、勇者よ、聞いてくれ、
実は悪い魔王が$を奪っていったのじゃ。
このままではスカラー変数を使うことができない。
そこで勇者よ、魔王の城に行って
$を奪い返してきてくれないか」
0359デフォルトの名無しさん
2008/07/27(日) 04:14:08システムコールってあるじゃん。
そんで、システムコールって当然
OSごとに違うじゃん。
そしたら、perlのソースコード中に、
OSを判別するコードを埋め込んでおいて、
もしWindwsだったら、このシステムコール。
もしUNIXだったら、こっちのシステムコール、
とかって、分岐しないとだめなの?
0360デフォルトの名無しさん
2008/07/27(日) 04:28:000361デフォルトの名無しさん
2008/07/27(日) 04:32:540362デフォルトの名無しさん
2008/07/27(日) 04:34:26部分文字列の取り出しは、
パターンマッチ関連の演算子でやる方法と、
substr関数でやる方法と、
2種類あるわけですが、これの使い分けは、
何文字目なのか、
わかっている場合は、substr関数で決め打ち、
わかっていない場合は、
パターンマッチ演算子でやる、
こういう使い分けであってますか?
0363デフォルトの名無しさん
2008/07/27(日) 04:44:28use encoding は全くお勧めしませんが、それはさておき、
「UNIXのレンタルサーバーにアップロードして使う」と SJIS 系における全角スペースの第二オクテットが ISO 8859 系の "@" と重複することに起因する不具合が解消するとお考えなのは何故でしょう?
問題の特性からして実行環境の種別とは直行していますから、ご提示の不具合に関する限り何ら影響しないはずではないかと愚考致します。
貴殿の仰るようにアップロードすれば正常動作するのであれば、それは素敵ですが、どうやら世界の計算機はまだ、その水準で空気を読むまでには進化していない模様です。
僭越ながら一般論を申し上げますと、ご自分でプログラムを書いて試される事は、夢見がちな持論を脊髄反射で衆人環視の元に投げ込み続けるに優る、最も手軽で効果的な学習方法です。
ついでと申しましては何ですが、失礼ながら公開のサーバで自作プログラムを走らせるのはまだ時期尚早とお見受け致します。
なにぶんこの点、公共の福祉に関する問題もございますので、今回の開発計画、あるいは今生の人生設計を慎重に再検討頂けますれば存外の幸いと存じます。
願わくはこれからも貴殿の Perl Life に幸多からん事をお祈り申し上げます。
0364デフォルトの名無しさん
2008/07/27(日) 05:01:33「勇者は宝箱を開けた!
なんとprintを見つけた!」
0365デフォルトの名無しさん
2008/07/27(日) 05:33:26これってPerlなの?
0366デフォルトの名無しさん
2008/07/27(日) 05:44:40いま使ってるのは、activeperlなのね。
でもUNIXにアップロードしたら、そこで動いているのは
activeperlじゃなくて、ちゃんとした本物のPerlなのね。
だから直るんじゃないかなーって。
0367デフォルトの名無しさん
2008/07/27(日) 06:08:39#!の読み方で、
「シーバング」
って書いてあるのですが、
バングはわかるとして、なんで
#がシーになるのか、
教えてもらえますか?
0368デフォルトの名無しさん
2008/07/27(日) 06:29:42Perlは手間をかければPHPと同じ実行スピードに近づけることは可能だけど、
そんな時間があったら初めからPHPを使ったほうが
仕事が早く終わるってことだろ。
今時Perlでデザインテンプレート使ったりデータベース突っついている
ヤツは死ねばいいんだよ(藁
0369デフォルトの名無しさん
2008/07/27(日) 09:55:27無能はかかるのかもしれないけど、そういう世界は俺にはよくわからない。
0370デフォルトの名無しさん
2008/07/27(日) 10:15:09そのぐらいのレベルになると逆にPHPの理不尽な挙動で時間食う事もままある。
368のような人は終始PHPを使った方がいいのは同意。日本のIT業界を底から頑張って支えてくれw
0371デフォルトの名無しさん
2008/07/27(日) 10:52:25サーバにftpでアップロードしてるんじゃないの?
そのときシフトJISをEUCか何かに自動変換するよう設定してるんじゃないの?
0372デフォルトの名無しさん
2008/07/27(日) 10:58:49慣れてくるとPerlでもPHP並の速度でコード書けるようになってくるんだけどな。
・・・って言ってほしかったよ。嘘でもいいから。ここはPerlスレなんだから。
まぁそんなヤツは絶対にいないと思うけど。
そんな事に慣れるヒマがあったらPHPのコード書くよね。
でもjavaは、Eclipse とか NetBeans 無しじゃ書けないだろ?
Windowsのメモ帳だけじゃ書け無いだろ?
受注先にいつもいつも開発環境が整ってるとは限らんのよ?
0373デフォルトの名無しさん
2008/07/27(日) 11:34:130374デフォルトの名無しさん
2008/07/27(日) 11:53:46日本語が変すぎて、誰の書いた何に対して思うところがあるのかわからん。
0375デフォルトの名無しさん
2008/07/27(日) 12:05:250376デフォルトの名無しさん
2008/07/27(日) 12:37:400377デフォルトの名無しさん
2008/07/27(日) 14:27:00一般向けに利用している会社は信用しない
っておもうのはあさはか?
0378デフォルトの名無しさん
2008/07/27(日) 14:46:34ActivePerlもちゃんと本物のPerlだ。ただ少しばかりActiveStateのパッチが当たってるだけ。
0379デフォルトの名無しさん
2008/07/27(日) 22:51:45PHPはブラウザからはソース見れないよ。
javascriptじゃないんだから。
0380デフォルトの名無しさん
2008/07/27(日) 23:53:14ASP
JSP
似たのはいっぱいあるよ。
0381デフォルトの名無しさん
2008/07/28(月) 00:14:17納品先にってことだったら、Perlも丸見えだし
0382デフォルトの名無しさん
2008/07/28(月) 01:08:20java を神のごとく信奉してる企業こそ浅はか以外の何者でも無い。
0383デフォルトの名無しさん
2008/07/28(月) 01:40:380384デフォルトの名無しさん
2008/07/28(月) 03:47:22って、たとえば何がある?
0385デフォルトの名無しさん
2008/07/28(月) 03:47:54ソースは秘匿するってモデルの場合の話ね。
0386デフォルトの名無しさん
2008/07/28(月) 03:55:20C++
0387デフォルトの名無しさん
2008/07/28(月) 04:02:24それでみんなC++使うんだ。
JAVAはほんとにそんなにカンタンに
ソースが見れてしまうの?
0388デフォルトの名無しさん
2008/07/28(月) 04:39:340389デフォルトの名無しさん
2008/07/28(月) 05:55:48なにそれ
0390デフォルトの名無しさん
2008/07/28(月) 05:56:46「JPerlでないPerlでは、
文字クラス内の
日本語文字コードは
2文字すなわち文字2個に分解されるので、
同じ日本語文字コードとはマッチしません」
とかいてあるのだが、
これって本当は、
「シフトJISでは」
って意味なのかな?
だとしたら、EUCで書けば、
この問題は解決するの?
0391デフォルトの名無しさん
2008/07/28(月) 06:26:48$a = (5, 6, 7)[1];
これで、$aにリストの1番目の要素、すなわち6が入ると
書いてあるのですが、こんな書き方、普通するの?
0392デフォルトの名無しさん
2008/07/28(月) 06:31:17http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
0393デフォルトの名無しさん
2008/07/28(月) 06:58:11EUCで書いたら、問題が発生する確率が4%
こんな感じ?よってEUCで書くべし、っていう。
0394デフォルトの名無しさん
2008/07/28(月) 07:05:16読んだけど、なんだかよくわからんな。
素直にJPerl使ったほうがいいの?
でも、JPerlだと、自分のパソコンでテストするときは
うまく動くけど、それをレンタルサーバーにアップロードしたら
そこで動いているのはJPerlでなくて、普通のPerlだし、
そしたらまたエラーになるの?
0395デフォルトの名無しさん
2008/07/28(月) 07:13:55Perl for win32をインストールしておく
必要があります」
って書いてあるのだが、Perl for win32とはなにか?
自分の使ってるPerlとはなにか違うのか?
0396デフォルトの名無しさん
2008/07/28(月) 07:15:52なぜかPerlがいっぱいある
●Jperl、Perl for win32、activeperl
(2)
なぜか文字コードがいっぱいある
●EUC, シフトJIS、 ISO−2022−jp、ユニコード、
(3)
なぜかOSがいっぱいある
UNIX, Windows、 Mac,、、
0397デフォルトの名無しさん
2008/07/28(月) 07:35:17「JAVAとWindowsNTではUnicodeが標準の文字コードとなった」
と書いてあるが、本当なの?
0398デフォルトの名無しさん
2008/07/28(月) 08:45:19いくつかあるみたいですね。なので
ローカルではWindowsでJPerlでテストする
完成したら、レンタルサーバーにアップして、UNIXでJPerlで動作させる
というのがいいかな、と思ったんですが、
自分が改造してるCGIはjcode.plを使ってるんですよね。
たしかJPerlってjcode.plが使えないじゃないですか。
とすると、CGIのソースの、jcode.plを使う部分も、
すべて変更しなければならないのでしょうか?
やっぱり、use encodingとかってやったほうがいい?
0399デフォルトの名無しさん
2008/07/28(月) 09:34:39住民はみな、手の指が8本しかない」
0400デフォルトの名無しさん
2008/07/28(月) 09:54:47コンテキストっていうのは、
スカラーコンテキストと、
リストコンテキストとの、
二つしかないの?
0401デフォルトの名無しさん
2008/07/28(月) 10:13:29perlfuncのwantarrayの項を参照。
0402デフォルトの名無しさん
2008/07/28(月) 10:18:150403デフォルトの名無しさん
2008/07/28(月) 10:45:15一応は。
以下、$numには0〜6までの数字が入っているとする。(localtime関数で返ってくるやつね)
$string = ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' )[ $num ] ;
まあ、他にやり方なんぞたくさんあるだろうが。
0404デフォルトの名無しさん
2008/07/28(月) 11:48:140405デフォルトの名無しさん
2008/07/28(月) 14:35:150406デフォルトの名無しさん
2008/07/28(月) 20:57:520407デフォルトの名無しさん
2008/07/28(月) 22:57:31ファイルで
出席番号 名前 身長・体重・BMI
1,田中昭三,163,65,24
2,鈴木一浪,180,59,13
…
見たいなファイルがあるのですが
これを容易にアクセスできるように、ハッシュのように扱いたいのです
たとえば
data[1] か data[田中昭三] みたいにすると身長・体重・BMIが引き出せるような。
Cだと構造体やら使えばいいのですが、どうにもわからず
助けて下しア
0408デフォルトの名無しさん
2008/07/28(月) 22:58:160409デフォルトの名無しさん
2008/07/28(月) 22:59:42身長・体重・BMIは空の場合もあるっす
0410デフォルトの名無しさん
2008/07/28(月) 23:14:46初心者です。
僕にはこれしか思い浮かびません。
どなたか訂正お願いします。
#!C:/perl/bin/perl
print"Content-type:text/html\n\n";
open(IN,"shusseki_log.cgi");
while(<IN>){
my($num,$name,$b,$m,$w) = split(/,/,$_);
$bmw{$num} = qq($b,$m,$w);
}
close(IN);
print $bmw{1};
exit;
0411デフォルトの名無しさん
2008/07/28(月) 23:27:22ぉぉぉ
ありがとうございます。ちょっと試してみます。
やりたいことは
出席番号→氏名の取得 と
出席番号→身長 体重 BMI(この三つは可変) を引いてくる処理なのです
出席番号をキーに、これらが引けるのは、構造体ぐらいしか思いつかなくて
0412デフォルトの名無しさん
2008/07/28(月) 23:39:49氏名も引けるようにしたものです。
たとえば
$name{1} は出席番号1番の人の氏名
$bmi{2} は出席番号2番の人のBMIです
shusseki_log.cgi に該当ファイルを入れています。
#!C:/perl/bin/perl
print"Content-type:text/html\n\n";
open(IN,"shusseki_log.cgi");
while(<IN>){
my($num,$name,$b,$m,$i) = split(/,/,$_);
$bmi{$num} = qq($b,$m,$i);
$name{$num} = $name;
}
close(IN);
print "$name{2},$bmi{1}";
exit;
0413デフォルトの名無しさん
2008/07/29(火) 00:07:32>>412
すいません、BMIって肥満度のことだったんですね。
(B=身長 M=体重 I=?? ってことかと思ってました。
ちなみに、BMIとBMWも間違えてました)
書き直しです。
#!C:/perl/bin/perl
print"Content-type:text/html\n\n";
open(IN,"shusseki_log.cgi");
while(<IN>){
my($num,$name,$tall,$height,$bmi) = split(/,/,$_);
$name{$num} = $name;
$bmi{$num} = $bmi;
}
close(IN);
print "$name{2},$bmi{1}";
exit;
0414デフォルトの名無しさん
2008/07/29(火) 00:08:15use Text::CSV::Simple;
my $csv_parser = Text::CSV::Simple->new({binary => 1});
$csv_parser->field_map(qw/bango name sintyo taizyu bmi/);
my @list = $csv_parser->read_file("list.csv");
#出席番号1の氏名
print $list[0]{name};
0415デフォルトの名無しさん
2008/07/29(火) 00:21:190416デフォルトの名無しさん
2008/07/29(火) 01:16:14# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
↑これ意味がわからん。
ソースコードはUTF8で保存するの?
それとも、シフトJISで保存するの?
0417デフォルトの名無しさん
2008/07/29(火) 01:17:57perlってcase文はデフォルトではないよね。
でも、なんか変なモジュールを使うと使えるんだよね。
で、そのモジュールを使うには、
CPANからそのモジュールをダウンロードしてきて、
解凍して、自分のパソコンとサーバーにアップロードして、
それからでないと使えないんだよね。
0418デフォルトの名無しさん
2008/07/29(火) 01:23:48DOS窓で出力するときには、必ず文字化けするの?
0419デフォルトの名無しさん
2008/07/29(火) 01:34:17use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
print "あなたの名前を入力してください\n";
$a=<stdin>;
chomp $a;
print "ようこそ $aさん\n";
↑これで、実行すると、
あなたの名前を入力してください
と表示される。ここはOK。
次に、suzuki、と入力して、エンターキーを押す。
これもできる。でもその次のステップで、
ようこそ、だけ、表示されて、名前が出てこない。
なんでだ?
ソースコードはutf-8で保存してます。
入出力はDOS窓です。
0420デフォルトの名無しさん
2008/07/29(火) 01:35:39通常だと、全角スペースの2バイト目が、
メタ文字として認識されてエラーになるっていう。
それを防ぐためにuse encodingなんちゃらという
おまじないを入れてみたんだが、それでも動かないって言う。
0421デフォルトの名無しさん
2008/07/29(火) 01:38:470422デフォルトの名無しさん
2008/07/29(火) 01:51:02一回ごとに違った結果がでるよー
しかもソートされてるよー
$a=rand;
push (@a,$a);
$a=rand;
push (@a,$a);
$a=rand;
push (@a,$a);
$a=rand;
push (@a,$a);
$a=rand;
push (@a,$a);
$a=rand;
push (@a,$a);
$a=rand;
push (@a,$a);
@a=sort {$a <=> $b}@a;
@a=join ("\n",@a);
print @a,"\n";
0423デフォルトの名無しさん
2008/07/29(火) 02:02:02これ、何回かやってみて気づいたんだけど、
生成される乱数の末尾が全部5なんだ。
これって普通なの?
0424デフォルトの名無しさん
2008/07/29(火) 02:04:55僕の環境でも、末尾が5になりました。
$a= rand(300000);
のように、最大値を設定しないと、末尾は5になるんでしょうかね。
(それ以上細かい数字は扱えない、という意味で?)
0425デフォルトの名無しさん
2008/07/29(火) 02:08:01遅れましたが、初プログラムおめでとうございます。
Perlにはじめて手をつけてから、どれぐらいかかりましたか?
0426デフォルトの名無しさん
2008/07/29(火) 02:13:041年くらいかな?
0427デフォルトの名無しさん
2008/07/29(火) 02:20:091年ですか!
それだけの時間をかけたなら、感慨もひとしおでしょう。
今日をPerl記念日として、末代まで祝い倒してください。
僕は「掲示板の改造」から入ったので、
どれが初プログラムか、という境界がありませんでした。
(雑談ですいません)
0428デフォルトの名無しさん
2008/07/29(火) 02:49:09んなわけねーだろ。UTF-8で保存してたら全角スペースは 0xE3, 0x80, 0x80 だし、use utf8 が付いてるからこれで1文字と解釈される。
> use utf8;
<略>
> ソースコードはutf-8で保存してます。
Cygwin Perl (v5.10.0) で試してみたが、たしかに文字列の中の変数展開がおかしい。
(改行大杉なので前書き省略。UTF-8で保存)
$a = "ようこそ";
$b = "ニート";
$c = "さん";
print "0. ", "ようこそニートさん\n";
print "1. ", "$aニートさん\n";
print "2. ", "$a$bさん\n";
print "3. ", "$aニート$c\n";
print "4. ", "$a$b$c\n";
print "5. ", "ようこそ$bさん\n";
print "6. ", "ようこそ$b$c\n";
print "7. ", "ようこそニート$c\n";
(結果)
0. ようこそニートさん
1.
2. ようこそ
3. さん
4. ようこそニートさん
5. ようこそ
6. ようこそニートさん
7. ようこそニートさん
0429デフォルトの名無しさん
2008/07/29(火) 02:54:46スルー検定実施中かよ
0430デフォルトの名無しさん
2008/07/29(火) 02:59:180431デフォルトの名無しさん
2008/07/29(火) 03:46:27それらをまとめてハッシュにしたオブジェクトを使うのはありですか?
$obj1, $obj2, $obj3があったとき、
my $obj_boss = BossClass->new($obj1, $obj2, $obj3);するような。
perlというよりオブジェクト指向のこねくり方の様な気がしますが、
教えてエロい人!
0432デフォルトの名無しさん
2008/07/29(火) 08:11:14つまり >>428 の 1 の例では "${aニートさん}\n" とパースされます。
ダブルクォート展開したい場合は "${unko}にーと" などと書き、どこまでが変数名なのか明示する必要があります。
0433デフォルトの名無しさん
2008/07/29(火) 10:23:01じゃあ、やっぱり地道に
use Data::Dumper;
open(IN,"list.csv") or die $!;
while(<IN>){
my($num,$name,$height,$weight,$bmi) = split(/,/,$_);
$list{$num} = {name=>$name, height=>$height, weight=>$weight, bmi=>$bmi};
}
close(IN);
print "$list{1}{name}, $list{2}{bmi}\n";
print Data::Dumper->Dump( [ \%list ] , [ '*list' ] );
0434デフォルトの名無しさん
2008/07/29(火) 10:39:50入力順ソートしとく必要はあるが
ファイルが表題込みなら出席番号と一致するな
0435デフォルトの名無しさん
2008/07/29(火) 11:59:100436デフォルトの名無しさん
2008/07/29(火) 12:01:17utf-8で保存したつもりが、
ちゃんと保存できてなかったってこと?
0437デフォルトの名無しさん
2008/07/29(火) 12:04:10print "い $a\n";
↑これだと文字化けしちゃうんですよね。
い、の直後、$aの前に、全角スペースが
入っているんですけど、これの解決法が、
(1)JPerlを使う
(2)use encodingを使う
の2つですか?
0438デフォルトの名無しさん
2008/07/29(火) 12:06:40use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
$a="あ";
print "い $a\n";
↑この書き方にして、なおかつ
ファイルを保存するときに、utf-8で
保存したら、問題なく、こちらが
意図した通りに表示されました。
0439デフォルトの名無しさん
2008/07/29(火) 12:40:09$a="あ";
$sp="\x81\x40";
print "い$sp$a\n";
0440デフォルトの名無しさん
2008/07/29(火) 13:07:20$a="あ";
$sp=" ";
print "い$sp$a\n";
0441デフォルトの名無しさん
2008/07/29(火) 13:53:01WEBに出力する文字コードと、
この2つは、必ず、同じもので、
一致させてないとだめなの?
たとえば、ソースはEUCで書いて、
それをCGIでWEB出力するときの
コードも、EUCでそろえるみたいな。
それとも、その2つは、ばらばらでもいいの?
たとえば、ソースはutf-8で書いて、
WEBのブラウザへの出力はEUCとか。
0442デフォルトの名無しさん
2008/07/29(火) 14:02:090443デフォルトの名無しさん
2008/07/29(火) 14:07:55「EUCで出せ!」
って命令したとしても、その原文はutf-8で
かかれているわけだからさ、おかしくならない?
つまり漏れのいいたいのは、utf-8で書いた文が
EUCで出力されてしまうのではないか?ってこと。
0444デフォルトの名無しさん
2008/07/29(火) 14:50:530445デフォルトの名無しさん
2008/07/29(火) 15:35:57正規表現でどうやるの?
ここらへんがまだわかんなくて
0446デフォルトの名無しさん
2008/07/29(火) 16:01:24かな?
0447デフォルトの名無しさん
2008/07/29(火) 16:59:160448デフォルトの名無しさん
2008/07/29(火) 17:37:33ピリオドを一回以上マッチだと勘違いしてた。
行頭から行末まで、空白記号一回以上マッチということで、
$hogehoge =~ /^\s+$/;
としてみた。
用意したテストパターンに対して
"ふぎゃ ほげ" --> 不一致
" " --> 一致
" a " --> 不一致
" \n hogehoge" --> 不一致
" \n " --> 一致
という結果になった。
0449デフォルトの名無しさん
2008/07/29(火) 18:01:56cpanでInfoで検索してもhogehoge::Infoみたいなのばっかでした
infoやmanは歴史があるから、絶対誰か作ってるとは思うのですが
0450デフォルトの名無しさん
2008/07/29(火) 18:11:52texinfoで探せば一発でそれっぽいの出たよ
Texinfo::Menus
試したことはない。
0451デフォルトの名無しさん
2008/07/29(火) 18:28:18歴史がある = PerlでParsingするのは時間がかかり過ぎてナンセンスだったので、
パターンマッチなどでインチキをしていた。
0452デフォルトの名無しさん
2008/07/29(火) 18:31:390453デフォルトの名無しさん
2008/07/29(火) 20:59:49print "おはようございます";
とかって書いて、それをHTMLに出力するときに、
文字コードをEUCで指定しても、問題ないのですか?
自動でEUCのコードに変換?されて出力されるのですか?
文字化けとかしないのですか?
0454デフォルトの名無しさん
2008/07/29(火) 21:02:28レス書いてる間にチェックできるだろ・・・そんくらい
0455デフォルトの名無しさん
2008/07/29(火) 21:05:18プログラムをEUCで書いたとする。その中に直にHTML部分を書いて、
それをプリントしてブラウザーに出力すればそのHTMLページはEUCの文字コードになる。
プログラムをEUCで書いて、その中に直にHTML部分を書いて、出力で
JISやほかの文字コードにしたいときは出力の前に文字コードを希望のものに変換し
ないといけない。プリント分の前にjcode.plなどでjisに変換すればHTMLページは
JISになる。
次にもしHTML部分を外部ひな形ファイルにして、プログラムで読みこみページ
合成してから出力する際は、もちろん、外部のHTMLファイルがどの文字コードで
保存されているかも重要。外部ファイルがJISで保存されていてプログラムはEUCで
ってなっときはもちろんプログラムで文字コード変換なり整合性をとってやらない
と出力時にちゃんぽんの文字コードのHTMLになってしまう。たとえば一部分は
EUCできちっと表示されるけどほかは文字化け、それをJISにするとEUC部分が文字化け
してほかがきれいに表示されるといったことがおきる。
また、文字コード変換で一部文字列で多重変換での文字化けという問題も発生するので
非常にやっかい。俺もこれでどつぼにはまったことが何度もあるw
0456デフォルトの名無しさん
2008/07/29(火) 21:08:06詳しくは455に書いたけど、もう一度かいておくと、
ソースがUTFでprint "おはようございます"; と書いた場合は、あくまでUTFで出力
されるのでブラウザーでは文字エンコーディングをUTFにしないと文字化けする。
ソースがUTFで出力がEUCにしたければ、
print "おはようございます"; と各前に
おはようございます の部分をEUCに変換しておかないといけない。その変換には
jcode.plが有名。
0457デフォルトの名無しさん
2008/07/29(火) 21:09:460458デフォルトの名無しさん
2008/07/29(火) 21:10:16>>446-
ありがとうございました。
実は…全角スペースの方が必要でして
全角だと上手くいかなかったのです
もう一度、ご指南お願いします
0459デフォルトの名無しさん
2008/07/29(火) 21:13:53\sの意味くらい調べてみようね^^
0460デフォルトの名無しさん
2008/07/29(火) 21:16:20どいつもこいつもアホばっかり。>>4読めよ
0461デフォルトの名無しさん
2008/07/29(火) 21:18:49俺もこの方法はよく使うけど(リファレンスを使ったりもするけど)、いつも疑問に
思っていたことがある。
メモリの問題。
行管理のテキストデータファイルとして、仮にそのデータファイルが何メガバイト
くらいまでハッシュに切り出しても大丈夫なのか?ってところ。
仮に1行が100個のデータがあるとしてそれが1万行なら100万個の変数の数に
なるよね。
テキストファイル管理のデータベースのSQLよりも遅くなる限界はどれくらいかって話
も気になっている。ここら辺、どういう風に計算すればいいだろうか。
0462デフォルトの名無しさん
2008/07/29(火) 21:19:49Shift_JISだけの条件なので
文字コードでやってみます
アホですんません
0463デフォルトの名無しさん
2008/07/29(火) 21:21:090464デフォルトの名無しさん
2008/07/29(火) 21:22:410465デフォルトの名無しさん
2008/07/29(火) 21:26:190466デフォルトの名無しさん
2008/07/29(火) 21:41:12すごいよくわかりました。
(1)ソースコードの文字コード
(2)HTMLに出力するときの文字コード
(3)外部ファイルとかから読み込むときの文字コード
おおまかに言って、この3種類の文字コードを
常に意識しないとだめだということですね。
ちゃんぽんにするとめちゃくちゃになるので、
なんらかの文字コードに統一しなくてはならないと。
そのためのツールとしてjcode.pl等があると。
0467デフォルトの名無しさん
2008/07/29(火) 21:44:02CGIゲームを改造しているわけですが、そのCGIは、
ソースコードはEUCでかかれていて、
HTMLに出力するときは、EUCが指定されています。
それで、日本の文字化け問題を回避するために、
use encodingで、ソースコードだけはutf-8で書くように
するのですが、オリジナルのCGIのソースでは、
HTMLの出力は全部、EUCでブラウザに出すように
指定がされています。その個所は40箇所以上です。
なので、ソースコードをutf-8で書くようにした場合、
EUCで出力するように指定されている現在のソースコードを、
全部utf-8で出力するように、40箇所全部書き換えるか、あるいは
jcode.pl等で、utfをEUCに変換してから出力するように
ソースを書き換えなければいけないということでしょうか?
0468デフォルトの名無しさん
2008/07/29(火) 21:44:33文字化け対策はどうやっているのでしょうか?
0469デフォルトの名無しさん
2008/07/29(火) 21:48:320470デフォルトの名無しさん
2008/07/29(火) 21:50:44そげなもん、CPUやメモリ搭載量、ハードディスクの転送速度などの諸条件で違ってくるだろ。
あと、Apacheのモジュールとしてメモリに常駐させるのか、CGIとしてリクエスト毎に毎回毎回
ロードするのかで極端に違う。
自分でテストコード書いてターゲットマシン上で走らせろ。それくらいできんでどうする?
1個のデータが仮に100バイトだとしても、100万個だと、たったの100メガバイトだろ。
あんたのCPUの空きメモリがどれくらいあるのか、それ見ればおおよそ見当はつかないか?
0471デフォルトの名無しさん
2008/07/29(火) 22:08:47質問者らしきレスをチョイスしてまで、後から来た人間が教えようとは思わない。
>>467のレスを読む限り、全部EUCで書けばいいじゃんとしか言えんが
0472デフォルトの名無しさん
2008/07/29(火) 22:17:46use utf8 しているのであれば、ほぼ常に出力前に変換しないと、たぶん思ったような表示になりません。
# 例外は us-ascii の範囲を超えない文字のみ扱う場合です。
面倒かもしれませんが、聞く前に一度くらいは試してみましょう。
答える人も、調べたり検証したりしている場合があります。
聞く人が何も試さないうちから正しい答えを欲しがるのは、あまりお行儀がよくありません。
そして >>469 と重なりますが、CGI の話ならば次からは webprog 板へどうぞ。
0473デフォルトの名無しさん
2008/07/29(火) 22:58:37use utf8;
use open ':encoding(shiftjis)';
use open ':std';
しておけば期待した動作になる気がします。アホがんがれ。
0474デフォルトの名無しさん
2008/07/29(火) 23:07:32職場で、少しでも聞こうものなら
ネチネチネチネチ嫌味と文句言われてさ
おまいらの方が大好きだ
0475デフォルトの名無しさん
2008/07/29(火) 23:09:20いや、そりゃサーバーの性能でも違うってのはわかるが、
メモリにデータを常駐させるっていう初心者より一歩深い技は
使うのでもなく、普通にテキストデータからいちいち読みこんで
処理する場合を考えたい。レンサバとかだと事実上スキッド?とか
つかえないとおもうし。
だから、そういう基本的な部分で考えるなら、単にデータ総容量が10Mバイト
くらいなら、ハッシュで100万個データを展開していてもサーバー的には
問題ないかなぁとか、単純に考えてもいいのかなぁって。
ハッシュでデータを全部変数に展開しておければ、相当に自由度が高い
処理ができるわけで。
0476デフォルトの名無しさん
2008/07/29(火) 23:11:3640箇所書き換えたほうが楽そうだな
だって、utf-8だったら、日本語のパターンマッチの
問題やら、2バイト文字の2バイト目がメタ文字とかぶってしまうとか、
そういう問題が発生しないんでしょ?
0477デフォルトの名無しさん
2008/07/29(火) 23:14:52jcodeとかいつの時代の遺産なんだよ。
0478デフォルトの名無しさん
2008/07/29(火) 23:16:45もう一つ重要なことがあって、できれば、文字変換は極力さけたいってこと。
ソースをEUC、データもEUC, HTMLパーツの外部ファイルもEUCとかに
統一しておけば、文字変換は不要だから。(制御部分での文字コードに起因する
バグはまた別だけど)
話は少しそれるが、改造をしているってことなら、いっそHTMLの出力部分を
モジュールにしたらどう?
おそらくUTF8にこだわるのは文字コードバグを考えたくないからなんだろうけど、
個人的にはまだUTFは無視しているのアドバイスはあまりできない。ぐぐれば
UTFでもよい情報のページはあったので(数ヶ月前の時点でさえ)、調べてみると
いいとおもうよ。
0479デフォルトの名無しさん
2008/07/29(火) 23:17:47な、何だと!?
use utf8;
binmode STDOUT => ":encoding(cp932)";
$aニートさん = "ようこそ";
print "$aニートさん\n";
---
ようこそ
ををを、知らなかった。こんなJavaみたいなことができるなんて……。
0480デフォルトの名無しさん
2008/07/29(火) 23:19:12ちがってくるよね。
>>477
まだまだjcode.plつかってますが何か?
0481デフォルトの名無しさん
2008/07/29(火) 23:21:49やっぱりUTF8だと、EUCやSJISでの作法と違ってくるなぁ。便利になってはいるんだろうけど。
個人的にあと数年しないとUTFに移行できないかも。
0482デフォルトの名無しさん
2008/07/29(火) 23:22:03何で素直に組み込みの機能(Encode.pmとかencoding指定とか)使わないの?
0483デフォルトの名無しさん
2008/07/29(火) 23:28:04いやさ、最新のアパッチ環境と最新のperlで使えるとは限らんだろ。
すくなくとも俺は、jcode.plで問題ないので、あえてなれた方をつかっている。
ちなみに、このサイトはなかなかためになることが書いてあるのでおすすめの一つ。
perlメモとならんでDLすておくといいやね。
Perl 5.8.x における日本語コード変換のメモ
http://hikoboshi.org/perl/doc/encode.html
0484デフォルトの名無しさん
2008/07/29(火) 23:28:520485デフォルトの名無しさん
2008/07/29(火) 23:34:12お前が使うのは勝手だが人に勧めるようなもんじゃないだろ。
0486デフォルトの名無しさん
2008/07/29(火) 23:38:49古いのなんのって話題は不毛な争いだと思うんだが・・・
日本の宇宙開発だって数年前までPC88に支えられてたんだしさw
0487デフォルトの名無しさん
2008/07/30(水) 00:13:39この話の流れで jcode.pl って言ってるヤツは、
EUC コードで書かれたCGIゲームを改造しようとしてる>>273なんだけども、
コイツが他人に jcode.pl を薦めてるんじゃなくて、
どこかの古〜い解説サイトか古〜い解説本を読んで
じぶんなりに jcode.pl を使う、という結論を出しちゃったみたいだね。
で、まわりのみんなが必死で utf8 にしろと言ってるが、聞く耳持たないみたい。
そもそも、EUC のままでいいじゃないか?せっかく動いてるんだから。
無理して utf8 に書き換える必要は無いよ。
どうしても EUC じゃ困る。シフトJISで動かしたい、って時だけ
use utf8 すればいいんだよ。
0488デフォルトの名無しさん
2008/07/30(水) 00:16:340489デフォルトの名無しさん
2008/07/30(水) 00:26:110490デフォルトの名無しさん
2008/07/30(水) 00:33:26意味不明、kwsk
0491デフォルトの名無しさん
2008/07/30(水) 01:07:43今読んでる本
平成10年8月25日 初版 第1刷発行
0492デフォルトの名無しさん
2008/07/30(水) 01:12:03このスレにも
「utfにしろよ派」と
「utfなんかに移行できないよ派」
と、2つの派閥があって、困ってるんですよ。
どっちかに統一しろやウンコっていう。
もっと3年くらい経験積んだら自分で
判断できるけど、まだ入門書読んでる段階ですから。
0493デフォルトの名無しさん
2008/07/30(水) 01:14:38>そもそも、EUC のままでいいじゃないか?せっかく動いてるんだから。
>無理して utf8 に書き換える必要は無いよ。
という話ですが、全角スペースのあとに
文字列おくと、勝手に@だと判断して
「そんな配列ねーよ」ってエラーを出してきて困ると
いうのと、正規表現でパターンマッチで、
マッチしないはずの文字にマッチしたりとか、
マッチするはずの文字にマッチしたりとか、
困った問題が起こるので、それを回避するための
措置として、例えばJPerlを使うとか、あるいは
utfにするとかを検討している段階なのです。
0494デフォルトの名無しさん
2008/07/30(水) 01:18:13例えばこれ↑ですが、aの前に全角スペースが入ってます。
EUCでこれを保存して実行すると、文字化けになります。
これを回避するのに、いまのところ、JPerlを使うか、あるいは
utf-8にするか、しか、回避方法がないのです。
0495デフォルトの名無しさん
2008/07/30(水) 01:23:36それ、まだやってるの?もうとっくに解決したんじゃなかったのか?
0496デフォルトの名無しさん
2008/07/30(水) 01:31:00俺は読んでないけど。
0497デフォルトの名無しさん
2008/07/30(水) 01:36:160498デフォルトの名無しさん
2008/07/30(水) 01:41:34これだけたくさん、大勢の人がキミのためにレスつけてくれてるのに
読んでないだろ?
いいか、話をまとめるとだな、
全角の空白は
2020 (JISコード)
A1A1 (EUCコード)
8140 (Shift-JIS コード) ←問題あり
このうち、Shift-JIS の後半の 40 が ASCIIコードの @ とかぶる。
print " a\n"; は、
print "\x81@a\n"; と書くのと同じ。
@a が配列と解釈されてしまう。それでエラーが出てるんだ。
(perl のコードの最初に use warnings; 付けてるか?)
で、これを解決するには
・perl のコードを Shift-JIS で書かない。これ常識。EUC 使え。
・utf8 で書いて >>4 を参考に改造しろ。
これのどっちかだ。
0499デフォルトの名無しさん
2008/07/30(水) 01:51:41しかしEUCで実行すると
。。a
になってしまうんですよ。
これって文字化けですよね。
0500デフォルトの名無しさん
2008/07/30(水) 01:52:41全くperl関係ないだろうが。
0501デフォルトの名無しさん
2008/07/30(水) 01:53:27最早、歴史的事情以外にUTF-8に移行しない理由なんか無い。
>>493
JPerlなんか使うな。
>>494
それは「EUCだから文字化けしてる」のではなくて、単に端末の文字コードと合ってないだけだ。
端末とプロセスの文字コードが一致してきゃ化けて当たり前。
とにかく、全部UTF-8で書け。入出力は必要に応じてIOフィルタ等で変換しろ。それ以外の余計なことはするな。
0502デフォルトの名無しさん
2008/07/30(水) 01:53:38自己レス
出力をDOSプロンプトでなくて
ブラウザにして、
ブラウザの文字コードをEUCにしたら
文字化けしないでちゃんと表示されました。
0503デフォルトの名無しさん
2008/07/30(水) 01:55:51EUCの人、" a"は変数展開してるから、変数展開しない形に書き直しなさい。
ローカルコード含んだ文字列を変数展開部で使用するのは、重大なマナー違反だ。
改造以前にバグフィックスの問題だ。
0504デフォルトの名無しさん
2008/07/30(水) 01:56:09全部強制的にシフトJISになってるの?
だとすると、EUCでコード書いて、それをDOSプロンプトに
出力すると文字化けになるの?
だとしたら、EUCで書くときは、出力先を
ブラウザにして、ブラウザの文字コードをEUCにするけど。
0505デフォルトの名無しさん
2008/07/30(水) 01:56:43これまでの説明読んでるのか?
0506デフォルトの名無しさん
2008/07/30(水) 01:59:520507デフォルトの名無しさん
2008/07/30(水) 02:04:270508デフォルトの名無しさん
2008/07/30(水) 02:09:10コード・データ・説明が揃ってるのにもかかわらず
さらに質問してくる意味が判らん
0509デフォルトの名無しさん
2008/07/30(水) 02:23:51$w = 'おはようございます';
$w =~ tr/あ-お/か-こ/;
print $w,"\n";
↑これをやったら、
Invalid range "?αソソセォ-?αソソセ、" in transliteration operator at f.pl line 2.
といわれました。
自分の予想では、おがこに、いがきに、変換される
はずだったのですが。
コードはEUCで書きました。
0510デフォルトの名無しさん
2008/07/30(水) 02:25:56言いたいことは山ほどあるが
せめてコテハンをつけてくれ
話の流れすらわからん
0511デフォルトの名無しさん
2008/07/30(水) 02:26:20目の見えない人に、象の説明をするのと同じです。
0512デフォルトの名無しさん
2008/07/30(水) 02:26:52ではコテハン募集です
0513デフォルトの名無しさん
2008/07/30(水) 02:44:10「クリックうんこ」
0514デフォルトの名無しさん
2008/07/30(水) 06:26:54ソソセォ-
0515デフォルトの名無しさん
2008/07/30(水) 11:20:00my $a;
$a=<stdin>;
print $a;
↑これを、出力先をブラウザにしたら、
$a=<stdin>;
この行の処理の、キーボードからの入力を受け付ける、
この部分が実行できません。
出力先をDOSプロンプトにしたら、できますが、
文字コードがシフトJISになります。
それだと文字化けするので、文字コードをEUCにしたいわけですが、
EUCにするためにはブラウザに出力する必要があります。
どうしたらいいですか?
文字化けを防ぐ
なおかつ
キーボードからの入力も受け付ける
0516デフォルトの名無しさん
2008/07/30(水) 12:24:39閲覧だけなら
system("C:/Program Files/Internet Explorer/iexplore.exe", http://pc11.2ch.net/test/read.cgi/win/1152544955/);
で見られますが、保存するにはどうすれば良いでしょうか?
※初めにフリーソフトの巡集を使ったのですが、過去ログ倉庫に入っているスレは保存できなかったので、
Perlでどうにかならないか、と思いました。
http://www.vector.co.jp/soft/win95/net/se314781.html
0517デフォルトの名無しさん
2008/07/30(水) 12:32:13みたいな対応表をハッシュとかで格納したいのですが、どういうやりかたありますか?
1番 ○○ 2,3.4
2番 ▲▲ 3,4
3番 □□ 4
4番 田中 (無し。全員に負ける)
みたいなのです
0518デフォルトの名無しさん
2008/07/30(水) 13:28:56encode
つか >>4 を読め。ちゃんと書いてあるだろ?
0519デフォルトの名無しさん
2008/07/30(水) 13:48:10Perl云々以前に仕様くらい目を通せ
http://info.2ch.net/wiki/index.php?monazilla%2Fdevelop
0520デフォルトの名無しさん
2008/07/30(水) 13:49:22%表 = {
1番 => { 2番 => true, 3番=> true, 4番=>true },
2番 => { 1番 => false, 3番=> true, 4番=>true },
3番 => { 2番 => false, 1番=> false, 4番=>true },
4番 => { 2番 => false, 3番=> false, 1番=>false },
};
man perldsc に記載されている "HASHES OF HASHES"を参考にしてみてはいかが?
0521デフォルトの名無しさん
2008/07/30(水) 14:51:57ありがとうございます。見てみます
番号と名前も対応させたいのですが、何も重い浮かばず
0522デフォルトの名無しさん
2008/07/30(水) 15:16:37> 番号と名前も対応させたいのですが、何も重い浮かばず
っ[ハッシュ]
0523デフォルトの名無しさん
2008/07/30(水) 15:26:26名前から番号を引きたいのか、%名簿 = { 名前1=> "番号1", 名前2 => "番号2",,, };
はたまた、{ name=>"名前", id=>"番号" } みたいな感じにするのか。
やりたいことに合わせていろいろ試してみろよ
0524デフォルトの名無しさん
2008/07/30(水) 18:06:22ハッシュは知らず知らずつかっていたんだけど、リファレンスは。
理解できるようになったのは、メモリのアドレス(のようなもの)で
Cでいうとポインタに相当する
という説明を読んだときだった。
0525デフォルトの名無しさん
2008/07/30(水) 19:50:52これ、誰かわかる?
0526デフォルトの名無しさん
2008/07/30(水) 19:51:35Javaはポインター無いよ。
だから、たぶんPerlも、ポインター無しでも
コード組めるはずだよ
0527デフォルトの名無しさん
2008/07/30(水) 19:52:13>>4よめよ糞が。
0528デフォルトの名無しさん
2008/07/30(水) 19:52:58?
0529デフォルトの名無しさん
2008/07/30(水) 20:04:38?
0530デフォルトの名無しさん
2008/07/30(水) 22:43:190531デフォルトの名無しさん
2008/07/30(水) 22:47:140532デフォルトの名無しさん
2008/07/30(水) 22:53:54断る!
0533デフォルトの名無しさん
2008/07/30(水) 23:00:34数ページから数十ページさくところをさくっと3行におさまっている。
0534デフォルトの名無しさん
2008/07/31(木) 00:04:14_ ∩ 知ってるが!
( ゚∀゚)彡 おまえの態度が!
⊂彡 気に入らない!
0535デフォルトの名無しさん
2008/07/31(木) 00:39:46insert into Person (Id,Name) values ('1', '○○');
insert into Person (Id,Name) values ('2', '▲▲');
insert into Person (Id,Name) values ('3', '□□');
insert into Person (Id,Name) values ('4', '田中');
番号から引きたい時、
select Name from Person where Id='2';
名前から引きたい時、
select Id from Person where Name='田中';
0536デフォルトの名無しさん
2008/07/31(木) 01:10:09やり方書いてあるだけじゃないか。
その意味書いたら数ページ分くらい必要だろ。
0537デフォルトの名無しさん
2008/07/31(木) 01:51:33まぁ、たしかに。だけど、すごくいい例が3行まとまっているよね。
4と5行目にリファレンスをつかったデータの例をのせるといいよね。
で、その合計5行の解説に5ページくらいあればいいんじゃないか。
ごちゃごちゃ書いていても頭がオーバーフローするだけだしなぁ。
0538デフォルトの名無しさん
2008/07/31(木) 04:18:09レファレンスなんて使わないでも
まともなプログラムを組めるはずという意味
0539デフォルトの名無しさん
2008/07/31(木) 04:22:30すごい。
言われたとおりにやったら、できたよ。
0540デフォルトの名無しさん
2008/07/31(木) 04:23:06すごい。
言われたとおりにやったら、できたよ。
0541デフォルトの名無しさん
2008/07/31(木) 04:24:33先に3ヶ月くらい、DOSプロンプトでの
やり方だけ学んだ方がいいのかな?
CGIは難しいらしくて、ここの住民でも
答えられないことが多いみたいだし。
0542デフォルトの名無しさん
2008/07/31(木) 04:38:13を入手した。
今から読むからな。
0543デフォルトの名無しさん
2008/07/31(木) 04:45:120544デフォルトの名無しさん
2008/07/31(木) 06:54:19あーでも、
これと同じことを、もしEUCでやろうとしたら、
実現は不可能ってことなの?
0545デフォルトの名無しさん
2008/07/31(木) 06:54:58redoって普通使うの?
0546デフォルトの名無しさん
2008/07/31(木) 07:04:35↑これで音がでないんだが、なにか間違ってる?
0547デフォルトの名無しさん
2008/07/31(木) 07:45:12「CGIの質問はWebProgに行け」ってんでスルーしてるだけだろ…
スキルのある住人は、最近のこのスレのぐだぐだっぷりを見て
ROMに徹してるだろうしな。
0548デフォルトの名無しさん
2008/07/31(木) 07:52:25print "\x07";
0549デフォルトの名無しさん
2008/07/31(木) 08:04:17言われたとおりにやったら、できたよ。
0550デフォルトの名無しさん
2008/07/31(木) 08:28:04だめだ
うちの環境では鳴らない。
なんで?
0551デフォルトの名無しさん
2008/07/31(木) 08:45:19むしろ、「Cのポインタのようなもの」という説明のせいで、全く理解できなかった。
Cにおけるポインタは、初心者の躓きやすい壁とは言われてるけど
自分はそんなことなかったから大丈夫だと思ってたんだが。
0552550
2008/07/31(木) 09:10:210553デフォルトの名無しさん
2008/07/31(木) 09:55:070554デフォルトの名無しさん
2008/07/31(木) 09:56:03use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
my $a=1;
until ($a>10){
print "藁\n";
$a=$a+1;
}
↑オレ様のプログラムの第二段が完成!
今回はループを使ってみました。
0555デフォルトの名無しさん
2008/07/31(木) 09:59:12DOSプロンプトへの出力だとだめなの?
0556デフォルトの名無しさん
2008/07/31(木) 10:08:40(1)
ActivePerlをダウンロードする。
バージョンは5.8.
(5.1が最適とかいう意見があっても
トラップなので聞いてはいけない)
(2)
エディタは「Perlをはじめよう」を使う
(3)
文字コードはutf-8で
(4)
ソースコードの頭に>>4をコピペする
(5)
入出力はDOSプロンプトを使う
(6)
ソースコードはutf-8で保存する
(7)
CGIの勉強はあとまわしにする
(8)
EUC派とUTF派が派閥争いをしている
0557デフォルトの名無しさん
2008/07/31(木) 11:14:24$a{$ika}->{hoge} = $hoge;
$a{$ika}->{hogehoge} = qq(@hogehoge);
みたいな使い方が出来てるんだけど
大丈夫かな…
0558デフォルトの名無しさん
2008/07/31(木) 12:17:41何もないところをあたかもリファレンスがあるかのようにデリファレンスすると、
そこにリファレンスができて、さらに指している実体までできる。
0559デフォルトの名無しさん
2008/07/31(木) 12:30:35つまり
$a{$ika}->{hoge} は宣言もされていないから、存在もしてないけど
無理やり値いれてしまったから、値が入ってるってことですよね
%a( ika => {hoge => $hoge} )
みたいな状況ですか?
頭が整理されていないまま組んでるので
どういう状況になってしまっているのか教えて下しあ
0560デフォルトの名無しさん
2008/07/31(木) 12:46:06550で解決したんじゃなかったのか?
DOSプロンプトへの出力でも、ウチではちゃんとビープ音が鳴るぜ。(\a,\x07ともに)
もともとの音量が小さすぎるのか、あるいはサウンドカード(ドライバ)の設定とかで、
ビープ音だけ出ないようになってるとか。
ウチでは逆で、サウンドドライバの設定でwaveとかの音をどんなに無効に設定しても、
ビープ音だけは切ることが出来なかったマシン(マザーボード?)があった。
これ以上はスレ違いになっちまうけど、PCのマニュアルとかドライバソフトの設定とかHelpをみてみたら?
0561デフォルトの名無しさん
2008/07/31(木) 13:00:45> つまり
> $a{$ika}->{hoge} は宣言もされていないから、存在もしてないけど
> 無理やり値いれてしまったから、値が入ってるってことですよね
ちがう。アクセスされたので自動で存在しはじめたってことだ。
「宣言とか何それ。食べられるの?」とPerlちゃんは言っている。
0562デフォルトの名無しさん
2008/07/31(木) 15:15:250563デフォルトの名無しさん
2008/07/31(木) 15:35:560564デフォルトの名無しさん
2008/07/31(木) 16:27:460565デフォルトの名無しさん
2008/07/31(木) 16:31:37$a{$ika} = {
hoge => $hoge,
hogehoge => qq(@hogehoge),
};
とか。
%a = (
$ika => {
hoge => $hoge,
hogehoge => qq(@hogehoge),
},
);
とか書きます。
$a{$ika}をいきなりハッシュとして扱いたい場合、
まず最初に
$a{$ika} = {};
と記述して生成しておくと(これは宣言ではありません)次から
$a{$ika}->{hoge} = $hoge;
$a{$ika}->{hogehoge} = qq(@hogehoge);
こうゆうふうに書いたり、
%{ $a{$ika} } = (
hoge => $hoge,
hogehoge => qq(@hogehoge),
);
こゆうふうに書いたりできます。
>アクセスされたので自動で存在しはじめたってことだ
違いますよ。「アクセスできなかった」からしょうがなく警告つきでく生成されただけです。
0566デフォルトの名無しさん
2008/07/31(木) 16:54:32警告というのが具体的に何をさすのかわからないのだけれど、
Use of uninitialized value $ika in hash element
なら、未定義値をハッシュの添字にしてることについての警告
なので、$a{$ika} = {} でも$ikaが未定義ならやっぱり出ますよ。
% perl -w -e '$a{$ika} = {}'
Name "main::a" used only once: possible typo at -e line 1.
Name "main::ika" used only once: possible typo at -e line 1.
Use of uninitialized value $ika in hash element at -e line 1.
それに>>557のコード断片は$ikaや$hogeや@hogehogeには適当な
値が入ってると思うべきだろ。値が入っていれば警告は出ません。
% perl -w -e '$ika = 10; $a{$ika}->{hoge} = 1'
Name "main::a" used only once: possible typo at -e line 1.
存在しないところへの代入の警告ってあったっけ??
0567デフォルトの名無しさん
2008/07/31(木) 17:14:03>>557
余裕。変数群がきちんと定義されていれば普通に使う。
同じ事をスライスで書いたりもする。気にすんな。
@{$a{$ika}}{qw(hoge hogehoge)} = ( $hoge, qq(@hogehoge) ) ;
ただ、視認性に優れた書き方と言うのもあって、その点では
一考の余地はあると考えた方が良い。
>>566
>存在しないところへの代入の警告ってあったっけ??
「存在しない変数とかへの代入」って意味であれば use strict 。
「undefをkeyにしたhashへの値の代入」って意味であれば、私は知らない。
と言うか、これは警告出す意味が無い。
erl -MData::Dumper -Mstrict -Mwarnings -e 'my %a = ( undef => undef ) ; $a{undef} = q{foo} ;print Dumper \%a'
0568デフォルトの名無しさん
2008/07/31(木) 17:18:30(コピペ忘れ。567のワンライナは丁寧に書いただけ)
0569565
2008/07/31(木) 17:20:10use strict;
my %a;
my $ika = "aaa";
my $hoge = "aaa";
my @hogehoge = ( "aaa", "bbb");
$a{$ika}->{hoge} = $hoge;
$a{$ika}->{hogehoge} = qq(@hogehoge);
何の警告も出なかった。
正直すまんかった
0570567
2008/07/31(木) 17:23:16erl -MData::Dumper -Mstrict -Mwarnings -e 'my %a ;my $b ; $a{$b} = q{foo} ;print Dumper \%a'
きちんと警告が出る。
推敲する様に>俺
0571デフォルトの名無しさん
2008/07/31(木) 17:38:110572デフォルトの名無しさん
2008/07/31(木) 17:44:250573デフォルトの名無しさん
2008/07/31(木) 17:54:020574デフォルトの名無しさん
2008/07/31(木) 21:27:27550はニセモノ
0575デフォルトの名無しさん
2008/07/31(木) 21:28:40まとめその2
(9)
jcode.pl派と、jcode.pm派と、Encode派が
それぞれ派閥争いをしている。
0576デフォルトの名無しさん
2008/07/31(木) 21:32:16それで、case使いたいときは、わざわざ
CPANからモジュールをダウンロードしてきて、
解凍して展開してインストールして、さらに
CPAN::CASE
とかって奇妙な呪文唱えないと使えないんだよね。
この理解であってる?
0577デフォルトの名無しさん
2008/07/31(木) 21:33:43動かん、うまくいかん、って言ってるヤツが少しは減ると思う。
0578デフォルトの名無しさん
2008/07/31(木) 21:37:49requierとuseってどう違うの?
(2)
(1)の質問って、この前もしたっけ?
(3)
requireは、Cのincludeと同じ?
自分で作った別ファイルのソースが
ソースの頭の部分に挿入されるの?
0579デフォルトの名無しさん
2008/07/31(木) 21:38:28予定では、ワロス草のプログラムを書くつもりです。
0580デフォルトの名無しさん
2008/07/31(木) 21:46:490581デフォルトの名無しさん
2008/07/31(木) 21:48:07Perl5.10なら使えるよ。
あと、use Switch するとか。
0582デフォルトの名無しさん
2008/07/31(木) 22:25:49Unicode::Japanese 派も入れといて。
ActivePerlだと、これがベストな気がする。
0583デフォルトの名無しさん
2008/07/31(木) 23:17:38CGIは無視して、コンソールレベルの
プログラムだけ勉強するつもりです
0584デフォルトの名無しさん
2008/07/31(木) 23:18:105.1なら使えるけど、
5.8なら無理って意味?
5.1以上なら、使えるって意味?
0585デフォルトの名無しさん
2008/07/31(木) 23:25:045.8ならuse Switchで
5.10なら言語仕様でサポート
5.8より下は使えない
0586デフォルトの名無しさん
2008/07/31(木) 23:25:58http://perldoc.jp/docs/perl/5.6.1/perlfaq8.pod
の
What's the difference between require and use?
の項を読んで下さい。
あまりに典型的な FAQ なので「>>2 嫁」で済ませてしかるべきなんだけど、なんだかかわいそうな子なので少しやさしくしてあげる。
0587デフォルトの名無しさん
2008/07/31(木) 23:27:36フォトショップでサイト構築しているんだけど、コンソールとかはほとんど
つかわね〜。ぬるいユーザーっす。
だけどマックソフト開発のXCODEがperlもつかえるので、資産は無駄に
ならないとおもってます。
0588デフォルトの名無しさん
2008/07/31(木) 23:33:25OSXは”堅牢な”UNIXファミリーの一派だよ
ターミナルを使えると、世界が広がりんぐ
0589デフォルトの名無しさん
2008/08/01(金) 00:00:47ターミナル(コンソール)は、FTPソフトをつかわずにCGIファイルのパーミッションを
変更することくらいにしか普段つかわないんだけど、なんかきっかけになるような
使い方ってないもんですかね。やっぱりmanとか打ち込んで説明をあさることから
始めるべきか。
あとは自鯖のSSLを設定するときにコンソールでいろいろと呪文(にしかみえねぇ〜)
を唱えたくらいかなぁ。
0590デフォルトの名無しさん
2008/08/01(金) 00:00:490591デフォルトの名無しさん
2008/08/01(金) 00:01:345.1≠5.10
Perlの最新は5.10で、2つ目の数字は「十」だ。
0592デフォルトの名無しさん
2008/08/01(金) 00:05:36perlは元々awkやシェルスクリプトのように手軽に使える
コンピュータを自動化させるために開発されたもんだから、AppleScriptのような使い勝手でいいんじゃない?
ファイル名の連番リネームとか、エロ画像の自動回収とか、
いちいち専用ソフトを入れなくても、基本コマンド+Perlでかなり遊べる。
>>590
いや、流行モノ好きのジョブズがアップルに持ち込んだんじゃね。
nextstep辺りの話を読もう。
0593デフォルトの名無しさん
2008/08/01(金) 00:07:45大量のファイルに対してちょっとひねった一括処理をやるとき便利。
find と xargs を覚えると世界が変わる。
0594デフォルトの名無しさん
2008/08/01(金) 01:08:21Perlスクリプトを、CGIじゃなくて、直接実行することはないの?
0595デフォルトの名無しさん
2008/08/01(金) 02:11:39そういう使い方ができるんだ。アップルスクリプトでバッチ処理みたいな
ことできるといいなぁって思うことは多いけど、ファイル名の処理とかで
壁にぶつかってあきらめるちゃうんだよね。
エロ画像の自動収集じゃなくエロトレントファイルの地引網ができればって
思うけど。俺にはハードルたかそう。
>>593
チェックしてみるね。そこを第一歩にできるといいかな。
ってチェックしたけど xargsは応用的段階だね(爆)
>>594
perlでつくるのはwebページ生成システムなんで、コンソールを
使うときはそうだエラーコードをみるときにも使うね。わすれてた。
でも、自分の作っているのは必ず出力がHTMLなのでHTMLコード自体
をみても意味がないから、結局、サファリのブラウザでチェックしている。
でみてくれ調整の時だけwindowでもチェック。
0596デフォルトの名無しさん
2008/08/01(金) 07:12:41何言ってるの?
最新版は5.8でしょ?
0597デフォルトの名無しさん
2008/08/01(金) 07:13:12JPerlって、現状、メンテナンスしてる人がいないの?
0598デフォルトの名無しさん
2008/08/01(金) 10:07:280599デフォルトの名無しさん
2008/08/01(金) 10:18:25>>594
直接というのが何を指すのか分かりませんが、
ここがネットワークプログラミングのスレじゃないのは明白です。
>>596
5.10.0.1003
5.8に見えましたか。そうでしたか。
>>597
よっぽど変な人が現れない限りは。
0600デフォルトの名無しさん
2008/08/01(金) 10:27:33> 直接というのが何を指すのか分かりませんが、
> ここがネットワークプログラミングのスレじゃないのは明白です。
書かなかったことにしといてください。
俺の頭が夏休みでした
0601デフォルトの名無しさん
2008/08/01(金) 17:46:02下記のような16進数表記にした「文字列」に置換したい場合、
どのようにしたらいいでしょうか?
【文字列A】
this is test of "Hello,World!"
↓変換
【文字列A'】
this is test of 0x48,0x65,0x6C,0x6C,0x6F,0x2C,0x77,0x6F,0x72,0x6C,0x64,0x21
ご多忙の中、誠に失礼いたしますが、ご教授お願いします。
0602デフォルトの名無しさん
2008/08/01(金) 18:01:28my ($str) = @_;
$str =~ s/"([^"]*)"/join(",",map{sprintf"0x%X",$_}unpack"C*",$1)/eg;
$str;
}
print transform 'this is test of "Hello, World!"'
0603デフォルトの名無しさん
2008/08/01(金) 18:05:50迅速かつ的確なご回答をありがとうございます。
参考になりました。
0604デフォルトの名無しさん
2008/08/01(金) 19:36:40sprintf"0x%X",$_じゃなくてsprintf"0x%02X",$_の方が親切じゃね
0605デフォルトの名無しさん
2008/08/01(金) 23:11:47サブルーチンの呼び出しって、&つけなくていいの?
それとも、これがウワサに聞いた、あの
「無名サブルーチン」ってやつなのかな。
0606デフォルトの名無しさん
2008/08/01(金) 23:12:190607デフォルトの名無しさん
2008/08/01(金) 23:21:120608デフォルトの名無しさん
2008/08/01(金) 23:43:07こういうのすぽぽぽ〜んって、で余裕で頭ん中からでてくるの?
それともやっぱり初心者の頃は思いもつかなかったけど、経験を積んだ結果
すぽぽぽ〜んってなるの?
0609デフォルトの名無しさん
2008/08/01(金) 23:56:03とりあえず、すぽぽぽぽーんって出てきたものをマニュアルで確認しながら組み合わせてやるの。
必ずしもperlの全てを覚えておく必要なんてないよ。
0610デフォルトの名無しさん
2008/08/02(土) 00:01:43use strict;
my $a=1;
&aaa;
sub aaa {
if ($a<10){
print $a;
$a=$a+1;
&aaa;
}
}
オレ様のプログラムの第三段が完成!
今回は再帰を使ってみました。
再帰のアルゴリズム考えるの楽しいね!
0611デフォルトの名無しさん
2008/08/02(土) 00:08:21use strict;
$|=1;
my $a=1;
&aaa;
sub aaa {
if ($a<10){
print $a;
$a=$a+1;
sleep (1);
&aaa;
}
}
print "\n";
↑今度は、数字がゆっくり出るようにしてみたよ!
でも使用中はCPU使用率が100%になるのが困る
どうにかならないかな?
0612デフォルトの名無しさん
2008/08/02(土) 00:45:20だから5.10だってば。(釣りなのかな……)
http://www.perl.org/
> Current Release: 5.10.0
http://www.cpan.org/src/README.html
> The first releases in each branch
> Released
> 5.10 December 2007
> 5.8 July 2002
> 5.6 March 2000
> 5.5 July 1998
> 5.4 May 1997
0613デフォルトの名無しさん
2008/08/02(土) 00:45:22↓メインスクリプト(main.pl)
------------------------------
#!perl
use strict;
require("x.ini");
print "X = $x\n";
------------------------------
↓設定ファイル(x.ini)
----------------------
our $x = "XXX";
(・・・その他グローバル変数いっぱい)
----------------------
上のソースは調べてる最中に見つけたソースを一部お借りしていますが、
要は大量のグローバル変数を別ファイルで定義して
それを読み込んで使う・・という事をやりたがっています。
が、上記は以下の様なエラーが出てしまい、途方にくれています。
Global symbol "$x" requires explicit package name at main.pl line 4.
BEGIN等も試してみたのですが、インポートエラーの様な物が発生してどうにも上手く行きません。。
「use strictを使用しながら大量のグローバル変数を別ファイルに定義し、参照させる」という事を綺麗に行う方法はありますでしょうか?
0614デフォルトの名無しさん
2008/08/02(土) 01:23:22変態!!
0615デフォルトの名無しさん
2008/08/02(土) 02:14:02ラッパサブルーチンでも控えた方が作法として良いですか?
sub wrapper {
my ($foo, $bar, $baz) = @_;
# any process...
&wrapped; # wrapped($foo, $bar, $baz)と等価
}
0616デフォルトの名無しさん
2008/08/02(土) 02:22:45意味がわからん。
5.1と、5.8では、
5.8のほうが数字がでかいのだが。
数学板の連中にきいたほうがいいのかな?
0617デフォルトの名無しさん
2008/08/02(土) 02:23:590618デフォルトの名無しさん
2008/08/02(土) 02:32:005.1じゃなくて、5.10なのな。
じゃあ、自分が使ってるActivePerlのバージョンは、いくつ?
0619デフォルトの名無しさん
2008/08/02(土) 02:35:00てことは、古いバージョンだよね?
これって最新版にできるのかな?
0620デフォルトの名無しさん
2008/08/02(土) 02:37:36これって、いったん5.8をアンインストールしてから
5.10を入れなおす、というふうにしないとまずいの?
0621デフォルトの名無しさん
2008/08/02(土) 03:28:315.10をサポートしたPerlの入門本は、何冊出てるの?
0622デフォルトの名無しさん
2008/08/02(土) 03:48:25どういうことだ?
http://www.amazon.com/Beginning-Perl-Novice-Professional/dp/1590598334/
0623デフォルトの名無しさん
2008/08/02(土) 04:06:11シンボルテーブル上の完全修飾名を与えてやれば呼び出せる。
例: $main::x
0624623
2008/08/02(土) 04:10:16ユーザ定義のグローバル変数は、その利便性にもかかわらず、コードの可読性を奪い、またデバッグを困難にします。
できるだけ避けましょう、というのが現在の同意事項です。
0625デフォルトの名無しさん
2008/08/02(土) 04:10:26open (AAA, '>pyscxtaf.txt') or die "$!";
↑このコードを実行すると、pyscxtaf.txtという名前のファイルを
作成できる!
0626デフォルトの名無しさん
2008/08/02(土) 04:15:28作法としてどうかなんて知ったこっちゃありませんが、
目的のために必要なら使えばいいでしょう。
作法を守って達成を諦めるぶんには好きにやってください。
0627デフォルトの名無しさん
2008/08/02(土) 04:16:27どこかよそのチラシの裏じゃダメなの……?(泣
0628デフォルトの名無しさん
2008/08/02(土) 04:36:180629デフォルトの名無しさん
2008/08/02(土) 04:40:04有給使えばいいじゃん
0630デフォルトの名無しさん
2008/08/02(土) 04:47:46スペースキーを押したら次の画面が出るように
したいんだけど、
<stdin>;
print "a\n";
↑これだと、スペースを押して、エンターで確定しないと
ならないんだよね。
スペースだけで、できないかな?
0631デフォルトの名無しさん
2008/08/02(土) 05:02:25redoとかlastとかnextとか、
ループの制御構造を、強制的に
なんかする関数って、
スパゲッティになりやすいから、絶対に
使うな、って昔BASICの教科書で読んだんだけど、
それであってる?
0632デフォルトの名無しさん
2008/08/02(土) 05:07:05チンポを突き出すとしゃぶってくれるおまえのような奴がいるうちは
いなくならんよ。
0633デフォルトの名無しさん
2008/08/02(土) 05:26:08use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
$|=1;
my $a=1;
my $b;
until ($a>10){
$b=int(rand(10)) +1;
print "藁" x $b;
print "\n";
sleep (1);
$a=$a+1;
}
↑ランダムな感じで藁を出力するプログラムできたよー
0634デフォルトの名無しさん
2008/08/02(土) 05:50:10わざわざCPANからダウンロードしてこなくてもいいように
なってるって聞いたのですが、そうなんですか?
0635デフォルトの名無しさん
2008/08/02(土) 06:08:28「が」を表現するのに、
「か」+「”」で、3バイト+3バイトで、
最大、1文字6バイト、って書いてあって、
これってまじですか?
0636デフォルトの名無しさん
2008/08/02(土) 06:33:21use warnings;
use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
$|=1;
#----------------------------------
my $a;
$a=int(rand(10)) +1;
my $b;
print "\n";
print "脳を鍛える大人の数当てゲームです。\n";
print "1から10までの数字をランダムで生成しますので、\n";
print "キーボードから、自分の予想した数字をあてずっぽうで\n";
print "入力してエンターを押してください。";
print "それでは、スタート!\n\n";
while(1){
$b=<stdin>;
chomp $b;
if ($a==$b){
print "正解です\!\n";
last;
}
else {
print "ちがいますよ\n";
}
}
0637デフォルトの名無しさん
2008/08/02(土) 08:58:02forとforeachが同じもの、って書いてあるんだけど、
そうなの?
0638デフォルトの名無しさん
2008/08/02(土) 09:10:500639デフォルトの名無しさん
2008/08/02(土) 09:19:33バージョン表記の”.”は小数点じゃなく区切りだよ。 5-10みたいなもん
0640デフォルトの名無しさん
2008/08/02(土) 11:46:330641デフォルトの名無しさん
2008/08/02(土) 12:13:590642デフォルトの名無しさん
2008/08/02(土) 13:08:27use Switchすれば使える
0643デフォルトの名無しさん
2008/08/02(土) 13:23:27hoge{ero}[sukebe}
このリファレンスを関数に渡そうとして、使おうとしたら
hoge{ero}->{sukebe} = tinko
なんかstrict ref だかなんだか出てきてエラーとか言ってくる
助けてくれ
0644デフォルトの名無しさん
2008/08/02(土) 13:52:51ttp://homepage1.nifty.com/nomenclator/unicode/normalization.htm
0645デフォルトの名無しさん
2008/08/02(土) 13:59:59おまいは>>519の説明を何だと……。orz
あと、自分の使ってるPerlのバージョンを調べたかったら、コマンドラインで、
perl -v
と叩け。
0647デフォルトの名無しさん
2008/08/02(土) 15:32:38心の底から FAQ です。
http://perldoc.jp/docs/perl/5.10.0/perlfaq8.pod
How do I read just one key without waiting for a return key?
>>631
あってるので使わないでください。
>>634
入れてみりゃ分かります。
>>635
限りなくスレ違いなのでそれっぽいスレで聞いてください。
でも仕様を調べれば分かることですから、できればそうしてください。
>>637
書いてみりゃ分かります。
0648デフォルトの名無しさん
2008/08/02(土) 15:34:46実行したコードとエラーメッセージは正しく書きましょう。
0649デフォルトの名無しさん
2008/08/02(土) 15:46:13>>623-624
ありがとうございます
やはり使用してる箇所全てに完全修飾名で書くしかなさそうですか・・・
グローバルを大量に書くのは一般的に余りよろしくないのですが、保守性を考えるとどうしても一元管理になってしまいます・・
一応設定ファイルのグローバル変数は全部定数なので、readonlyにしつつコーディング基準書で命名規則を用意するため
デバッグで困るという事は無さそうです
プログラムでの大域変数は原則禁止で、使用する場合は規則を用意して運用で対応しています
保守性・可読性・拡張性の確保が最上位、use strictで品質向上がその次に上位の課題なのですが、
完全修飾名を書くのが保守性・拡張性の低下になりそうで悩みます・・・
パッケージ用意して名称が永遠に不変な様に運用で固めようかな
0650デフォルトの名無しさん
2008/08/02(土) 15:50:02変数一個に全部ぶちこめばいいだろ。
0651デフォルトの名無しさん
2008/08/02(土) 15:55:59っ[Config::*]
0652623
2008/08/02(土) 16:28:15それでいいならいいんですけどね。
strict.pm は保守性維持のために厳格さを強制するプラグマです。
従って use strict することにより生じるセマンティクス上のエラーを回避するためにコードの保守性が下がったのでは本末転倒と言えます。
strict は既存の strict でないコードに取り付けることによってコードの質を向上させる用途には大抵は向きません。
strict クリーンなコードを目指すのであれば再設計の上、全てを再実装するのが良いでしょう。
その際には >>651 のような Config::* なモジュールを活用するのもよいでしょうし、
キーと値のペアを書いたファイルを用意し、必要に応じて各スコープ内のレキシカルハッシュにロードするルーチンを手作りしても大した手間ではないでしょう。
オブジェクトにしてアクセサ経由で値を参照させる手もあります。
より現実的な解として、use warnings または -w スイッチの導入があります。
近年の行儀の良い Perl はおおよそ以下のような出だしで始まります。
#!/usr/bin/perl
use strict;
use warnings;
0653649
2008/08/02(土) 17:19:33>>652
仰るとおり、既に作成された物に対してuse strictを付けても 余り効果的では無いみたいですね
0から書き直すのが一番なので現在それをやってるんですが、どうも一部処理は再設計が必要な様です
>use strict;
>use warnings;
↑これは全部に入れようとしています
最近は紙を書くだけの方に移行してますが一応本職なので、やはり作成するコードは綺麗にしたいですよね
昔作った3万ステップぐらいのcgiゲームを大きく拡張するので、これを機に書き直しているのですが、
strict クリーンな行儀の良いコードを目指して書き直すのは大変な様です・・
やりたいのはシステム共通の定数を別ファイルで管理したいだけなので
方法はオブジェクトでも何でも良いんですが、ここまで悩むとは・・・
でも手法は統一しないと後で悲惨な事になるので、最初に固めるしかないという。。固めないと動けないからオワタ
>>650
変数一個に全部?
>>651
>[Config::*]
ちょっとまだそれが何を意味するのか理解できていないので、ネットとかで調べてみます
0654623
2008/08/02(土) 17:48:29既存のコード内の変数名をいじらずに実現するなら、Exporter を使えば可能です。
定義側で @EXPORT (及び @EXPORT_OK) を設定しておけば、利用側のスクリプトでは定義モジュールを use MyConstants するだけで実現します。
use するので、MyConstants.pm (仮名) はモジュールになっていなければなりません。
もちろんこれは個人的にまったくおすすめしたくない方法です。
利用側の改変を最小に抑えようとすれば、こういった方法もあるということでした。
0655デフォルトの名無しさん
2008/08/02(土) 18:05:54>グローバルを大量に書くのは一般的に余りよろしくないのですが、保守性を考えるとどうしても一元管理になってしまいます・・
おいおいどういう保守性だ。
保守性じゃなくて、書く瞬間に何も考えないで済むだけじゃないのか。
片付けられないゴミを散らかしながら歩いているようなものだぞ。
>>653
>変数一個に全部?
650じゃないけど、↓こんな感じとか。ourじゃなくてmyでもいいが。
our $global_config = {
hoge => ...,
geho => ...,
...
};
もっとちゃんとするなら「システム共通の定数」を表す
1つのまとまったオブジェクトにするのがいいかな。
ただ、不慣れなものをあれこれ導入するよりは手の届く手段を選んだ方が無難だけど。
0656649
2008/08/02(土) 19:12:57@EXPORTは私も考えたのですが、変数一つ一つを代入式に入れないといけないので
623さんと同様、だめかなぁという結論になりました。
>>655
すみません記述が曖昧でした。グローバルというのはグローバル定数の事です。
グローバル変数の場合はご指摘に同意します。
>650じゃないけど、↓こんな感じとか。ourじゃなくてmyでもいいが。
>our $global_config = { hoge => ..., geho => ..., ... };
ありがとうございます。意味が分かりました。
ハッシュによる擬似的な構造体を現在使用しているので、それも一つの方法として検討していました。
(ゲームの為一部処理は100個近い変数を同時に処理することがあるので、正規化してハッシュ等で纏めて管理しないと辛いです。。)
仰る通りこういう場合は「システム共通の定数」を纏めた何かを作るのが普通と考えているので、
これはパッケージなりハッシュなり構造体なりで纏める予定です。
問題は呼び出し方です・・・今知っている手法を整理すると、ハッシュか構造体に纏めて@EXPORTで送るのが一番綺麗なのかな
0657デフォルトの名無しさん
2008/08/02(土) 20:03:06これってcaseは使えるの?
0658デフォルトの名無しさん
2008/08/02(土) 20:11:07perldelta - perl 5.10.0 の新機能
http://fleur.hio.jp/perldoc/perl/5.10.0/pod/perl5100delta.mix.html#Switch_and_Smart_Match_operator
0659デフォルトの名無しさん
2008/08/02(土) 20:19:00コンソールレベルで、
www.yahoo.comに、Perlから
pingを打つ、ってできるの?
CGIレベルでないと、だめ?
0660デフォルトの名無しさん
2008/08/02(土) 20:20:32Perlでmidiって使えるの?
0661デフォルトの名無しさん
2008/08/02(土) 20:42:03つ CPAN
0662デフォルトの名無しさん
2008/08/02(土) 21:18:34http://www.abcde.com/aaa.txt
の文字列を、Perlのコンソールレベルで、
そのテキストファイルを取得してきて、
Perlから使う、って、できるの?
あるいは、コンソールレベルではできないけど
CGIレベルならできる?
あるいは、相手側のサーバーがソケットを許可
してないとだめとか?
0663デフォルトの名無しさん
2008/08/02(土) 22:17:52そうしたら、
elsif
elsif
elsif
elsif
elsif
elsif
とかって見なくても済むと思うんだよねー
0664デフォルトの名無しさん
2008/08/02(土) 22:43:52Windowsのメモ帳で、ファイルを保存する時に、文字コードの選択なんだが、
(1)ANSI
(2)unicode
(3)unicode big endian
(4)utf-8
と4つの選択肢があるんだが、これって何を選べばいいの?
それとも、特に気にしなくていいの?
ANSIってシフトJISのことかな?
0665デフォルトの名無しさん
2008/08/02(土) 23:18:24本が、パタン、と閉じてしまう。
0666デフォルトの名無しさん
2008/08/02(土) 23:29:15悪いこと言わんからサクラエディタでも入れておけ
0667デフォルトの名無しさん
2008/08/02(土) 23:37:56↑これを実行するとおもしろいよ。
途中で中止するには、ctrl+c
0668デフォルトの名無しさん
2008/08/02(土) 23:43:010669デフォルトの名無しさん
2008/08/02(土) 23:47:550670デフォルトの名無しさん
2008/08/02(土) 23:53:18自分がかわいいと思った(w。
0671デフォルトの名無しさん
2008/08/02(土) 23:56:28-e"fork while 1" して代わりにPCさんに怒ってもらう
0672デフォルトの名無しさん
2008/08/03(日) 00:01:31join
をダブルクリックすると、書き方とかヘルプとかが
出てくるエディタってない?
0673デフォルトの名無しさん
2008/08/03(日) 00:02:18スレち
0674デフォルトの名無しさん
2008/08/03(日) 03:25:17そんで、おなじ数字があったら、破棄して、サイコロ
ふりなおしたいのよ。
そんで、今生成した4桁の数字は数値リテラルじゃん。
これを一桁ずつ区切って、配列に入れたいのよ。
1234
だったら、
(1,2,3,4)
みたいに。
そしてから、各桁が一致してるかどうか、
判別したら楽じゃん。
そんで、配列にいれるのは、どうやるの?
0675デフォルトの名無しさん
2008/08/03(日) 03:26:121134
とかは、だめってこと、1と1が同じだから。
全部の桁が違う数字でないとだめなの。
それと、数字の先頭は0は不可だから。
0676デフォルトの名無しさん
2008/08/03(日) 07:39:040677デフォルトの名無しさん
2008/08/03(日) 08:14:55↑これってなんで起きるの?
0678デフォルトの名無しさん
2008/08/03(日) 12:26:50JavaScriptのDOMのように各要素の値を見れればOKです。
0679デフォルトの名無しさん
2008/08/03(日) 12:44:11定番は HTML::Parser。
HTML::DOM 関係なら230個ほどある。
http://search.cpan.org/search?query=html+dom&mode=all
好きなの使え。
0680デフォルトの名無しさん
2008/08/03(日) 12:45:12cpan Plaggerとかやっても20数個のモジュールが不足してて
それらが自動的にインストールされないから不足分の表示からそれらを個別にcpan $hogehogeするスクリプトを書いてやっても
そのうちのほとんどがインストールに失敗するから(なんかテストフェーズで失敗してる)結局一つ一つをソースを修正(というか強制的にテストを通過させる)
しながらmakeする作業をする事に…結局5つインスコできた時点で心が折れました
色んな記事ではcpanで一発でインスコしてますが、本当にcpanで一発インスコなんてできるんでしょうか?
0681デフォルトの名無しさん
2008/08/03(日) 13:11:54ありがとうございます。
HTML::Parser試してみます。
0682デフォルトの名無しさん
2008/08/03(日) 13:48:29大変だな。
おれの環境では、
# portinstall p5-Plagger
とやって放っておけば全部インストールされるけどな。
0683デフォルトの名無しさん
2008/08/03(日) 14:06:400684デフォルトの名無しさん
2008/08/03(日) 16:47:21遅レスだが、>>613のメインスクリプト中の、
順番を変えてやればいいんじゃないの?
require("x.ini");
use strict;
あと、「定数」といいながら、「$x」なんて使うのはよくないね。
うっかりいじられるかもしれないから。
use constant X => "XXX";
のようにすれば、本当にいじられない定数になる。
0685デフォルトの名無しさん
2008/08/03(日) 18:05:08最新流行は Readonly.pm らしいよ。
また、重箱の隅だけれど、constant でも本当にいじられないわけじゃないです。
同じパッケージでユーザ定義関数とぶつかると、警告表示の上でユーザ定義関数が優先されます。
0686デフォルトの名無しさん
2008/08/03(日) 18:23:44参照時エラーを発しているのに定義だけ strict の外に逃がしても何も変わらないと思うです。
0687デフォルトの名無しさん
2008/08/03(日) 18:31:09メインlでour宣言してないな。
strictしてるんだから、宣言なしに変数使っちゃだめじゃん。
あと設定ファイルでour宣言してるのにuse strictしてないな。
その中途半端なコーディングスタイルはとてもイケメンとはいえないな。
0688623
2008/08/03(日) 19:09:44それが妥当な設計上必要なら何千個でも列挙すればいいと思います。が、
ぼくがそれを避けたいのは export 先パッケージに大量のシンボルが流入すると、それらの管理の徹底が困難になり、そこに起因するつまらないデバッグ作業に貴重な人件費を奪われるリスクが高まるからです。
再設計するなら、以下のような現状を:
プログラム <-> 定義スクリプト
下記のような構造に変更してはどうかという提案をしたい:
設定ファイル
・設定項目とその設定値のペアを記載
設定アクセス用モジュール
・設定ファイルから設定項目と値を読込み
# 設定項目が増減してもモジュールには手を入れなくて良い
・設定項目と値のペアをハッシュに展開
・各設定項目を利用範囲毎に分割展開したり
・ツリー構造にして
・部分単位で利用できるようにするのも一興
・our なハッシュにして EXPORT するもよし
・レキシカル変数にして要求に応じて値を返す関数を実装するもよし
・お好みでオブジェクトにするもよし
プログラム
・import したならその変数を使うもよし
・import せずに完全修飾名を使うもよし
・値を返させてレキシカルハッシュなりに格納して利用するもよし
・気分次第で use Readonly するもよし
0689デフォルトの名無しさん
2008/08/03(日) 19:12:20これじゃダメ?
*const = \("XXX");
0690デフォルトの名無しさん
2008/08/03(日) 19:16:02最初からずっと、そういう話じゃないです。
0691デフォルトの名無しさん
2008/08/03(日) 19:23:40ええけど読みにくないか?w
0692デフォルトの名無しさん
2008/08/03(日) 19:40:43ん?なんか変か?質問者は少なくともそのレベルだと思うんだけど。。。
>>688
そこまで考えるんだったら、JSONかYAMLにしとけばいいんじゃね?
自前で作るのめんどくさいだろ。
0693デフォルトの名無しさん
2008/08/03(日) 21:16:24という形式のデータがあるのですが、簡単に
$year = YYYY;
$month = MM;
$day = DD;
のように代入する方法はありませんか?
0694デフォルトの名無しさん
2008/08/03(日) 21:27:10($year, $month, $day) = ($1, $2, $3) if $date =~ /^(\d\d\d\d)-(\d\d)-(\d\d)/;
0695デフォルトの名無しさん
2008/08/03(日) 21:58:16何かバルタン星人がいっぱいいるぞ
0696デフォルトの名無しさん
2008/08/03(日) 22:03:11Perlの構文をそのまま設定ファイルに使うのはどうか。
sample.conf:
{ hoge => 'hahaha', geho => 'hohoho', foo => [ 'bar', 'baz' ] }
loader:
sub load_config($)
{ my $fh = shift; eval do { local $/; join '', <$fh> }; }
toplevel:
my $config = do { open(my $fh, 'sample.conf') or die; load_config($fh); };
→ $config に sample.conf 内のPerl構文でのデータ構造が得られる
まあこのままだとフリーダム過ぎるので、制約を決めておいて、
loadした後に制約チェッカにかけたりするといいのかもしれない。エラー処理も必要。
設定ファイルが悪意を持っていないとみなせるなら、そこそこ使い物になる。
0697デフォルトの名無しさん
2008/08/03(日) 22:04:360698デフォルトの名無しさん
2008/08/03(日) 22:06:12my ($year, $month, $day) = ($data =~ /^(\d\d\d\d)-(\d\d)-(\d\d)/);
0699デフォルトの名無しさん
2008/08/03(日) 22:09:040701649
2008/08/03(日) 22:22:00『use strictを使いながら、グローバル定数は別ファイルで管理する』という、おそらく頻出の課題ですが、
最後のレスの後に総合的に判断した結果、結局exportは使用せずに完全修飾名を書いて参照する方向で決定しました。
理由は以下の二つです
・複数の機能別変数セットがあるため、完全修飾名を書かないと宣言箇所(=管理している場所)が分かりにくい
(全てINI packageで宣言しており、その中に「%SY」、「%DIR」、「%FILE」などのハッシュの種類があるため、
完全修飾名を書いたほうが『INIファイルで宣言している』事が分かりやすい)
・exportを使うと、変数セットが追加される度にどんどんqw()の中に増えていく為、どうもソース的によろしくない (主に見た目と変更方法が)
デメリットはpackage名の変更・中身の分割がやりにくい点ですが、名称と管轄するデータは恒久的に固定にする、という事で対応しました。
定数の書き方はreadonlyか>>689さんのやり方を考えていますが、readonlyはモジュールを置かないといけない様なので思案中です。
(といっても変数は命名規則があるので、定数を変更する様なバグは無さそうです。システム的な強制は必要無いかも。。)
0703649
2008/08/03(日) 22:26:21配列も要素が増減可能だし、連想配列というぐらいだから仕方ないのかな
でも要素名もチェックしてくれないとuse strictを使う意味が大分薄まる・・・orz
構造体ならチェック可能なのかなぁ・・・
>>687
詳しくは知らないのですが、use strictはプログラム中に一回では無くて
定義のみのファイルを含む「使用ファイル」全てに書かないと駄目なのでしょうか?
requireとかは実行時に展開されるから、各ファイルに書かないと不味いのかな
0704デフォルトの名無しさん
2008/08/04(月) 00:36:06> あとuse strict、ハッシュの要素名を間違えててもエラーにしてくれませんね・・・use warningsも警告を出してくれない・・・
そんなあなたに Hash::Util。
lock_hash() でお望みの機能が手に入ります。
use strict についてはスタイル次第ですが、このプラグマはレキシカルスコープですから、定義のみのファイルを require で展開して、という用法では、その定義のみのファイル内のコードに strict の効果が及びません。
今回、定義ファイルをモジュール形式の Perl コードにする予定なら、定義側も strict 下で書くべきだと思います。
0705デフォルトの名無しさん
2008/08/04(月) 03:49:00今日、mapという関数を発見した。
配列Aを読み込んで、なんらかの処理をほどこして、
配列Bにする、という機能らしいのだが、不可解なのは
その名称だ。
mapといえば通常地図のことなのだが、それと配列の操作と、
どのように結びつくのかまったくわからない。ラリー・ウオールは
言語学者というが、脳が腐っているのではないか。
0706デフォルトの名無しさん
2008/08/04(月) 04:04:320707デフォルトの名無しさん
2008/08/04(月) 04:44:58はやく教えてくださいよ
0708デフォルトの名無しさん
2008/08/04(月) 05:57:01これなんかいまから9年前に出版されたのに
今田にアマゾンのperlのカテゴリで売り上げランキング29位ですよ
Perlの入門本の世界はほんとにどうしようもないですね
0709デフォルトの名無しさん
2008/08/04(月) 06:34:55三島 俊司 (著)
技術評論社 (1998/08)
出版社に問い合わせたら、この本は
すでに絶版らしい。
0710デフォルトの名無しさん
2008/08/04(月) 06:36:51>メモ:
>2008/07/15 に新着バグがありました。
>p.76 から、階乗の英語として「power」を使っていましたが、これはべき乗という意味で、
>階乗は「factorial」というべきというものです。
>お便りをくださった読者の方、ありがとうございました。
なんだよ 英語もできないのかよ
0711デフォルトの名無しさん
2008/08/04(月) 07:01:33http://www.amazon.co.jp/dp/4797336803/
新版Perl言語プログラミングレッスン入門編 (単行本)
結城浩 (著)
これ読んでる。次は
http://www.amazon.co.jp/dp/4774108170/
すぐわかるPerl (Software Technology) (単行本)
深沢 千尋 (著)
これを読む予定。
0712デフォルトの名無しさん
2008/08/04(月) 07:31:29ネタにマジレスすると、Lispという言語のmapcarという関数からきている。
0713デフォルトの名無しさん
2008/08/04(月) 07:31:540714デフォルトの名無しさん
2008/08/04(月) 07:40:200715デフォルトの名無しさん
2008/08/04(月) 07:44:04map → 写像
cha → キャラクター(文字)
0716デフォルトの名無しさん
2008/08/04(月) 07:44:58自分はたくさん読んで理解するタイプだから。
たくさん読み込むタイプと、
1冊だけ深読みするタイプと
二種類の人種がある。
0717デフォルトの名無しさん
2008/08/04(月) 07:47:53あるナゾのパターンの、マッチ式が生成される(あるいは事前に埋め込まれる」
ユーザーはキーボードから文字列を適当に入力し、
そのマッチ式がなんなのかを推定してあてる。
0718デフォルトの名無しさん
2008/08/04(月) 07:51:25cats → マッチ!
CATS → マッチしません
It rains cats and dogs. → マッチ!
One car, two cars. → マッチ!
ra ta ca sa ma da ba → マッチ!
ca.s → マッチ!
以上の例を見て、
隠されたマッチ式がなんなのかをあてる
ゲーム
0719デフォルトの名無しさん
2008/08/04(月) 08:26:15chaじゃないって
0720デフォルトの名無しさん
2008/08/04(月) 08:26:46↑これについてカンタンに解説して。
0721デフォルトの名無しさん
2008/08/04(月) 08:36:320722デフォルトの名無しさん
2008/08/04(月) 09:36:012ちゃんに自動的に投稿できるってこと?
でもたぶん文面は固定というか
きめうちだと思うけど。
0723デフォルトの名無しさん
2008/08/04(月) 10:06:302chスレを検索して投稿できるアプリケーションを作った事が懐かしいな
0724デフォルトの名無しさん
2008/08/04(月) 10:06:37自動的にsubmit()するJavaScriptが含まれるHTML
を生成するPerlスクリプト。
ちなみにQUERYストリングはJavaScriptからでも取れる筈なので、
>>720と同等のものを静的なHTMLでも作成出来る
0725デフォルトの名無しさん
2008/08/04(月) 11:22:20↑これって本当なのかな?
もし本当ならIPAバカすぎる
perl関係ないけど。
0726デフォルトの名無しさん
2008/08/04(月) 12:01:42理解は容易になるの?
0727デフォルトの名無しさん
2008/08/04(月) 12:03:140728デフォルトの名無しさん
2008/08/04(月) 12:20:380729デフォルトの名無しさん
2008/08/04(月) 12:21:10↑この人を雇いたい〜
本人いたら出てきて
0730デフォルトの名無しさん
2008/08/04(月) 12:45:39必ずPerlの予約語の名前をつけなければならない、ってオンラインゲーム。
whileさんとか、forさんとか。
そんで、そいつらでパーティ組んで、ダンジョンにもぐる。
コードを組む問題が出てきて、パーティー構成が
うまく組めてると、問題を解ける。
必要な予約語がいないと、そこで詰むw
0731デフォルトの名無しさん
2008/08/04(月) 12:52:56あとアルファベットをアイテムとして入手できて,消費することで単語を作れるとか
まあほぼ間違いなく面白くないな
0732デフォルトの名無しさん
2008/08/04(月) 17:43:44URIを与えて、レスポンスヘッダのContent-Dispositionフィールドを
読んで、セーブファイル名を適切にセットしてくるようなものは?
0733デフォルトの名無しさん
2008/08/04(月) 18:11:41lwpでresponseのfilename使えばいいと思うが。一緒についてくる
lwp-downloadコマンドが参考になる。
0734デフォルトの名無しさん
2008/08/04(月) 23:17:09このはまちちゃんの日記おもしろいよ
0735デフォルトの名無しさん
2008/08/04(月) 23:25:54>>726 あなたが Perl を学び終えたらぜひ知らせてください。その際にはいくつかお聞きしたいことがあります。
>>729 そのスレで求人してください。
>>730 あなたの素晴らしいアイデアは承りました。もしよろしければ、ここはゲームデザインスレではなく、プログラム板内の Perl 質問スレである点ご留意頂き、それを実現するコードのほうを拝見できませんか。
>>734 ご親切にありがとうございます。このスレでも氏を知らない者が2%くらいはいるかもしれませんから、彼らに代わり御礼申し上げます。
0736デフォルトの名無しさん
2008/08/05(火) 00:37:45CPAN でぐぐれ。
0737デフォルトの名無しさん
2008/08/05(火) 00:48:48どんなこと聞きたいの?
今答えるよ
0738デフォルトの名無しさん
2008/08/05(火) 00:49:45今、パソコンでローカルで、
Perl5.10で勉強してるんだけど、
勉強がおわたら、レンタルサーバーに
アップロードしてCGIとして動かすんだけど、
ひょっとして、サーバーのほうも5.10でないと
意味がないのかな?
0739デフォルトの名無しさん
2008/08/05(火) 00:54:125.10で新しく追加された機能さえ使わなければOK.
0740デフォルトの名無しさん
2008/08/05(火) 01:27:29コンソールレベルで。
0741デフォルトの名無しさん
2008/08/05(火) 01:52:060742デフォルトの名無しさん
2008/08/05(火) 04:15:30my @a;
みたいに。
0743デフォルトの名無しさん
2008/08/05(火) 05:25:59Perlのことがわかってきてうれしい
0744デフォルトの名無しさん
2008/08/05(火) 05:27:42かならず一個だけなの?
0745デフォルトの名無しさん
2008/08/05(火) 05:53:160746デフォルトの名無しさん
2008/08/05(火) 05:53:49そう。
0747デフォルトの名無しさん
2008/08/05(火) 05:58:15レファレンスやデレファレンスを駆使しなくてはならない。
と聞いたのですが、そうなのですか?
ちなみに、掲示版は、名前、メールアドレス、投稿日時、投稿内容、レス番と
5つのデータ-がからむため、レファレンスやデレファレンスを駆使して
複雑なデータ-構造を作っているのですか?
0748デフォルトの名無しさん
2008/08/05(火) 05:59:18じゃああれだね。新型の電話機の普及の問題と同じ。
ネットワークの外部性?
使ってる人が多くならないと、サーバーの側も
対応してくれないっていう。
0749デフォルトの名無しさん
2008/08/05(火) 08:56:51ほかの人のコードも読みましょう。
そうやってほかの人がどうやっているのかしらべてみましょう。
あなたの Perl には Perl のじょうずな人たちが作ったモジュールなどがたくさんふくまれています。
ほかにも Web でくばられている掲示板などのスクリプトもたくさんあります。
よりどりみどりです。
0750デフォルトの名無しさん
2008/08/05(火) 09:47:440751デフォルトの名無しさん
2008/08/05(火) 09:48:16結城さんのperlの本を英語に翻訳して
アメリカで売ったら、売れるんでない?
0752デフォルトの名無しさん
2008/08/05(火) 10:17:310753デフォルトの名無しさん
2008/08/05(火) 10:30:18まんまじゃねえか
0754デフォルトの名無しさん
2008/08/05(火) 12:03:21ほう・・・
じゃあ、プロのコードを見せてよ。
あなたは、よほどご立派な素晴らしいプロのコードが書けるんですね。
さぁ、さぁ、さぁ、見せてもらおうじゃないですか。ご立派なプロのコードとやらを。
期待してますよ。逃げないでくださいね。
0755デフォルトの名無しさん
2008/08/05(火) 12:03:540756デフォルトの名無しさん
2008/08/05(火) 12:11:48もし見られたとしても金がかかるだろJK
0757デフォルトの名無しさん
2008/08/05(火) 12:25:02プロだからタダじゃぁコードは見せられないな。残念だけど。
0758デフォルトの名無しさん
2008/08/05(火) 12:37:020760デフォルトの名無しさん
2008/08/05(火) 12:58:14コードはパスタだらけになってると思ってた。
0761デフォルトの名無しさん
2008/08/05(火) 13:35:050762デフォルトの名無しさん
2008/08/05(火) 13:56:12> ほかにも Web でくばられている掲示板などのスクリプトもたくさんあります。
掲示板は素人が真っ先に手をつけるものなので、参考にするのは危険。
0763デフォルトの名無しさん
2008/08/05(火) 14:00:46リファレンスを使うか使わないかは、データの処理方法とアルゴリズムとか
もろもろの理由から考えてきめればいいんだよ。この質問をしている時点で
リファレンスをつかったデータ構造の表現とかはまだ敷居がたかいかもしれ
ないと思うけども。
シンプルにできることをわざわざ複雑にリファレンスを使う必要もないし。
たった5つのデータの掲示板ならハッシュで一枚のcgiファイルで
終わりだな。(HTMLひな形はパーツとして読み込む形にしても)
$name{投稿番号}
$date{投稿番号}
$message{投稿番号}
$account{投稿番号}
$resnumber{投稿番号}
のハッシュをつくるかな。で、必要なデータ分だけデータファイルから読み込んで
上記ハッシュにセットして、投稿番号でデータを扱う。
あとは外部のひな形HTMLファイルを読み込んで、投稿データを埋め込んで
HTMLファイルを生成、文字コード変換して、画面出力。
まぁ、基本からはじめていろいろと自分なりのニーズがでてくると思うので
それをプログラムでどう表現するかを考えると自ずと答えはみつかてくる
ので上達すると思うよ。たいていはソートアルゴリズムを自然と研究するように
なっていくと思うんだけど。複雑な掲示板になればなるほど。
0764デフォルトの名無しさん
2008/08/05(火) 14:15:29思うサイトを載っけとく。
http://takenaka-akio.cool.ne.jp/doc/perl_kiso/reference.html
(リファレンスのページだけど初心者は最初の章から読むべし)
俺も一時、ネットでいろいろな所を読みあさったり書籍を何冊も買っては
読んでみたけども、上記サイトが一番だった。作者にはオブジェクト指向
の実戦的利用法みたいなサイトをつくってもらいたいと思ったくらいだ。
0765デフォルトの名無しさん
2008/08/05(火) 14:44:48素人が書き捨てに使うことこそ本来の役目と思う。
なんというか、カップラーメンを食べる作法をあれこれ言うようなもんだ。
0766デフォルトの名無しさん
2008/08/05(火) 14:48:540767デフォルトの名無しさん
2008/08/05(火) 15:09:56さすがプロだね。逃げ足は速い。
0768デフォルトの名無しさん
2008/08/05(火) 15:15:48> perlのプログラムに「プロだから・・」というレベルを求めるのはどうかと思う。
コンピュータ言語に関しては、「プロ」に権威を見出すのは間違いだ。
その方面に詳しい奴ほど、才能がある奴ほど、「プロ」になりたがらねえ。
0769デフォルトの名無しさん
2008/08/05(火) 15:56:120770デフォルトの名無しさん
2008/08/05(火) 16:11:47っ[Plagger]
0771デフォルトの名無しさん
2008/08/05(火) 16:12:500772デフォルトの名無しさん
2008/08/05(火) 17:09:24君の言うプロの定義ってなんだ?
0773デフォルトの名無しさん
2008/08/05(火) 17:37:120774デフォルトの名無しさん
2008/08/05(火) 18:34:35言われてる話なら聞いた。
0775デフォルトの名無しさん
2008/08/05(火) 18:36:13サンクス
見てみる
0776デフォルトの名無しさん
2008/08/05(火) 18:56:24プロが書いたのを教えてあげる
つ KENT
0777デフォルトの名無しさん
2008/08/05(火) 19:06:00理系エンジニアが研究の道具にプログラミングを使うっていうのが正しいプログラミングのプロ
0778デフォルトの名無しさん
2008/08/05(火) 21:16:27ああなんだ、そうすればいいんだ。
5種類のデータ-があるからといって、
必ずしも5次元配列にしなければならない、
ってことではないんだね。
0779デフォルトの名無しさん
2008/08/05(火) 21:35:29食べてないのがアマ。
それだけの話。
「玄人」なんて自称しているやつはほぼ全員後者。
0780デフォルトの名無しさん
2008/08/05(火) 22:19:260781デフォルトの名無しさん
2008/08/05(火) 22:35:35するとハッカーの半分ぐらいは出家するwww
0782デフォルトの名無しさん
2008/08/05(火) 23:09:23コードを食うのがハカー。
0783デフォルトの名無しさん
2008/08/05(火) 23:16:44更新用の情報「番号,氏名,生年月日」が記入されたcsvファイル1のレコードから「番号」を用い、
同じように「番号,氏名,生年月日」が記入された更新前のcsvファイル2から、「番号」の列全てに検索をかけて、マッチした場合はcsvファイル1の情報をファイル2に上書きさせたいです。
具体的にはこのような感じにしたいです。
csvファイル1(更新用情報)
2,山田太郎,1月1日
csvファイル2(更新前)
1,近藤太郎,3月3日
2,兼松太郎,1月1日
3,近藤直正,3月12日
csvファイル2(更新後)
1,近藤太郎,3月3日
2,山田太郎,1月1日
3,近藤直正,3月12日
自分なりに下記のように作成してみたのですが、上手くできずに詰まってしまっています。どなたか解決法をご教授ください…
open(IN, '<After') or die "file open error: $!";
open(OUT, '<Before') or die "file open error: $!";
while( <IN> ){
@a = split(/,/, $_);
@b = split(/,/, <OUT>);
for($i =0; $i<13; $i++){
if ( $a[0] ne $b[$i] ){
print OUT "$a[$i]\t"
}
}
print "\n";
}
0784デフォルトの名無しさん
2008/08/05(火) 23:22:44CSVをやめてDB使う
0785デフォルトの名無しさん
2008/08/05(火) 23:30:10最近の Perl は読込専用で開いたファイルに print() できるようになりましたかそうですか。
0786752
2008/08/05(火) 23:31:57なんでそんなに反応するんだ?
0787735
2008/08/05(火) 23:34:12Perl を学び終えた人に聞きたいことなので、早く学び終えてください。
C の読み書きすらままならない人が Perl を学び終えるなどと口走るのは愉快な冗談にもほどがあるので。
がんばってくださいね。
0788デフォルトの名無しさん
2008/08/05(火) 23:38:29use strict;
use warnings;
my %data;
for my $file ("更新前.csv", "更新用情報.csv") {
open my $fh, "<", $file or die $!;
while (my $line = readline $fh) {
chomp $line;
my ($id, @data) = split /,/, $line;
$data{$id} = \@data;
}
close $fh;
}
{
local $\ = "\n"; local $, = ",";
open my $fh, ">", "更新後.csv" or die $!;
while (my ($id, $data) = each(%data)) {
print $fh $id, @$data;
}
close $fh;
}
0789デフォルトの名無しさん
2008/08/05(火) 23:50:10763のハッシュで書いたものは結果的に5種類のハッシュを使っているので5次元だよ。
そのハッシュどうしの並びは固定していないので自由につかえるわけよ。
5x投稿数の行列としてもつかえるよね。
それはさておき、無名ハッシュという考え方が身に付けば、データについて非常に
柔軟に考えることができるようになるよ。適当にハッシュつかって変数にしとくか
って感じでw ある意味、perlの強みをいかんなく発揮すると思う。
0790デフォルトの名無しさん
2008/08/06(水) 00:05:53Perl の魅力の一端についての、とてもよい説明だと思います。
が、>>747 に挙げられた5項目並列の情報群を「複雑なデータ-構造」と見做して「レファレンスやデレファレンスを駆使しなくてはならない」との受け売りで自縄自縛してしまうあたりの応用力の人にとって、その説明は役に立つのかしら。
0791デフォルトの名無しさん
2008/08/06(水) 00:17:42perlの特性(魅力?)を無視してるけど、線引きはちゃんとした方がバグも減ると思うんだ
ispのサーバーでcgi動かすにはperlぐらいしかないから、上手く使いこなしたいぜ
0792デフォルトの名無しさん
2008/08/06(水) 00:34:39個人的にプログラムはperlからはいってしまった(大学では単位取るくらいには
やったけど)ので、型とか意識する場合は、バイナリデータか通常データwか
くらいなんだよなぁ。しかもstrictなんてつかっていないので、変数も好きなとき
に好きなときだけ用意してしまう。そのかわり変数はしっかりと把握している癖
はついたのかもしれないけど。
最初に変数などを定義してバキバキにやることで逆に緊張感がうすれてバギーな
コーディングになってしまうっていうようなことはないのかな?(そんなことは
ないか)
0793デフォルトの名無しさん
2008/08/06(水) 01:12:00変数に型縛りがないことで、mapなどの汎用関数が簡単に書けるんだよ。
sub my_map
{
my ($func, @list) = @_;
my @mapped = ();
foreach my $x (@list) {
push(@mapped, $func->($x));
}
return @mapped;
}
変数に型縛りがあると、このような処理を書くのが面倒くさい。
うまく関数やオブジェクトにまとめることで、変数の氾濫は避けられると思うよ。
0794デフォルトの名無しさん
2008/08/06(水) 01:35:18C流型縛りは、実は「型」ではなくてレジスタ/メモリのサイズ/符号付けでしかない。
perlを「型無し言語」と言う奴は「構造クラス」を理解できてないアホ。こういうアホに限って複合データ構造/動的データ構造を理解できないどころか、その存在すら知らない。
昨今Javaがもてはやされてるのは、昔のメインフレーム屋の亡霊が新たな「仕事したふり」アリバイをめっけたから。
0795デフォルトの名無しさん
2008/08/06(水) 01:36:08掲示板に5次元配列w そのハッシュはあくまで添え字に過ぎず、それは2次元。
5次元て とんでもない箱だぞ? 4次元でもややこし過ぎて 助けてドラえもん 状態だ。
0796デフォルトの名無しさん
2008/08/06(水) 01:45:41Perlって変数を様々な方法でいじって見ると面白いよね。
Perlやる前はCとVBだったから一番最初に感動した部分だった。
0797デフォルトの名無しさん
2008/08/06(水) 01:48:07いま君が使っているディスプレイの点は5次元で表現できるよ。
幅×高さ×赤×緑×青
ドゥユーアンダスタンンンドゥ
0798デフォルトの名無しさん
2008/08/06(水) 02:07:38自称プロの方ですか?w それ3項目の2次元の典型。
それを5次元というなら、特定座標の赤の全階調毎に緑×青の
組み合わせパターンを保持するって、どういう目的だ?
0799デフォルトの名無しさん
2008/08/06(水) 02:21:09単なる例えでしょ
0800デフォルトの名無しさん
2008/08/06(水) 02:29:590801デフォルトの名無しさん
2008/08/06(水) 02:38:45誤用を、単なる例えで逃げられましても。
百歩譲って、「幅×高さ×赤×緑×青」として その位置には
いったい何が保管されているんだい? ディスプレイだよね?
0802デフォルトの名無しさん
2008/08/06(水) 02:41:00こういう妄想90%の「説明ぶり」を見るとゾッとする。新語創造癖も併発してるし。
0803デフォルトの名無しさん
2008/08/06(水) 02:48:05> いま君が使っているディスプレイの点は5次元で表現できるよ。
> 幅×高さ×赤×緑×青
> ドゥユーアンダスタンンンドゥ
何というキチイガ!!
0804デフォルトの名無しさん
2008/08/06(水) 02:54:25ドゥユーアンダスタンンンドゥ と言ってる本人が一番理解できてませんw
0805デフォルトの名無しさん
2008/08/06(水) 03:00:570806デフォルトの名無しさん
2008/08/06(水) 03:18:46・・・って言ったのは、どこのどいつだったか
つつい忘れてしまった。
0807デフォルトの名無しさん
2008/08/06(水) 04:06:41とか実行すると、モジュールを探しに行く先(?)が表示されますが、
これはどこで定義されているものなのでしょうか?
また、スクリプト中で指定せずともここにパスを追加する事は出来るのでしょうか?
0808デフォルトの名無しさん
2008/08/06(水) 04:17:140809デフォルトの名無しさん
2008/08/06(水) 04:43:15-Iの事ですか?であれば確認してあります。
もっと細かく言うと、-Ipath/to/modules みたいな事をしなくても、
上記であげたワンライナーで既に定義済のものと同じ扱いで定義する事が出来るのかを知りたいです。
興味本位で質問していますので、通常こういったケースではこうするというようなアドバイスは不要です。
よろしくお願いします。
0810デフォルトの名無しさん
2008/08/06(水) 06:49:42そりゃ、
投稿番号、投稿データ
というくくりでみれば、2次元だけど、それは5次元のなかの上記部分で抜き出した
所をみているだけにすぎない!
っていったらだめかな?(投稿番号まで自由にさせれば6次元だぜ)
そもそも投稿データというのは掲示板のみてくれによって、データ同士でくくりがあって
ひとまとめに表示しなくてはいけない場合もあるし(レス番号とか、アカウント別とかね)
、だから単純に2次元という視点じゃ、結局(無名)ハッシュとしての利点をみることが
できず、足んない@配列的な思考しかできなくなると思うよ。実際、俺自身が初心者から
数年、抜けきれなくてくろうしたもん。
0811デフォルトの名無しさん
2008/08/06(水) 06:55:35@配列的思考の呪縛から解き放たれた感じがしたんだよね。
だいたい、データをどう頭の中でとらえておくか?っていうのはまさに
無名にしておいて浮遊間をあたえておかないと、損だよね。そこから、
ときには2つを抜き出し2次元にして(ソートして)ほかのデータを
それにそってそろえたり、一部のデータをキーにしてほか関係あるデー
タを抜き出してならべたり、そういう思考ができるの無名ハッシュで
多次元でっていう思考が必要かと思う。(多次元っていうと問題なら、
浮遊間でもいいけど、次元固定しちゃいけないって意味で。)
0812デフォルトの名無しさん
2008/08/06(水) 08:04:28定義として「n個の変数でn次元を表す」というのと、
具体的にそのすべての「点」の値を(プログラム内で)保持する、とかいうのは
また別の話だろ。
0813デフォルトの名無しさん
2008/08/06(水) 09:12:32やすいんだけど、perlの場合の挙動が良く理解できてない。htmlから
<td>の要素を全て検索して、表示するってコードはこんな感じが
スタンダードですか?
23 foreach($content=~/<TD>(.+?)<\/TD>/g){
24 print;
25 print "\n";
26 }
0814デフォルトの名無しさん
2008/08/06(水) 10:32:55イマイチなにがしたいのかよくわからないけど、@INCはどこで定義されてるか?
ってことについては、コンパイル時にCoreに組み込まれる。
正確に言うと、configureオプションの-Dprivlib,-Dsitelib,-Dvendorlib,とか-Dinc_version_listらへんかな。
これを後から動的に追加とかしたかったら、-Iオプション使うか、
スクリプトの中で
use lib '/path/to/...'するか、はたまた
our @INC;
push(@INC,'/path/to/...') (かunshift)とかするしかないんじゃないか。
ほかのやり方があるかも知れないけど、オレは知らない。あったら誰か教えて。
0815デフォルトの名無しさん
2008/08/06(水) 11:58:400816デフォルトの名無しさん
2008/08/06(水) 12:26:360817デフォルトの名無しさん
2008/08/06(水) 12:29:250818デフォルトの名無しさん
2008/08/06(水) 12:42:54添付マニュアルのperlrunに書いてあるってことまで特別サービスでa教えてやるから、
あとは自分で読みなさい。
0819デフォルトの名無しさん
2008/08/06(水) 12:45:41> そりゃ、
> 投稿番号、投稿データ
> というくくりでみれば、2次元だけど、それは5次元のなかの上記部分で抜き出した
> 所をみているだけにすぎない!
> っていったらだめかな?(投稿番号まで自由にさせれば6次元だぜ)
完全にデタラメ。
0820デフォルトの名無しさん
2008/08/06(水) 12:58:330821デフォルトの名無しさん
2008/08/06(水) 13:01:180822デフォルトの名無しさん
2008/08/06(水) 13:11:57おまえん家のモニタも5次元データで動いてるらしいぞw
0823デフォルトの名無しさん
2008/08/06(水) 13:15:58:::::::::::::::::::::::::::::___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`ヽ、:::::::/
::::::::::::::::::::::::::::::::::::::::::::::::`ー--、_;;;;;;;;;;;;;;;;;;`ヽ′
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::`ー--、__/
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::`ヽ、
:::::::::::`ー―――----、____::::::::::::::::::::::::::`ー-、
:::::::::::{ |:::::::| `ヽ、__,.-‐〈 ̄ ̄ ̄ ̄`ー`ヽ、
:::::::::::ヽ |:::::::| ヽ、___,.-‐一'´
:::::::::::`′j:::::::| -__ゝ
ヽ、_ノ!:::::::l ´ヽ、 /
l:::::::l、 ヽ-、__ゝ
ヽ:::::::ヽ `ー--!、
―--、 ヽ:::::::ヽ、 ー-< ,ィノ|_,
::::::::::::::::::::::`ヽL:::::::::::`ヽ、 ,ィノ`ー'´:::::::ノ′
______ヽ、:::::::::::`ヽ-イ′:::::::::::::::/
:::::::::::::::::::::::::::::::::`ー――---、___/
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ̄ ̄`ー――--、 呼ばれたような……
0824デフォルトの名無しさん
2008/08/06(水) 13:18:480825デフォルトの名無しさん
2008/08/06(水) 14:08:34perlでこれできないの?
0826デフォルトの名無しさん
2008/08/06(水) 14:22:110827デフォルトの名無しさん
2008/08/06(水) 14:24:120828デフォルトの名無しさん
2008/08/06(水) 14:49:40作れるだろ,がんばれば
0829デフォルトの名無しさん
2008/08/06(水) 15:26:57完全にデタラメってどこがでたらめなんだよ? 自分にはデータ配列をつかっていかように
にも組み合わせて、高次元のものとしても やろうと思えば、できるっという意味に
とれらんだけど、そうじゃないのか? それとも単に掲示板で多次元配列はナンセンスって
ことがいいたいだけなのか?
というか、ここの連中って人の批判するなら、自分なりの根拠を書いてほしいね。
ただ嫌みを書き捨てるやつは最低だよ。
いろいろと参考意見を書いてもらう方が初心者にとって遥かに参考になる。
0830デフォルトの名無しさん
2008/08/06(水) 15:36:080831デフォルトの名無しさん
2008/08/06(水) 15:37:58くだらない言い争いはどっか別の場所でやってくれ
0832デフォルトの名無しさん
2008/08/06(水) 15:57:32デタラメって、どこがどうデタラメなのか指摘もできないなら、捨て台詞なんて
書き込むないでほしいなぁ。こっちは誠意をもって書き込んでいるんだから、
間違いがあるなら指摘するのが筋ってものだと思うが。
自分の文句がある部分でさえ説明できないなら、書き込まないでね。
0833デフォルトの名無しさん
2008/08/06(水) 15:58:340834デフォルトの名無しさん
2008/08/06(水) 16:00:37文句あるなら、間違いを指摘しろってんだを、ぼけ、死ねや
0835デフォルトの名無しさん
2008/08/06(水) 16:04:54から。できる人にとっても説明が難しいのかな。
0836デフォルトの名無しさん
2008/08/06(水) 16:06:52> 完全にデタラメってどこがでたらめなんだよ?
「このF1レースカーは」と言いながら自転車を指さしている行為に例えられるデタラメだな。
0837デフォルトの名無しさん
2008/08/06(水) 16:39:490838デフォルトの名無しさん
2008/08/06(水) 17:18:135つの要素で構成されたデータを5次元とすると、
各次元が次元の構成要素として成り立つのかどうか。
わかりやすく要素を名前、投稿日時、投稿内容の3つに絞ろう
これを一般的な3次元の座標に置き換えてみる
名前は、まぁ1つの次元と捕らえて良いだろう
投稿日時はどうか?利用者による投稿時間分布を考えれば、これもアリだ
さて、投稿内容はどうだろうか?
投稿内容をキーにして、利用者や投稿時間が多次元的に存在するかどうか。
データの正規化ってこういうことだよな?
5つの要素を5次元として考えたらひどいDBになるんじゃないか?
0839デフォルトの名無しさん
2008/08/06(水) 18:32:460840デフォルトの名無しさん
2008/08/06(水) 20:36:39配列の項目要素を多次元化して何か1つを指し示すのが多次元配列だろ?
もっと簡単な例で考えてみな
渋谷区->渋谷->1丁目->3番地->2号
ならすでに5次元配列だ
2次の要素が南青山になったりすると3次の丁目以降も変わる
4次の3番地が変わる事もある
で、最終的に号まで指定すると何かを指し示す事になる(住所そのものが目的にもなるけど)
掲示板はどうだ?
名前->メールアドレス->投稿日時->投稿内容->レス番
として管理する必要があるか?
これらは並列に並んでこそ1つのデータなわけだ
名前->メールアドレス->投稿日時
までが同じでその先が枝分かれするような事は偶然かSPAM的要因以外には無いだろ
そして、少なくとも投稿内容が配列の要素になる事だけはあり得ないな
0841デフォルトの名無しさん
2008/08/06(水) 21:11:350842デフォルトの名無しさん
2008/08/06(水) 21:54:37my %data = (
1 => { name=>"たろー", mail=>"sage\@sage.sage", date=>"2001/01/01" },
2 => { name=>"じろー", mail=>"sage\@sage.sage", date=>"2001/01/01" },
3 => { name=>"生きてた", mail=>"sage\@sage.sage", date=>"2001/01/01" },
4 => { name=>"うれぴー", mail=>"sage\@sage.sage", date=>"2001/01/01" },
);
print $data{1}{name};
print $data{1}{mail};
print $data{1}{date};
0843デフォルトの名無しさん
2008/08/06(水) 21:57:570844デフォルトの名無しさん
2008/08/06(水) 22:30:13次元を自由度という意味で使っているように見えるけど、この文脈だと誤解を与える。
0845デフォルトの名無しさん
2008/08/06(水) 22:38:48my $NAME = 0;
my $MAIL = 1;
my $DATE = 2;
my @data = (
["るどるふ", '[email protected]', '2001/01/01'],
["いっぱいあってな", '[email protected]', '2001/01/01'],
["ひゃくまんかい", '[email protected]', '2001/01/01'],
["いきたねこ", '[email protected]', '2001/01/01'],
);
print $data[0][$NAME];
0846デフォルトの名無しさん
2008/08/06(水) 22:55:47[a, b, c, d, e] ← 5次元空間の中の1点を指す5次元のデータ。
[a][b][c][d][e] ← 5次元空間のある範囲を埋める5次元配列。
0847デフォルトの名無しさん
2008/08/06(水) 23:22:15> 次元を自由度という意味で使っているように見えるけど、この文脈だと誤解を与える。
「自由度」が未定義なので意味不明。
0848デフォルトの名無しさん
2008/08/06(水) 23:23:18んで、この板IDないから誰がなに言ってるのかさっぱりわからんので
コテかトリップつけてくれorz
そもそも掲示板のデータてわざわざ全データを変数に取り込む必要なくね?
while(<$ファイルハンドル>){
my @データ = split /$区切り文字/,$_,$項目数;
#場合によってはハッシュに変換
出力処理(\@データ);
}
それともMLDBMでも使ってるのか???
仮に取り込む必要があっても
掲示板のレス番ならIDはほぼ隙間無く並べられてるはずなので
$data[$idx] = {...};か
$data[$idx] = [...];だろ
普通の配列にハッシュのリファレンスが入ってる
普通の配列に配列のリファレンスが入ってる
ってだけで次元とかまったく関係ない話だろ。
0849デフォルトの名無しさん
2008/08/06(水) 23:48:45ここは何かしらの目的があってそれを達成する方法を聞く所だろ
問題があってそれの解決方法でもいいけど
配列で5次元がどうだとか、perl関係ないんだからよそでやれよアホ
0850デフォルトの名無しさん
2008/08/07(木) 00:48:04少しも異常ということはなく普通だと思います。Perl land において少数派ではあるというだけで。
そしてそんなあなたのために、 CPAN が Variable::Strongly::Typed を用意して待っています。裸エプで。
0851デフォルトの名無しさん
2008/08/07(木) 01:25:48WebProg
http://pc11.2ch.net/php/
という、みんなにぴったりの掲示板があるよ!
0852デフォルトの名無しさん
2008/08/07(木) 01:57:35ζ /\__  ̄ \
ζζ / ~|
ζ | _____ ヽ
| ̄ ̄――-~  ̄ヽ
ζ / ヽ
ζζ /^ソヽ __/ ̄ ̄ヽ――〜^^\
ζ /  ̄ ̄ \
ζ \
/ζ _ /
ζζ 〜^^\,,_____,,__,/ ヾ/ヽ―ヽ___/
ζ / | ヾ /^ ヽ \
ζζ ヽ / / | |λ| | / ̄ ̄ ̄ ̄ ̄ ̄
ζ ヽ ヽヽ / | |/ //< 夏だな、ルパン
ζ | / ゞ |__/ \______
ζζ ヽ ーヘ―― | | / /
ζ | // ̄^~ ,/^ /―ヽ /
ζζヾ / /ヽ/ /_ _―― <
/|ゝ/ ヾヽw~ヾ/ ̄ ̄_ ̄ ̄ ̄ ̄\
/// | |/ ̄ ̄ ̄ ̄\ | /
, _从〃 / // // ヽ \
ヾヾ_ // ,/// | \
ヾ_// /~/ / ノ | |
彡 彡,,/w/ / __/ | |
/ /_ノ |
0853デフォルトの名無しさん
2008/08/07(木) 02:37:42foreach my $textbody ( $content =~ m{<td(?:\s[^>]*?)?>(.+?)</td>}gis ) {
print $textbody, "\n";
}
# foreach の条件部はリストコンテキスト。
# m//g はリストコンテキストではマッチ内容リストか、
# またはキャプチャがあればキャプチャ内容のリストを返す。
# スカラコンテキストでの挙動は宿題。調べりゃ分かる。
# <td> には属性が付いて来ることがあるかもしれない。
# <td> かもしれないし <TD> かもしれない。
# 少し丁寧にレキシカルな名前付きループ変数を使う。
# 他にも配慮した点があるかもしれない。探してみよう。
# 改良の余地があるに決まっているので挑戦してみよう。
# 思い付きで書いた。後悔とテストはしていない。
0854デフォルトの名無しさん
2008/08/07(木) 03:24:23sayと、~~について語って。
0855デフォルトの名無しさん
2008/08/07(木) 03:32:43レファレンス、デレファレンス、型グロブ、レポートフォーマット、
CGI全般
0856デフォルトの名無しさん
2008/08/07(木) 03:39:18use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
$|=1;
#----------------------------------
say "スライムが現われた!";
0857デフォルトの名無しさん
2008/08/07(木) 03:58:23Perlはswitch caseでなくて、
given whenになるの?
0858デフォルトの名無しさん
2008/08/07(木) 04:28:52use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
$|=1;
#----------------------------------
my $foo;
given ($foo) {
when (/^abc/) { my $abc = 1; }
when (/^def/) { my $def = 1; }
when (/^xyz/) { my $xyz = 1; }
default { my $nothing = 1; }
}
↑これを実行すると、
Use of uninitialized value $_ in pattern match (m//) at untitled2.pl line 18.
Use of uninitialized value $_ in pattern match (m//) at untitled2.pl line 19.
Use of uninitialized value $_ in pattern match (m//) at untitled2.pl line 20.
といわれます。$-の初期化なんてどうすればいいの?
0859デフォルトの名無しさん
2008/08/07(木) 04:43:000860デフォルトの名無しさん
2008/08/07(木) 06:13:16そんなことしたら警告が見れないじゃないですか。
それとも、警告が出ても、無視していい場合もあるの?
0861デフォルトの名無しさん
2008/08/07(木) 06:55:36なんすけど如何致します?
って事じゃねえの?手元に無いから確認でけんがさ。
0862デフォルトの名無しさん
2008/08/07(木) 13:08:29perldoc について調べてください。
お望みの情報はあなたのコンピュータの中にあります。
perldoc perlsyn の中の "Switch statements" の項をご参照下さい。
その他新機能については perldoc feature で確認することができます。
どうぞよろしくお願いします。
0863デフォルトの名無しさん
2008/08/07(木) 16:45:43これでいいの?
0864デフォルトの名無しさん
2008/08/07(木) 16:53:49だめなの?
0865デフォルトの名無しさん
2008/08/07(木) 16:56:540866デフォルトの名無しさん
2008/08/07(木) 17:06:56,,..- し、_,、_, - ' `ヽ、
/ \
/ /__ \ __ ヽ
/ ,,.. -ー/ - 、 ,..- 、 \ ー-`、ヽ.、
!,.-'' ..- '' ./ V ヽ .` Y むーし むーし
(,,.-''´ l ・ | ・ .i |
.| .! 八 ノ |
! .` ─ ´ ` ー ´ / お疲れ様でしたー
人 , ェェェ;、 ./
/ \ \ ゝ─ー' / / \
/ ` 、_` ─-----─''_´- "´ r''''''''つ
| . ̄r'''''''''つ ̄ | |
| | | | ゝ 丿
| | 丿.| フ
.\ ` " .| _ _ ,.イ
| `ー──────┴─'"´ ̄ /
と" ̄ ̄ ̄ ̄ ̄`ー-ー" ̄ ̄ ̄ ̄ ̄ ヽ
0867デフォルトの名無しさん
2008/08/07(木) 17:16:07ないんですか?
perldocは今よんでるところです
0868デフォルトの名無しさん
2008/08/07(木) 17:21:56my $foo = '' ;
0869デフォルトの名無しさん
2008/08/07(木) 17:29:53中身になんかを入れなさい、って意味の警告だったの?
0870デフォルトの名無しさん
2008/08/07(木) 17:36:34そうだけど…
0871デフォルトの名無しさん
2008/08/07(木) 17:37:31解消されたのか?w
>>861に書いた通りの筋書なら given 時に $_=$foo されて
当然 $_ は undef だった訳だが…
0872デフォルトの名無しさん
2008/08/07(木) 17:39:24いれときゃいいだろ。
0873862
2008/08/07(木) 22:02:17それはやってみたらすぐにわかりましたよね。^^
何かわからないことがあった時にはまず試してみて、試してうまくいかなかったら、perldoc や Web や本で調べてみて、それでわからなかったら質問、という順番にしてもらえると助かります。
試してすぐにわかることや、すぐに説明が見つかるようなことは、答えるほうもあまりおもしろくありません。試し方や調べ方を知っていれば、ほとんど誰でも解決できてしまうことだからです。
また、そういった種類のことで、たくさんの人が質問したり過去ログを読んだりする掲示板を埋めてしまうのは残念でもあります。
調べ方を身につければ、誰かがあなたの代わりに調べなくても済むようになり、あなたも回答を待たずに済みます。
ぜひよろしくお願いします。
0874デフォルトの名無しさん
2008/08/07(木) 22:23:38投稿の前には読みづらくないか試してみて、読みづらかったら改行などを入れてみて
それで読みやすくなったら投稿という順番にしてもらえると助かります。
明らかに改行すべきレスは読んでいる方も面白く有りません。
そういったレスでスレを埋めてしまうのは残念です。
改行の仕方を覚えればきれいに読めるようになり汚いレスをみずにすみます。
是非よろしくお願いします。
0875デフォルトの名無しさん
2008/08/07(木) 22:35:19my $foo = undef;
print 'Switch statements を調べさせても解決せんだろ' if $foo =~ /.*/;
0876デフォルトの名無しさん
2008/08/07(木) 23:52:30と代入した後、
if ( $str =~ /(.+)@(.+)/ ) {
$a = $1;
$b = $2;
}
とやっても、パターンマッチしません。
パターンマッチ中の @ を \@ としても駄目でした。
$str に代入文字列の @ を \@ と置き換えるとマッチしました。
しかし、実際、ここには、メールのログからパースしたメール
アドレスがそのまま入ってくるので、\@ とは出来ません。
どうやったらうまくマッチさせられるでしょうか?
0877862
2008/08/08(金) 00:02:53>>875
>>857 に対しては有効だと思います。いわゆる switch を Perl で実現する構文についての説明そのもので、それが given () { when () {} } であること及びその詳細が明記されています。
>>858 に対しても同様で、"given(EXPR)" will assign the value of EXPR to $_ within the lexical scope of the block, から始まる部分に警告内容に関わる動作仕様について述べられています。
うまくいけば参考にして解決できますし、よしんば解決に至らなかったとしても、perldoc を引く練習にはなるはずです。
役に立っていてくれるとうれしいです。
0878デフォルトの名無しさん
2008/08/08(金) 00:05:08まあとりあえずこれを実行してみろ。
$str = "[email protected]";
print $str, "\n";
その次はこれな。
@bbb = ("X", "Y", "Z");
$str = "[email protected]";
print $str, "\n";
0879デフォルトの名無しさん
2008/08/08(金) 00:09:16m'(.+)@(.+)' をどうぞ。
0881880
2008/08/08(金) 00:13:130882デフォルトの名無しさん
2008/08/08(金) 00:48:28問題点が判り、やりたいパターンマッチが出来ました!
ありがとうございました。
0883デフォルトの名無しさん
2008/08/08(金) 01:59:34可能性(2)>>872
可能性(3)>>875
さて、どれが正解だろう?
0884デフォルトの名無しさん
2008/08/08(金) 02:11:07可能性(2)>>872 → 解決された
可能性(3)>>875 → 解決されなかった
(1)と(2)では、
双方とも解決はできたが、
読んでわかりやすいのは(1)かな?
0885875
2008/08/08(金) 02:22:45use warnings して何を言われてたのか気付いて欲しかっただけで。
0886デフォルトの名無しさん
2008/08/08(金) 02:42:35そうしたら親切ていねいなチュートリアルくらい
作るだろう。人口が増えた方がもうかるから。
0887デフォルトの名無しさん
2008/08/08(金) 03:21:10単純で羨ましいです
0888デフォルトの名無しさん
2008/08/08(金) 03:40:000889デフォルトの名無しさん
2008/08/08(金) 04:20:17FORTRANじゃあるまいし。
懐古趣味のオッサン言語やな。
0890デフォルトの名無しさん
2008/08/08(金) 04:22:390891デフォルトの名無しさん
2008/08/08(金) 04:58:540892デフォルトの名無しさん
2008/08/08(金) 06:58:120893デフォルトの名無しさん
2008/08/08(金) 08:45:32foreachは有料課金アイテムで、
ゲーム内通貨で50ゴールド。
0894デフォルトの名無しさん
2008/08/08(金) 08:46:04おまいらって時給5,000円なの?
すごいね。
0895デフォルトの名無しさん
2008/08/08(金) 09:46:20英語にしたら成功したんだけど。
0896デフォルトの名無しさん
2008/08/08(金) 09:49:42require 'encode("cp932", $file)';
↑これだとだめなのかな?
0897デフォルトの名無しさん
2008/08/08(金) 10:12:520898デフォルトの名無しさん
2008/08/08(金) 10:18:590899デフォルトの名無しさん
2008/08/08(金) 12:37:43事情も知らずに他人の仕事内容を強制するような意見は見苦しい。
0900デフォルトの名無しさん
2008/08/08(金) 12:41:300901デフォルトの名無しさん
2008/08/08(金) 13:02:070902デフォルトの名無しさん
2008/08/08(金) 13:19:320903デフォルトの名無しさん
2008/08/08(金) 13:49:54それはマッサージ師に
「おまいらって時給6,000円なの?」
って聞いているようなもんだぞ。
0904デフォルトの名無しさん
2008/08/08(金) 21:23:33requireできないの?
それとも、できるの?
0905デフォルトの名無しさん
2008/08/08(金) 21:24:28最終的にはレンタルサーバーにアップロードして
urlの一部になる可能性があるわけだから、全部
英語にしておいたほうがいいの?
0906デフォルトの名無しさん
2008/08/08(金) 21:26:300907デフォルトの名無しさん
2008/08/08(金) 21:37:34すべての問題を解決するPerl6は
どうしちゃったんだ?
ちんぽ握ったまま、もう10年近くまってるんだが
0908デフォルトの名無しさん
2008/08/08(金) 21:47:500909デフォルトの名無しさん
2008/08/08(金) 21:56:37use strict;
use warnings;
use threads;
use IO::Socket;
use IO::Select;
my $port1 = 7000;
my $port2 = 7001;
my $sock1 = IO::Socket::INET->new(LocalPort => $port1, Listen => SOMAXCONN, Proto => 'tcp', Reuse => 1,);
my $sock2 = IO::Socket::INET->new(LocalPort => $port2, Listen => SOMAXCONN, Proto => 'tcp', Reuse => 1,);
my $selecter = IO::Select->new;
$selecter->add($sock1);
$selecter->add($sock2);
0910909の続きです
2008/08/08(金) 21:57:50{
my ($active_socks) = IO::Select->select($selecter,undef,undef,undef);
foreach my $sock ( @{ $active_socks } )
{
if( $sock == $sock1 )
{
my $thr = threads -> create( \&thr1 );
$thr -> detach();
}
elsif( $sock == $sock2 )
{
my $thr = threads -> create( \&thr2 );
$thr -> detach();
}
}
}
sub thr1()
{
my $new_sock = $sock1->accept;
$new_sock->close();
}
sub thr2()
{
my $new_sock = $sock2->accept;
$new_sock->close();
}
0911デフォルトの名無しさん
2008/08/08(金) 22:09:00つかwhile(1){}で囲む意図は?(そんなもんなのかな?IO::Socket知らないから…)
0912909の続きです
2008/08/08(金) 22:12:20タブが消えてしまい読みづらいので全角スペースで置き換え、while以降を再度書き込みます。
while( 1 )
{
my ($active_socks) = IO::Select->select($selecter,undef,undef,undef);
foreach my $sock ( @{ $active_socks } )
{
if( $sock == $sock1 )
{
my $thr = threads -> create( \&thr1 );
$thr -> detach();
}
elsif( $sock == $sock2 )
{
my $thr = threads -> create( \&thr2 );
$thr -> detach();
}
}
}
sub thr1()
{
my $new_sock = $sock1->accept;
$new_sock->close();
}
sub thr2()
{
my $new_sock = $sock2->accept;
$new_sock->close();
}
0913デフォルトの名無しさん
2008/08/08(金) 22:39:53置き換えるスクリプトは、s///?
それとも、tr///?
0914デフォルトの名無しさん
2008/08/08(金) 22:40:58無いんじゃ?
0915デフォルトの名無しさん
2008/08/08(金) 22:41:44やってみれ。
0916デフォルトの名無しさん
2008/08/08(金) 22:42:10s///
0917デフォルトの名無しさん
2008/08/08(金) 22:49:18こういう話に見えてしまったのは酒のせいなのか
% perl 909.pl &
0918デフォルトの名無しさん
2008/08/08(金) 22:55:28$ とか、C:> とかが出ないで待ち状態になる、って意味かな?
0919デフォルトの名無しさん
2008/08/08(金) 23:56:520920デフォルトの名無しさん
2008/08/09(土) 11:00:56どっちのフォルダにつっこめばいいの?
@incを見ると、libと、site/libと、2つのフォルダを
見てるようなんだけど。そのうちのどっちかに
突っ込めばいいんだよね?
で、普通はどっちに入れておくのかな?
0921デフォルトの名無しさん
2008/08/09(土) 11:01:35requireで呼び出せない、っていうことで
FAですか?初心者向けの解説サイトとかに
書くかもしれないんで、なるべく正確に答えてください。
0922デフォルトの名無しさん
2008/08/09(土) 11:05:02絶対に、@_を使わないとだめなの?
0923デフォルトの名無しさん
2008/08/09(土) 11:46:59その程度で解説サイトとかやめてくれ
0924デフォルトの名無しさん
2008/08/09(土) 11:48:11引数をうけるとき、かならず
($c)=@_;
ってしないとだめなのな。
うっかり
$c=@_;
って書いたら、配列の格納されている要素の個数が
代入されてしまって、原因突き止めるのに1時間かかったよ。
0925デフォルトの名無しさん
2008/08/09(土) 12:02:51どんどん2chの水準に近づいている。
webの熱死は近い。
0926デフォルトの名無しさん
2008/08/09(土) 12:39:18サイトを作るのは構わんが、絶対に嘘は書くなよ
しっかりと調べて書け
じゃないとお前の嘘を信じてバカを見る奴が出てくる
0927デフォルトの名無しさん
2008/08/09(土) 12:59:330928デフォルトの名無しさん
2008/08/09(土) 13:31:45プログラマなんかは大なり小なり癖のある人が多いんじゃない
0929デフォルトの名無しさん
2008/08/09(土) 13:32:56何ができて何ができないか、原理も含めて理解せずに解説サイトなんか作るんじゃねえ、迷惑だ。
ちなみにrequireで読み込めるか否かは、そのファイルをopenで読み込めるか否かにかかってる。
日本語ファイル名の扱いはものすごく環境依存性が高いので、正確な説明なんて無理。
0930デフォルトの名無しさん
2008/08/09(土) 13:39:53自作のファイルについては、それがアプリケーション固有のものなら、それを置いてあるディレクトリに、環境変数PERL5LIBや-Iオプション、use lib等で@INCを操作してパスを通す。libやsite/libには入れない。
汎用的に作ったものについては、h2xsでモジュールの雛形を作成し、その中に自作のコードを突っ込んで、perl Makefile.PL、make、make installするとPerlのパッケージ管理機構がよきにはからってくれる。
0931デフォルトの名無しさん
2008/08/09(土) 13:41:29「ボクのパソコンだとこうすれば出来ました」
って情報で十分だ。本当か嘘かは見た側が判断すればいい。
0932デフォルトの名無しさん
2008/08/09(土) 15:00:38>初心者向けの解説サイトとかに
>書くかもしれないんで、なるべく正確に答えてください。
初心者向け解説なら、>>4 のテンプレにある。
他の人も言っていることだが、
まず、自分自身が初心者であることをよく認識することだな。
0933デフォルトの名無しさん
2008/08/09(土) 15:59:040934デフォルトの名無しさん
2008/08/09(土) 16:04:231を書けって書いてある書物と、
1;を書け、って書いてあるサイトと、
説明がバラバラです。
どっちが正しいですか?
0935デフォルトの名無しさん
2008/08/09(土) 16:10:54クックック、、、
まだ、、、私のことを「初心者」だと、、、思っているのか、、、?!
この私はすでにランダムに数値を生成し、
intで整数化し、その生成した数値をpushで
配列に投入し、しかも、その過程をwhileループで
10回繰り返し、しかもその結果をsay関数で
画面に出力するところまできているっ!!!
つまりっ、、、キサマこそが素人っ、、、、!!!
0936デフォルトの名無しさん
2008/08/09(土) 16:51:25個人的に「できるのかできないのかどっち?」「FAですか?」の人は初心者枠に入れてない。
0937デフォルトの名無しさん
2008/08/09(土) 17:14:580938デフォルトの名無しさん
2008/08/09(土) 17:51:34あのさあ、なんか一人で盛り上がってるけど
お前だけだよマジに成ってんの、他の人はそんなノリノリじゃないから
見苦しいよそういう書き込み、その口調で友達とかに話しかけてみれば?
0939デフォルトの名無しさん
2008/08/09(土) 18:14:31「目を合わせちゃダメよ! いないフリいないフリ」
0940デフォルトの名無しさん
2008/08/09(土) 21:01:51透明アボーンできねぇだろ
0941デフォルトの名無しさん
2008/08/09(土) 23:36:05せっかく空気読んで要素の個数返してるのに、、、っていう perl の愚痴が聞こえてきそうw
0942デフォルトの名無しさん
2008/08/10(日) 01:28:17>>927 のコメントもどうかとは思うけれど、「癖」なんつーレベルじゃないのも確かだ。
社会生活営めねーだろこれ。
0943デフォルトの名無しさん
2008/08/10(日) 04:28:49だなw
引数1つなら
$c = shift;
で充分だろうに
0944デフォルトの名無しさん
2008/08/10(日) 04:32:38「何か」みたいな。
「デフォルトの配列の先頭から
要素を一個取り出して、$cに入れときますねご主人様」
みたいな。
0945デフォルトの名無しさん
2008/08/10(日) 05:09:36$c = shift;
$c = $_[0]; # $[ == 0
意図してないんだろうけど使い回せるセリフにしてあるな
0946デフォルトの名無しさん
2008/08/10(日) 05:43:41strictの時、
ハッシュもつかいはじめるまえに
初期化しないとだめなの?
もしそうなら、ハッシュの初期化ってどうやるの?
配列の初期化はこのまえおそわったんだけど。
0947デフォルトの名無しさん
2008/08/10(日) 07:00:41->
を使うと、何か問題ある?
say "$a -> $b";
みたいな。
0948デフォルトの名無しさん
2008/08/10(日) 07:07:06use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
$|=1;
#----------------------------------
my $a;
my $b;
my %c;
my $d;
for ($d=1;$d<=10;$d=$d+1){
$a=int(rand(10000)) +1;
$b=int(rand(10000)) +1;
$c{$a}=$b;
say "($d)$a -> $b";
}
↑これってsay関数の””ダブルクオーテーション内部で()パーレン使ってるんだけど、
問題ある?無い?
問題あるけど、たまたま、うまく動いた?問題ないから動いた?
0949デフォルトの名無しさん
2008/08/10(日) 07:34:27use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
$|=1;
#----------------------------------
say "\n";
say "はーい、それでは、生徒番号で2人組み作ってー\n";
my $a;
my $b;
my %c;
my $d;
for ($d=1;$d<=10;$d=$d+1){
$a=int(rand(10000)) +1;
$b=int(rand(10000)) +1;
$c{$a}=$b;
}
my $count=1;
foreach my $key (keys(%c)) {
my $value = $c{$key};
say "($count)$key -> $value";
$count++;
}
print "\n\n";
say "先生!できました!\n";
0950デフォルトの名無しさん
2008/08/10(日) 15:50:50配布しようと思ってperlでカウンターなどを作っているのですが
ユーザー変数(パスワードとか背景色とか)って英語でどう書いたらいいでしょうか?
あとシステム変数(ユーザーが変えることが出来ない変数)も。
一応user variablesとsystem variablesとしてるのですが
プロの間ではこう書くみたいな定番な書き方はありますでしょうか?
ちょっとわかりにくくなったと思うので例
#!/usr/bin/perl
# user variables ←ここの名前と
$pass = 'abc123'
# system variables ←ここの名前を英語でかっこよく出来れば素人が知らないような単語で書きたい。
$a = $pass
0951デフォルトの名無しさん
2008/08/10(日) 16:41:56内容が伝わる名前で、且つアホと思われない名前を好きな様に書けばいいんじゃね?としか言えん
俺から見たら『システム変数』、『ユーザー変数』とか日本語で解説と共に段落とって固めて書いててくれた方が見やすくて助かる
あとperlや他の言語もそうだけど、プロは居てもそいつらの間に定番なんて無いと思うぞ
せいぜいグローバルは大文字で書くのが通例とか、その程度しかない
会社によって命名規則が星の数ほどあるだけだ
お前さんの望みは配布ソース開いた人に対して
素人が知らないかっこいい単語書いててこの人かっこいいなぁとか思われたい訳なんだから、質問の仕方が少しおかしいぞ
0952デフォルトの名無しさん
2008/08/10(日) 16:53:380953デフォルトの名無しさん
2008/08/10(日) 17:21:17「ハンガリアン記法」<- ぐぐれ
とか書き方はあるにはあるよ。
0954デフォルトの名無しさん
2008/08/10(日) 17:24:11$aは$[や$\と同じで特殊変数だから本来の用途以外に転用するのはよくない。
0955デフォルトの名無しさん
2008/08/10(日) 17:31:55「ついでに変数名も」っていう風に読み取れなくは無いけど
変数名の付け方ならぐぐれば一杯出てくるはず
あと$aって特殊変数だったのか、知らなかった
0956952
2008/08/10(日) 17:33:17お題はコメント行のほうなんだと思いますよ。矢印で指定されてる箇所。
0957デフォルトの名無しさん
2008/08/10(日) 17:33:19配列変数はスカラーコンテキストにおいて個数を返す。
一般的な方法 -> shiftとか添え字とかなんか
>>934
真を返すだけなので正しいとか別に。最後なのでセミコロンは省略できる。
全角で書かくと文字コードが違います。気持ち悪いです。
>>946
strictの仕様をよく読むよろし。
あと初期化じゃなくてただの宣言でいい。
>>947
printの中とか何か問題とか意味がわからないけど、
ダブルクウォートコンテキストに置いてはデリファレンスが優先される。
0958950
2008/08/10(日) 17:36:46コメントの行の書き方です。
日本語だったら自分でも考えられるのですが英語はどうも苦手で。
variablesとかsetupとかdifineとかいろいろあるのですが
プロのみなさんの間では何が一般的なのかな〜と思って質問してみました。
0959デフォルトの名無しさん
2008/08/10(日) 17:38:37->
をかくと、こっちはただの矢印の意味で
表示させたいだけなのに、perlタンが勝手に
特殊な意味で受け取ってしまうのではないか?
と心配なのです。
デレファレンスがこの場合、可能性があると
いうことですか?
0960デフォルトの名無しさん
2008/08/10(日) 17:40:22日本語で書けばいいじゃん
0961デフォルトの名無しさん
2008/08/10(日) 17:51:28Perlは特定の誰かに合わせて仕様を変えない仕様で、調べてもらうことを前提に作られてます。
せっかくデリファレンスという餌を与えられたのに。。。
0962デフォルトの名無しさん
2008/08/10(日) 17:52:41文字コードの日本語まわりの処理ってなんでこんなにクソなの?
マジでいい加減にしろよ。クソ野郎。
誰の責任だよ。出てこい。一発殴らせろ。
0963デフォルトの名無しさん
2008/08/10(日) 18:04:02あと、UNICODEコンソーシアムでまともな提言も出来ずに支那文字、チョン便所文字と一緒くたにされた日本のヘタレ研究者。
0964デフォルトの名無しさん
2008/08/10(日) 21:03:26h2xs -X モジュール名
で拡張モジュールの雛形を作ってくれるので、それを見てみれば?
あんまり参考にならないかもしれないけど。
(というか、>>958のような区分にはなってない)
0965デフォルトの名無しさん
2008/08/10(日) 21:14:30> 英語はどうも苦手で。
> difineとかいろいろあるのですが
なにげにワロタ
0966デフォルトの名無しさん
2008/08/10(日) 23:39:310967デフォルトの名無しさん
2008/08/11(月) 01:02:030968デフォルトの名無しさん
2008/08/11(月) 02:31:440969デフォルトの名無しさん
2008/08/11(月) 08:15:50英語圏でないって時点で、プログラミングのハンデがあるのは仕方ないよ。
日本人はプログラミングの本道とは外れたしょーもない部分で引っかかって生産性を損失してる部分が多すぎる。
0970デフォルトの名無しさん
2008/08/11(月) 08:42:42動いたのですが、これって書かなくてもいいってこと?
0971デフォルトの名無しさん
2008/08/11(月) 08:43:13->という記号を安易に使ってもいいの?
それともだめなの?
0972デフォルトの名無しさん
2008/08/11(月) 09:22:55最後に書いた文が式でその値が真なら動くよ。
初期化の成功失敗を伝えるために積極的に値を出し分けているんじゃなければ
最後に1;と書いといたほうが安心だし余計なところに頭を使わないですむので
みんなそうする習慣になっているというだけの話です。
0973デフォルトの名無しさん
2008/08/11(月) 09:30:20安易に使うのはいかなる場合でも感心しないな。
% perl -e '$x->{foo}="hoge"; print "$x, $x->{foo}, ${x}->{foo}, ->$x->{foo}"'
HASH(0x934e880), hoge, HASH(0x934e880)->{foo}, ->hoge
0974デフォルトの名無しさん
2008/08/11(月) 09:46:24半角スペースを開ければ問題ない?
- >
みたいな。
ようはデレファレンスとして解釈されてしまうんでしょう?
こっちは矢印記号として使いたいわけですが。
0975デフォルトの名無しさん
2008/08/11(月) 09:47:50でもさ、requireで呼び出して使う場合もあるし、
呼び出さないで単独でファイル単体で実行させたい
場合もあるし、単独で使う場合って、ファイルの最後に
1;
を書いておいても、なんら問題はないの?
余計な記号があると心配じゃん。
0976デフォルトの名無しさん
2008/08/11(月) 10:31:17プログラムを組んでみようと思って、こう書いたんだ。
use warnings;
use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
$|=1;
#----------------------------------
my $a;
for ($a=0;$a<=100;$a=$a+1){
say $a." ".chr($a);
}
0977デフォルトの名無しさん
2008/08/11(月) 10:32:22そんで、こんどは、テキストファイルに出力してみようと思ったのさ。
そんで、次のコードを書いた。
use warnings;
use strict;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
$|=1;
#----------------------------------
my $a;
open (FILE,'> abc.txt') or die "$!";
for ($a=0;$a<=100;$a=$a+1){
say FILE $a." ".chr($a);
}
close (FILE);
0978デフォルトの名無しさん
2008/08/11(月) 10:33:39utf-8で開いてみた。そしたら、文字番号0〜32までが、
空白で、表示されてないのさ。
一方、DOSプロンプトに出したときは、文字番号0〜32も
変な記号でいろいろ出ていたのに。なんで?
0979デフォルトの名無しさん
2008/08/11(月) 10:51:54配列Aを出して、mapで変換して、配列Bを表示する。
そんで、変換のロジックはブラックボックスにしておいて、
AとBだけを見せて、変換ロジックを推定する。
あたれば、得点。こういうゲーム。
0980デフォルトの名無しさん
2008/08/11(月) 11:38:20# test for ActivePerl 5.8.8
use LWP;
my $m =LWP::UserAgent->new;
my $w = $m->get("http://www.2ch.net/");
print $w->content;
を実行すると表示できます。2chのcharsetはsjisで$w->contentは
sjisを返します。次にuse encoding文を付け加えます。
# test for ActivePerl 5.8.8
use encoding 'cp932';
use LWP;
my $m = LWP::UserAgent->new;
my $w = $m->get("http://www.2ch.net/");
print $w->content;
これは文字化けして表示できません(エラーも起こします)
$w->contentは相変わらずsjisを返してきます。
print文はsjisにもかかわらずutf8からsjisへ変換しようとして
エラーを起こすようです。
質問は
$w->contentがutf8を返すようにできないかというものです。
言い換えるとLWPのオブジェクトの文字列の保持をutf8とするように
設定できないかということです。
よろしくお願いします
0981デフォルトの名無しさん
2008/08/11(月) 12:08:26conentはバイト列という決まりなのだが、君のような人のためにdecoded_contentというのが用意されている。
perldoc HTTP::Message参照
0982デフォルトの名無しさん
2008/08/11(月) 12:36:31>できあがったabc.txtを、サクラエディタで、
>utf-8で開いてみた。
サクラエディタって使ったことないけど、ファイル開くたびに
文字コード指定するの?それなら、sjis で開かないとダメじゃん。
utf-8にしたいなら、
binmode STDOUT => ":encoding(cp932)";
の行を削除。
0983デフォルトの名無しさん
2008/08/11(月) 12:55:49うまくいきました。ありがとうございます。
# test for ActivePerl 5.8.8
use Encode;
use LWP;
my $m =LWP::UserAgent->new;
my $w = $m->get("http://www.2ch.net/");
print encode('cp932', $w->decoded_content);
0984デフォルトの名無しさん
2008/08/11(月) 12:55:540985デフォルトの名無しさん
2008/08/11(月) 18:33:14なんで?
Windows上で、
perlから、txtファイルに出力すると、
絶対シフトJISになっちゃうの?
だから、シフトJISと指定して読み込まないと
だめなの?
binmode STDOUT => ":encoding(cp932)";
↑もしかして、これって、シフトJISで出力する、って意味だったの?
だからDOS窓では問題なく出力できてたの?
0986デフォルトの名無しさん
2008/08/11(月) 18:39:010987デフォルトの名無しさん
2008/08/11(月) 18:53:330988デフォルトの名無しさん
2008/08/11(月) 19:04:230989デフォルトの名無しさん
2008/08/11(月) 19:09:370990デフォルトの名無しさん
2008/08/11(月) 19:12:46サクラエディタが制御文字を表示してないだけでないの?
0991デフォルトの名無しさん
2008/08/11(月) 19:12:52Perlについての質問箱 37箱目
http://pc11.2ch.net/test/read.cgi/tech/1218449440/
0992デフォルトの名無しさん
2008/08/11(月) 19:35:15,r´⌒ヽ,⌒ヽ,ヽ
(⌒)、 .人 λ\、 ._____
\. \ 、 ヽ./ ー ー\
|\ \ ヽ./ ( ●) ( ●)
| \ \ / (__人__) \ はいはい、どーもすみませんでした
|. \ | ` ⌒´ |
. |. |.\_ノ\ /
. |. | | \______/
. | ) .| . . ̄ ̄
. | | .|
| |.| .|
. | | .| .|
/ / / ヽ,
(__ノ ヽ、__つ
0993デフォルトの名無しさん
2008/08/11(月) 19:35:48猫マナー猫マナー猫マナー猫マナー猫マナー猫マナー
猫マナー猫マナー猫マナー猫マナー猫マナー猫マナー
猫マナー猫マナー猫マナー猫マナー猫マナー猫マナー
●))) コロコロー
ーナマ猫ーナマ猫ーナマ猫ーナマ猫ーナマ猫ーナマ猫
ーナマ猫ーナマ猫ーナマ猫ーナマ猫ーナマ猫ーナマ猫
ーナマ猫ーナマ猫ーナマ猫ーナマ猫ーナマ猫ーナマ猫
コロコロー (((●
猫マナー猫マナー猫マナー猫マナー猫マナー猫マナー
猫マナー猫マナー猫マナー猫マナー猫マナー猫マナー
猫マナー猫マナー猫マナー猫マナー猫マナー猫マナー
0994デフォルトの名無しさん
2008/08/11(月) 19:36:22普通は、『あのう、すいませんけれども氏んでくれませんか?』とか
『あなたはには、氏ぬという選択肢もありますよ』とか言うものですよ、
あなたみたいに最初から喧嘩腰だと、
言われた方は『じゃぁ氏んでみようかな』とかいう気持ちがなくなるものです。
まずは、親切丁寧に人に氏んでと頼むべきだと思いますよ。
そこから、人の輪と協調が生まれ、『よーし氏んでみるか』とか
という気持ちが生まれるわけです。
0995デフォルトの名無しさん
2008/08/11(月) 19:36:55/'''''' u ゚ '''''':::u:\
|(一),゚ u 、(一)、゚.|
| 。 ,,ノ(、_, )ヽ、,, u.:::| 最新型の扇風機って暑いんだな
〃 ̄ヽ 〜 | u ` -=ニ=- ' .:。::| なんか、オレンジ色に光ってるし
r'-'|.| O | 〜 \_゚`ニニ´ _::::/
`'ーヾ、_ノ 〜 / ゚ u 。 \
| ,| |゚ / ・ ・ ヽ |
| ,| | | 。 ゚ u |゚ |
| ,| \\=====/ノ
,-/ ̄|、 (m) (m)
ー---‐' (__)(__)
0996デフォルトの名無しさん
2008/08/11(月) 19:37:29ポニョ. | |\
ウ…ウーン… ∧_∧ | | \
___ _∩∀゚∩) | | |
| __ ( ;´д`) ̄|ヽ) | | |
|\⌒⌒⌒⌒⌒⌒\ \| |
\ \ \ \ |
\ \ \ \|
\ \|⌒⌒⌒⌒⌒⌒⌒|
\ |_______|
↓翌日の頭の中
ポーニョポーニョポニョ::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::ポーニョ:::::::::::::::::::::::::::
:::::::::::::::(>'A`)> ウワァァァァ :::::::
:::::::::::::::( へへ :::::::::::::::::::::::::::::::::
:ポーニョ:::::::::::::::::::::::::ポーニョ::::::::::::::::::::::::::
::::::ポーニョ:::::::::::::::::::::::::::::::::::::::::::::::::::
0997デフォルトの名無しさん
2008/08/11(月) 21:03:31これって何かの病気ですか?
医者に診せたほうがいいでしょうか?
0998デフォルトの名無しさん
2008/08/11(月) 21:12:58>>997 は女医に診せてサマリ提出汁。
1000デフォルトの名無しさん
2008/08/11(月) 21:50:4410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。