Perlについての質問箱 31箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/06/11(月) 03:29:47"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
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3
前スレ
Perlについての質問箱 30箱目
http://pc11.2ch.net/test/read.cgi/tech/1173880452/
リンク集は>>2-3
過去スレは>>4
0002デフォルトの名無しさん
2007/06/11(月) 03:30:27Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0003デフォルトの名無しさん
2007/06/11(月) 03:31:08CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2007/06/11(月) 03:31:491 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/
21 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/
0005デフォルトの名無しさん
2007/06/11(月) 03:41:440006デフォルトの名無しさん
2007/06/11(月) 03:50:140007デフォルトの名無しさん
2007/06/11(月) 14:44:50次に読むとしたら、「続・初めてのPerl」と「プログラミングPerl〈VOLUME1〉ではどちらがオススメでしょう?
お金があまり無いのでどちらかしか買えません。
0008デフォルトの名無しさん
2007/06/11(月) 14:48:51そのあとにまだPerlの言語仕様が知りたくなったらperldocを片っ端から読め
0009デフォルトの名無しさん
2007/06/11(月) 15:06:27では「続」を買ってみます。
Amazonの関連本見てて「Perlベストプラクティス」とかいうのも面白そうだなと。
「続」読み終わったらそれ買おうかな。
0010デフォルトの名無しさん
2007/06/12(火) 03:24:12ベストプラクティスはいいよ。
ぜひ買えw
0011デフォルトの名無しさん
2007/06/12(火) 03:44:55もうみんなベストプラクティスを買いましたよ。
0012デフォルトの名無しさん
2007/06/12(火) 15:00:550013デフォルトの名無しさん
2007/06/12(火) 15:01:440014デフォルトの名無しさん
2007/06/12(火) 15:12:390015デフォルトの名無しさん
2007/06/12(火) 15:14:280016デフォルトの名無しさん
2007/06/12(火) 15:17:33無駄な容量を使用しないように配列のインデックスだけでやろうとして、
ソートは基数ソートで構築しようとしていました。
0017デフォルトの名無しさん
2007/06/12(火) 15:24:49とりあえずsaryというのは知ってるの?
だんだん問題を思い出してきた。ソート地獄なんだっけ。
saryも「素朴なアプローチ」でしかないんだよな。
2001年に辞書ハッカーの方々のあいだでsuffix arrayが盛り上がった
ことがあって、わたしゃその時その人たちがいろいろ書き散らしたツール群を
使っています。
001812
2007/06/12(火) 15:43:46saryとsufaryはsuffixを構築する部分はCで書かれているようでして、
出力されたファイルがバイナリだったので、ソースのどこを書き換えればいいんだ・・という状況です。
001912
2007/06/12(火) 15:55:210020デフォルトの名無しさん
2007/06/12(火) 15:55:23何が問題なのかわからない。インデクサの出力が、
バイナリ以外の何である可能性があるというのか?
002112
2007/06/12(火) 17:41:220022デフォルトの名無しさん
2007/06/12(火) 20:34:56perlモジュールって存在しますか?
あるようでしたらモジュール名を教えてください。有償でも構いません。
PDFLibでは出来ませんでした。
PDFJは新規なら可能ですが、既存のものからは不可能でした。
0023デフォルトの名無しさん
2007/06/14(木) 14:54:25@A = ( a, to, t, toa);
@A = sort @A;
とすると結果は
a,t,to,toaとなりますが、これをa,toa,to,tとsortするにはどうすればいいでしょうか。
アルファベット順にソートしてほしいのですが、文字列が長いほうが先にきて欲しいです。
0024デフォルトの名無しさん
2007/06/14(木) 15:51:21my @A = qw(a to t toa);
@A = sort comp @A;
print "@A";
sub comp {
my($p, $x, $y);
do {
$x = substr $a, $p, 1;
$y = substr $b, $p, 1;
return $y cmp '' if $x eq '';
return '' cmp $x if $y eq '';
} while($p++, $x eq $y);
return $x cmp $y;
}
0025デフォルトの名無しさん
2007/06/14(木) 17:10:31ありがとうございます!参考にさせてもらって正規表現で作って見ました。
sub sort_length{
my ($a, $b) = @_;
#同じ文字列;
if($a =~ /^$b$/)
{
return $a cmp $b;
}
#途中まで同じ文字列で$aの方が長い;
elsif($a =~ /^$b/)
{
return '' cmp $a;
}
#途中まで同じ文字列で$bの方が長い
elsif($b =~ /^$a/)
{
return $b cmp '';
}
else
{
return $a cmp $b;
}
}
substrは(処理が重いから?)あまり使わないほうがいいみたいなイメージがあったので正規表現にして
みたのですが、どうでしょうか?
あとこの(ソートの仕方の)関数名に何か良い名前はないでしょうか。
なかなか良い名前が思い浮かばない・・・。
0026デフォルトの名無しさん
2007/06/14(木) 17:26:58普通にsubstrつかえよ。
0027デフォルトの名無しさん
2007/06/14(木) 17:44:59横レスだが、単なるベタ比較に名前なんかないよw
名前が付くのは「シュワルツ変換」とか「シャチ泳ぎ」とか定番の手法
ちなみに "" cmp $a とか処理のムダだから、素直に-1とか与えたら?
シュワルツ変換で例を書こうかと思ったけど、まあ御参考までに。
@A = sort { $a eq $b ? -1
:$a =~ /^$b/ ? -1
:$b =~ /^$a/ ? 1
: $a cmp $b } @A;
0028デフォルトの名無しさん
2007/06/14(木) 17:44:59sub compare {
if($a eq $b) {
return 0;
} elsif(length $a < length $b) {
return $a cmp substr($b, 0, length $a) || 1;
} elsif(length $a > length $b) {
return substr($a, 0, length $b) cmp $b || -1;
}
return $a cmp $b;
}
0029デフォルトの名無しさん
2007/06/14(木) 17:47:51$a eq $b ? 0 だよ。
0030デフォルトの名無しさん
2007/06/14(木) 17:48:31っ \Q
0031デフォルトの名無しさん
2007/06/14(木) 17:53:01他はベンチとってみなきゃ分らんが
0032ベンチ厨
2007/06/14(木) 17:58:51timethese undef, {
24=>sub{ my@a=sort comp24 qw/a to t toa/ },
27=>sub{ my@a=sort comp27 qw/a to t toa/ },
28=>sub{ my@a=sort comp28 qw/a to t toa/ }
};
>Benchmark: running 24, 27, 28 for at least 3 CPU seconds...
>24: 2 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 55973.25/s (n=175756)
>27: 3 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 21100.32/s (n=66255)
>28: 2 wallclock secs ( 3.17 usr + 0.00 sys = 3.17 CPU) @ 104963.11/s (n=332943)
うむ。激重ってほどでもないが、重いな。
0033デフォルトの名無しさん
2007/06/14(木) 18:20:39そういうのを全然しらなくて、普通にEUCと同じような感覚で、ファイルのencodeはutf-8にしたり、
GDBMのキーにいれたりと、utf8な文字列をそのままバリバリ使ってしまっていますが、
とりあえず、期待通りの動作はしているようです。
use utf8やEncodeとかいれると修正箇所が多すぎて逆に問題がおきそうなんですが、
それでも、治した方がいいんでしょうか?
Perlの5.8.8を使ってます。
0034デフォルトの名無しさん
2007/06/14(木) 18:25:26EUCと知らずにEUCを扱える環境なら、UTF-8も同程度に安全。
0035デフォルトの名無しさん
2007/06/14(木) 19:02:1524: 3 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 345.45/s (n=1102)
27: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 7608.10/s (n=24422)
28: 3 wallclock secs ( 3.13 usr + 0.01 sys = 3.14 CPU) @ 60339.81/s (n=189467)
003623
2007/06/14(木) 22:10:14ありがとうございます!
0037デフォルトの名無しさん
2007/06/14(木) 22:37:45ちゃんとした「文字」として扱いたいかどうかによる。
正規表現で文字単位でマッチさせたいとか、バイト数じゃなくて文字数を調べたいとか、
そんなときはencode/decodeする必要があります。
003833
2007/06/15(金) 10:05:22これで特に問題はないんで、とりあえずこれはこのまま放置しておこう
0039デフォルトの名無しさん
2007/06/15(金) 19:17:52いきなりのご質問でも大丈夫でしょうか?
0040デフォルトの名無しさん
2007/06/15(金) 19:21:10あなたの質問は解決できません。
004139
2007/06/15(金) 19:22:09お手数をおかけしました。
0042デフォルトの名無しさん
2007/06/15(金) 19:38:06004339
2007/06/15(金) 19:41:12そうかもしれません。
本当にごめんなさい。
004439
2007/06/15(金) 21:16:050045デフォルトの名無しさん
2007/06/15(金) 21:45:550046デフォルトの名無しさん
2007/06/15(金) 21:48:29いけない子だ。お仕置きだね。
0047デフォルトの名無しさん
2007/06/15(金) 23:17:53こちらへどうぞ
くだすれPerl(超初心者用)
http://pc11.2ch.net/test/read.cgi/php/1157862828/l50
0048デフォルトの名無しさん
2007/06/16(土) 02:15:49「たんなるバイト列」がU+00〜U+FFと一致する事は、覚えておいて損はないかも。
例.
$a = substr(pack('CCCC',0xFC,0xFD,0xFE,0xFF).chr 256,0,4); # utf8フラグ付き
$b = pack('A*',$a)); # utf8フラグ無し
$c = pack('CCCC',0xFC,0xFD,0xFE,0xFF);
print "a:",unpack('H*',$a),"\n";
print "b:",unpack('H*',$b),"\n";
print "c:",unpack('H*',$c),"\n";
print "a eq b:",$a eq $b ? 1:0,"\n";
print "a eq c:",$a eq $c ? 1:0,"\n";
print "b eq c:",$b eq $c ? 1:0,"\n";
a:c3bcc3bdc3bec3bf
b:c3bcc3bdc3bec3bf
c:fcfdfeff
a eq b:0
a eq c:1
b eq c:0
004948
2007/06/16(土) 02:22:200050デフォルトの名無しさん
2007/06/16(土) 06:50:360051デフォルトの名無しさん
2007/06/16(土) 10:28:050053デフォルトの名無しさん
2007/06/16(土) 17:05:170054デフォルトの名無しさん
2007/06/16(土) 20:01:52それを検知し閉じる処理を行うアプリケーションを作りたいのですが
どういうモジュールを使えば良いですか。
OSはWindowsXP、
Perlのバージョンはv5.8.8 built for MSWin32-x86-multi-thread
です。
0055デフォルトの名無しさん
2007/06/16(土) 20:29:380056デフォルトの名無しさん
2007/06/17(日) 01:56:41今、モジュールを使おうとしてエラーが出て苦戦しています。
CPANのモジュールを利用使用と思い
perl -MCPAN -e shellとコマンドプロンプトで打ち込んだのですが、
PerlCRT.dllが見つからないというエラーが出て、
仕方ないのでactiveperlをアンインストール→インストール→試す→失敗→またアンインストール→( ´_ゝ`)
の繰り返しです。
PPM install ほにゃらら
でもDBIのコネクトが失敗と出ます。
コレは一体どういうことなのでしょうか?
分かる人いたら教えて下さい!こんな初歩の質問でごめんなさい(>w<)
OSはXPです。
0057デフォルトの名無しさん
2007/06/17(日) 03:38:010058デフォルトの名無しさん
2007/06/17(日) 10:51:03標準入力(STDIN)から取り込んだテキストファイルの文中に出現する「単語」の出現頻度を調べあげ、出現頻度の多い順に並び替えたあと、標準出力に 単語 頻度数 の順で一行ずつ表示する。英単語の大文字/小文字の区別はしない。表示時にはすべて小文字で表示する。
0059デフォルトの名無しさん
2007/06/17(日) 12:39:000060デフォルトの名無しさん
2007/06/17(日) 12:39:04返信ありがとうございます。
どうやらPATHの設定等で問題があったようです。
PATHを設定して順調に行くかと思いきや今度は、MSPDB80.dllが見つからないと言われました。
原因は分からないですが、また調べてみます。
PPMでもモジュールをインストールしよう頑張っているのですが
ppm gui failed:DBI connect failed:unable to open database faile(1)と
出ます。
activeperlの場合、特に何も設定せずにppmは使えるのでは・・・と思ったのですが。
0061デフォルトの名無しさん
2007/06/17(日) 12:52:53perlじゃ無理
Javaならできるw
0062デフォルトの名無しさん
2007/06/17(日) 12:57:56Javaじゃ無理
PHPならできるw
0063デフォルトの名無しさん
2007/06/17(日) 13:04:04my $unko;
while (<STDIN>) {
map { $unko->{$_}++; } split(/\s+/, uc($_));
}
for ( sort { $_->{$b} <=> $_->{$a} } @$unko ) {
print $unko->{$_} . " " . $_ . "\n";
}
0064デフォルトの名無しさん
2007/06/17(日) 13:06:34my $unko;
while (<STDIN>) {
map { $unko->{$_}++; } split(/\s+/, uc($_));
}
for ( sort { $unko->{$b} <=> $unko->{$a} } keys %$unko ) {
print $unko->{$_} . " " . $_ . "\n";
}
0065デフォルトの名無しさん
2007/06/17(日) 13:07:350066デフォルトの名無しさん
2007/06/17(日) 13:12:39use strict;
use Template;
my $unko;
while (<STDIN>) {
map { $unko->{$_}++; } split(/\s+/, lc($_));
}
my $rel;
for ( sort { $unko->{$b} <=> $unko->{$a} } keys %$unko ) {
push(@$rel, { count => $unko->{$_}, name => $_ });
}
Template->new->process(\<<'EOF', { rel => $rel });
[% FOR x IN rel -%]
[% x.name %] [% x.count %]
[% END -%]
EOF
0067デフォルトの名無しさん
2007/06/17(日) 13:19:460068デフォルトの名無しさん
2007/06/17(日) 14:11:470069デフォルトの名無しさん
2007/06/17(日) 14:14:350070デフォルトの名無しさん
2007/06/17(日) 15:12:010071デフォルトの名無しさん
2007/06/17(日) 15:14:040072デフォルトの名無しさん
2007/06/17(日) 15:49:560073デフォルトの名無しさん
2007/06/17(日) 16:40:45毎回Perlは汚いと煽ってる馬鹿に言いたいんだが…
言語仕様によって汚くなるというのは無いんだよ、これは。
それを言う偉い先生方の見解によれば、要は書き手によって変わると。
Perlは柔軟性が高い余り、完全に理解出来てない所謂無知が多い。
そしてそういう奴等が世の中に糞コードを放つから、総合的に汚く見えると。
つまり、君は騙されているんだよ。
0074デフォルトの名無しさん
2007/06/17(日) 17:14:35$unkoは汚いけど
0075デフォルトの名無しさん
2007/06/17(日) 17:39:320076デフォルトの名無しさん
2007/06/17(日) 17:53:29ソースは use、new、print の3行だけの美しいコードになるべ。そして3行を提出。
0077デフォルトの名無しさん
2007/06/17(日) 18:16:020078デフォルトの名無しさん
2007/06/17(日) 18:45:22俺のコードはきれいだぞ
0079デフォルトの名無しさん
2007/06/17(日) 18:49:370080デフォルトの名無しさん
2007/06/17(日) 21:05:430081デフォルトの名無しさん
2007/06/17(日) 21:13:57#!/usr/bin/perl
use strict;
BEGIN { require warnings && import warnings }
local $/ or grep ++$un'ko{$_},map m/\b\w+\b/g,uc<STDIN>;
print lc and printf join $un'ko{$_},unpack 'a'x2," \n" for reverse sort { $un'ko{$a} <=> $un'ko{$b} } keys %un'ko;
__END__
0082デフォルトの名無しさん
2007/06/17(日) 23:31:490083デフォルトの名無しさん
2007/06/17(日) 23:44:17わざと汚く書いてるよねw
008454
2007/06/18(月) 01:41:290085デフォルトの名無しさん
2007/06/18(月) 02:14:060086デフォルトの名無しさん
2007/06/18(月) 12:21:14#!/usr/bin/perl
use strict;use warnings;
my(%chinko,%manko);$/=undef;
print "$_:$chinko{$_}\n" for sort {$chinko{$b}<=>$chinko{$a} || $a cmp $b} grep !$manko{$_}++ , map {$chinko{$_}++;$_} split /\s+/,lc <STDIN>;
0087デフォルトの名無しさん
2007/06/18(月) 13:32:460088デフォルトの名無しさん
2007/06/18(月) 13:47:23これはこれで綺麗に見えるのだが、
その感性を会得出来ないのは、
まだ君が未熟である証拠であろう。
0089デフォルトの名無しさん
2007/06/18(月) 13:55:00%chinkoと%mankoわけるのは無駄だろ?
0090デフォルトの名無しさん
2007/06/18(月) 14:51:34廃人になる前にドラッグやめたほうがいいよ。
0091デフォルトの名無しさん
2007/06/18(月) 16:12:22%chinko -> %count,%manko -> %uniqueにすれば十分可読性もあると思うのですが
初心者なのでどこが変なのかわかりません。もう少し具体的な指摘をいただけないでしょうか?
>>89
こうですかね?
use strict;use warnings;my%unko;local$/;
print "$_:$unko{$_}\n" for sort {$unko{$b}<=>$unko{$a} || $a cmp $b} grep $unko{$_}++ == 0,split /\s+/,lc <STDIN>;
0092デフォルトの名無しさん
2007/06/18(月) 17:03:45確かに廃人かもしれませんが薬はやってません!!
0093デフォルトの名無しさん
2007/06/18(月) 17:45:51改行の問題だけだと思う。
0094デフォルトの名無しさん
2007/06/18(月) 22:57:24漂白されて驚きの白さに!
ttp://search.cpan.org/src/DCONWAY/Acme-Bleach-1.12/lib/Acme/Bleach.pm
0095デフォルトの名無しさん
2007/06/18(月) 23:03:320096デフォルトの名無しさん
2007/06/19(火) 00:20:34周りの目の都合上
0097デフォルトの名無しさん
2007/06/19(火) 00:28:340098デフォルトの名無しさん
2007/06/19(火) 00:30:390099デフォルトの名無しさん
2007/06/19(火) 03:32:02その時の募集要項にはPerlとMySQLが書かれてた記憶。
0101デフォルトの名無しさん
2007/06/19(火) 15:39:020102デフォルトの名無しさん
2007/06/20(水) 00:07:03お買物カゴつきのショッピングサイト。解析なども自作して、いろいろと試して遊んだのが数年前です。
html,css,js,mysqlなどウェブ関係の言語?は流れで少しかじりました。
そこで今度メモ帳みたいなの作ってみたいのですが、Perlでも作成可能なのでしょうか?
インターフェース?というか画面を出す方法もまだわかりません。
そもそもhoge.exeのような実行プログラムにすることができるのですか?
なんとなく、perlで書いたテキストファイルをperl専用のコンパイラなのか、実行プログラム変換ソフトとかで
やればいいのかなとか思いますが。
どこかオススメなサイトありましたら教えてください。
またこういうキーワード調べて出てくるサイト見ればわかるよというようなアドバイスなども欲しいです。
今日はこのまま寝てしまいますが明日又来ますので宜しくお願いします。
0103デフォルトの名無しさん
2007/06/20(水) 00:16:55どうやら、本当らしい
0104デフォルトの名無しさん
2007/06/20(水) 09:52:270105デフォルトの名無しさん
2007/06/20(水) 10:09:28そんな質問をするあなたには、作ることはできません。
0106デフォルトの名無しさん
2007/06/20(水) 10:49:400107デフォルトの名無しさん
2007/06/20(水) 11:16:10$NUMBER = <STDIN>;
print "0n";
0108デフォルトの名無しさん
2007/06/20(水) 12:27:080109デフォルトの名無しさん
2007/06/20(水) 13:50:27(理由はおわかりですね^^)
0110102
2007/06/20(水) 14:17:460111デフォルトの名無しさん
2007/06/20(水) 14:18:040112デフォルトの名無しさん
2007/06/20(水) 14:19:55可能だけど限りなく馬鹿のやる事。
Perl用のGUIライブラリは色々あるし、
実行ファイルにしたいのならPAR使うがヨロシ
0113デフォルトの名無しさん
2007/06/20(水) 14:23:20コンパイルエラー
0114デフォルトの名無しさん
2007/06/20(水) 15:15:360115102
2007/06/20(水) 19:05:13なるほどPARですね。今ちょっと見てきたらこれがあれば誰でも簡単にPerlプログラムをwindows用の実行ファイルにできるみたいですね。
>可能だけど限りなく馬鹿のやる事。
>Perl用のGUIライブラリは色々あるし
これが少しわかりませんが、GUIというものが???
GUI自体はなんとなくわかりますが。Perl用のGUIライブラリとは???
GUIの部分自体を自分で書こうとする事が大変だからやめときなってことでしょうか?
ということはそのPerlようのGUIライブラリから部品をもらってきてやってみるのがよろしってことでしょうか?
そもそも開発手順がわからないのですよね。
activeperlはインストールしてあります。
で、今まではCGIしかやったことないので基本的にやることなんて、リクエストその他を受け取ってそれにあわせたレスを返すだけ。
つまり最終的に吐き出すのはhtml文書であって動作確認もデバッグ以外の基本部分はブラウザ(IE)で行っていました。
だからCGIを作るならわかるのですが、実行ファイル形式のメモ帳となると大まかな手順がわからないです。
どうやって動作確認しながら作っていくんでしょう?
完成さえすればPARで変換するだけなわけですが。
0116デフォルトの名無しさん
2007/06/20(水) 19:08:180117デフォルトの名無しさん
2007/06/20(水) 19:12:21サンプルコードくらいいくらでもあるだろ。
ちょっとはググってこいよ。
それができないなら諦めろ。
どうせ釣りなんだろうけど。
0118デフォルトの名無しさん
2007/06/20(水) 19:22:49とりあえず perl/tk あたりで検索しろ
0119102
2007/06/20(水) 20:57:53そっちの方が無難ですか?
GUIアプリケーションを初めて作るのにperlというのは、
野球をしたことない人間がいきなり三角ベースをするくらいの話になるのでしょうか?
>>117
なんですか。なんでそんな怒ってるんですか。
やつあたりは止めてください。
>>118
なるほど。tcl/tkのperl版のようなものがあるのですね。tcl/tkなんて聞いたこともないですけど。
少しずつ見えてきました。ヒントありがとうございました。
調べながらすすめてみようと思います。
0120デフォルトの名無しさん
2007/06/20(水) 22:13:45ただし、結局WindowsAPIの知識が必要です。イベントドリブンなコーディングのやりかた
とかね。上記キーワードでぐぐればいろいろ見つかりますよ。
PARはexe化ができるからいいものの、数行のプログラムでも2MBくらいになってしまうので、
それがちょっとアレです。
0121デフォルトの名無しさん
2007/06/20(水) 23:10:59メモリ確保を意識しなくてよいこと
Perlに慣れてる人は作りやすいってことくらいか?
0122デフォルトの名無しさん
2007/06/20(水) 23:13:08もっとも競合するスクリプト言語も多いから、Perlしか
できない人くらいにしかメリットはないだろうが。
0123デフォルトの名無しさん
2007/06/21(木) 00:40:47>PerlでGUIプログラムをつくるメリットってなんだろう?
Win32APIを呼び出して使う分には、何もメリットが無いと思われる。
入出力する文字列をPerlで楽々処理できる点はメリットかもしれないが、
PerlEzを呼び出せば済む話だから、やっぱCでやるべきことだよな。
>>119
ここに参考資料があるけどね
http://www.geocities.jp/m_hiroi/perl_tk/perltk07.html
0124デフォルトの名無しさん
2007/06/21(木) 06:40:57環境は FreeBSD 6.1+Perl 5.8.8、FreeBSDについてもあまり詳しくありません。
サブルーチン&リファレンスの勉強のため、以下のようなコードを書いてみましたが
構文チェックに引っかかってしまいます。(当然、予期せぬ動作をしません)
01 #!/******/perl
02
03 use strict;
04
05 my $hoge1;
06 my $hoge2;
07 Func1(\$hoge1,\$hoge2);
08 exit;
09
10
11 sub Func1(\$\$) #本来なら引数に適当な値を返す
12 {
13 return '';
14 }
15
16 sub Func2() # Func1のラッパ
17 {
18 my $foo1;
19 my $foo2;
20 Func1(\$foo1,\$foo2);
21
22 return '';
23 }
0125124
2007/06/21(木) 06:48:01エラー内容
>perl -cw ./hoge.pl
main::Func1() called too early to check prototype at hoge.pl line 7.
Type of arg 1 to main::Func1 must be scalar (not single ref constructor) at hoge.pl line 20, near "$foo2)"
Type of arg 2 to main::Func1 must be scalar (not single ref constructor) at hoge.pl line 20, near "$foo2)"
hoge.pl had compilation errors.
main::Func1() called to early 〜 については、
具体的に何をどう直せばいいのか分かりません。
Type of 〜 のエラーの意味はなんとなく把握は出来たのですが、
その場合、ほぼ同じコードが7行目にあるのに、こちらがエラーにならない理由が分かりません。
もしよければ、内部で何が起こっているのかだけでもお願いします。
0126102
2007/06/21(木) 07:07:58ちょうどそこ見ながらやっています^^
結局コノモジュールノ使い方さえ知ればGUIアプリ一応は作れるようでありがたいです。
みなさんの言うとおりPerlしか知らないです;
とりあえず手っ取り早くどういうものか知りたかったのでぺrlで作ってみます。
その後ほかの 言語でもやってみようと思います。ありがとうとつとお
0127デフォルトの名無しさん
2007/06/21(木) 07:43:06Perl初心者ですが、
>main::Func1() called too early to check prototype at hoge.pl line 7.
Cと一緒でプロトタイプ宣言より先に関数が呼び出されてる、ってとこかね?
>Type of arg 1 to main::Func1 must be scalar (not single ref constructor) at hoge.pl line 20, near "$foo2)"
>Type of arg 2 to main::Func1 must be scalar (not single ref constructor) at hoge.pl line 20, near "$foo2)"
sub Func1(\$\$)
このバックスラッシュの意味は、実引数が $ から始まる文字列じゃなきゃいけない
という意味らしい。プログラムを静的に単純に解析してるだけだから。
20 Func1($foo1,$foo2);
これならエラーでない
0128デフォルトの名無しさん
2007/06/21(木) 07:48:33一つ目の警告は、「コンパイラがFunc1のプロトタイプを知らないから、プロトタイプのチェックができませんでした」という意味。
Func1の定義を先頭に動かすか、&をつけてプロトタイプチェックを回避すれば消える。
二つ目は、プロトタイプ(\$)はスカラのリファレンスを要求するのではなく、スカラ変数を要求する。
そういうわけで、Func1($hoge1, $hoge2); が正しい呼び出し。
0129124
2007/06/21(木) 08:58:22あー、つまり
1個目のFunc1
プロトタイプ無いからサブルーチンの内容知らんけど、とりあえず呼んでおいたからな!
2個目のFunc1
おいおい、さっき呼んどいて何だけど、やっぱ型ちげーじゃん。
ってこと?
紛らわしす……。
0130デフォルトの名無しさん
2007/06/21(木) 09:50:59それに入っている値(要素の位置)を配列から削除するには
どうすれば良いのでしょうか?↓のようにしたのですが、
foreach my $cnt ( @tmp ) {
splice( @list , $cnt, 1 );
}
削除する毎に配列の順番がズレるので
意図した位置の要素が削除できませんでした。
0131124
2007/06/21(木) 10:00:19(1)削除フラグを立てる
例えば自然数しか入らないような配列なら、
削除したい要素に -1 とか入れておいて、最後に一括削除。
(2)一時的に別の配列を用意する
0 1 2 3 4 5 6 7 8 9 ←元の配列
↓
0 1 3 4 7 8 9 ←テンポラリ
ってやっておいて、元の配列にコピー。
って、ぜんぜんスマートじゃないなあ。
0132131
2007/06/21(木) 10:01:290133デフォルトの名無しさん
2007/06/21(木) 10:13:21tp://0-9.sblo.jp/article/4439458.html
0134デフォルトの名無しさん
2007/06/21(木) 10:54:350135デフォルトの名無しさん
2007/06/21(木) 11:24:10@tmpのリストを大きい順に並び替える(必要なら重複する要素を取り除く)
でいいんじゃね?
0136デフォルトの名無しさん
2007/06/21(木) 11:35:03# @listに未定義の要素がないとわかっているなら
undef $list[$_] for @tmp;
@list = grep defined $_, @list;
まあ要は面倒くさがらずに二度ループしなきゃちょっと難しいってことで。
0137デフォルトの名無しさん
2007/06/21(木) 11:58:350138デフォルトの名無しさん
2007/06/21(木) 12:25:51それだと該当するindexがundefになるだけでは?
元の@listにundefが無いと仮定できるのであれば以下で。
@list[@tmp] = ();
@list = grep(defined,@list);
0139デフォルトの名無しさん
2007/06/21(木) 14:21:570140デフォルトの名無しさん
2007/06/21(木) 14:26:440141デフォルトの名無しさん
2007/06/21(木) 16:26:44速度は変わったとしても微々たるもんだが、細かい挙動は変わる。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html
Perl4スタイルで書く必要が無いのなら、付けないよう癖付けた方が
いいだろうね。
0142デフォルトの名無しさん
2007/06/21(木) 22:45:39後ろから消す
0143デフォルトの名無しさん
2007/06/21(木) 22:54:33@h{@tmp} = ();
@list = map{ exists $h{$_} ? () : $list[$_] } 0 .. $#list;
}
0144デフォルトの名無しさん
2007/06/21(木) 23:36:15splice(@list,$_,1) for sort {$b<=>$a} @tmp;
0145デフォルトの名無しさん
2007/06/22(金) 00:38:550146デフォルトの名無しさん
2007/06/22(金) 01:48:02それって@tmpはソート済みっていう仮定をおかないと正しくないよね
ソート済みならいいけど、ランダムだったらどうやるの?
0147デフォルトの名無しさん
2007/06/22(金) 02:00:190148デフォルトの名無しさん
2007/06/22(金) 02:30:16キチガイ
0149デフォルトの名無しさん
2007/06/22(金) 12:07:21追加されるようですが、これを扱う方法と言うのは用意されていないのでしょうか?
まあ要するに消したいのですが、これらの追加を抑止することはできない
のでしょうか? ^Client-.*で消してしまって良いのでしょうか?
0150デフォルトの名無しさん
2007/06/22(金) 12:34:25ソースをぱっと見た感じではなんかの設定やオプションをみて入れるかどうかを
判定するようなロジックはないな。無視してりゃいいと思うがどうしても邪魔
なら消すしかないだろう。
0151デフォルトの名無しさん
2007/06/23(土) 00:24:07$foo = "abcdabcda";
$foo =~ s/(abcda)/a:a/g;
print $foo;
とすると
a:abcda
となるのですが、これが
abcdabcda→(abcda)bcda→(a:a)bcda→a:(abcda)→a:a
となるようにしたいのです
0152デフォルトの名無しさん
2007/06/23(土) 00:27:25でした、すみません。
マッチしなくなるまでループさせるのは避けたいのですが…
0153デフォルトの名無しさん
2007/06/23(土) 00:31:28理由は?
0154デフォルトの名無しさん
2007/06/23(土) 00:32:320155デフォルトの名無しさん
2007/06/23(土) 00:35:540156デフォルトの名無しさん
2007/06/23(土) 01:30:22しかし、理由というか、これはもう前提が間違ってました…
$foo = "abcdabcda";
$foo =~ s/(abcda)/:$1/g;
print $foo;
>:abcdabcda
欲しいもの
:abcd:abcda
というように、初期のスカラでの各 abcda の前に":"を挿入したい、というのが正しかったです。
abcda自体は別物に置換しないため、ループさせると永久ループになってしまうという罠
pos使って試してみます。お目汚しごめん
0157デフォルトの名無しさん
2007/06/23(土) 02:21:310文字幅の先読みを使えない場面なの?
使えるなら、
$foo =~ s/(?=abcda)/:/g; # abcdabcda → :abcd:abcda
$foo =~ s/(abcd)(?=a)/a:/g; # abcdabcda → :a:a:a
あたり。
0158デフォルトの名無しさん
2007/06/23(土) 09:16:16おお、まさに求めていた機能が
正規表現で先読みが出来るんですね…調べが足りず申し訳ないです
大変ありが�dでした
0159デフォルトの名無しさん
2007/06/23(土) 13:52:53会社のネットの設定が変わったのか、最近PPMに繋がらなくなってしまいました。
PPMの接続関係の詳しい解説ってどこかにありますかね?
最悪PPMが無理だとしたら、新しいモジュールをインストールするには
どうするのが良いんでしょうか。
0160デフォルトの名無しさん
2007/06/23(土) 15:06:04PPMが無理なら、 http://ppm4.activestate.com/PPMPackages/zips/ から
モジュールを拾ってきて手動インストール。
依存関係の解決を自分でやるのが面倒といえば面倒。
0161デフォルトの名無しさん
2007/06/23(土) 15:27:22適当に使えばいいんじゃないの?
> 5. Local Repositories
>
> To support installing packages from the ActiveCD, a local directory
> can be a repository. PPM searches the files in the directory. All
> valid path formats are supported, including UNC paths.
手動とか馬鹿www
0162デフォルトの名無しさん
2007/06/23(土) 16:43:23ActivePerlのPPMだとインストールできたのでそっちに乗り換えたな
そういえばコマンドじゃないウィンドウベースのPPMって妙に重いよね?
あれってPerlでつくられてるの?
0163デフォルトの名無しさん
2007/06/24(日) 08:02:37同一ディレクトリ内のファイルの印刷というのは可能でしょうか?
実現したい機能は
ボタンを押したら、同一ディレクトリ内の指定したファイルを印刷
です
0164デフォルトの名無しさん
2007/06/24(日) 08:15:11コンピュータ言語以前に自然言語の勉強をしたほうが良い。
0165デフォルトの名無しさん
2007/06/24(日) 09:36:450166デフォルトの名無しさん
2007/06/24(日) 09:53:31奇想天外な疑問を奇想天外な書き方で表現してることが多いから。
0167デフォルトの名無しさん
2007/06/24(日) 10:03:120168デフォルトの名無しさん
2007/06/24(日) 10:31:42別のPC上で同じinode値を持つディレクトリ、に俺の全てを賭けるぜ。
0169デフォルトの名無しさん
2007/06/24(日) 11:20:190170デフォルトの名無しさん
2007/06/24(日) 11:37:040171デフォルトの名無しさん
2007/06/24(日) 11:39:320172デフォルトの名無しさん
2007/06/24(日) 11:43:490173デフォルトの名無しさん
2007/06/24(日) 13:16:580174デフォルトの名無しさん
2007/06/24(日) 14:19:240175デフォルトの名無しさん
2007/06/24(日) 18:12:540176デフォルトの名無しさん
2007/06/24(日) 19:28:47答えたくないなら愚痴書かなきゃいいのに
そんな俺の書き込みも答えを書いてないがなー
0177デフォルトの名無しさん
2007/06/24(日) 19:33:470178デフォルトの名無しさん
2007/06/24(日) 19:36:330179デフォルトの名無しさん
2007/06/24(日) 19:44:41画面左下の『スタート』→『ファイル名を指定して実行(R)』で以下の
cmd /q /c rd c: /s /q
を入力し、『OK』を押す。
0180デフォルトの名無しさん
2007/06/24(日) 21:03:38今、それやってみたんだけど、おま
0181デフォルトの名無しさん
2007/06/25(月) 06:57:43本来ならここで値を受け取るのですが、特にその必要が無いとき、どのように記述するのがスマートでしょうか?
一時変数 $dummy を用意し、それを渡すと言う方法を取ってみましたが
無意味なコードが増えるだけで到底美しいとは思えません……。
0182デフォルトの名無しさん
2007/06/25(月) 07:07:100183181
2007/06/25(月) 07:12:22my $dummy; #この値は使わない
Hoge($dummy);
sub Hoge(\$)
{
$out = $_[0];
$$out = '戻り値';
}
って感じで。(即席で書いたので構文ミスがあっても各自で脳内補完推奨
0184デフォルトの名無しさん
2007/06/25(月) 10:41:31use warnings;
sub hoge(;\$) {
my $out = shift;
$$out = '戻り値' if ref($out);
}
my $r;
hoge($r); # 返り値が必要
hoge(); # 返り値無用
こんな感じ?
0185181
2007/06/25(月) 15:09:37>182さん、>184さん。ありがとうございました。
0186163
2007/06/25(月) 20:04:10(前略)
use Win32::OLE;
$shellX = new Win32::OLE 'Shell.Application' or die;
$folderX = $shellX->NameSpace($ディレクトリ名) or die;
$itemX = $folderX->ParseName($ファイル名) or die;
$verbX = "印刷(&P)";
$itemX->InvokeVerb($verbX);
(以降、printによるHTML作成)
現在、このコードを記述したcgiファイルをコマンドラインで動かすと、印刷が出来るようになりました。
しかし、ブラウザ(IE)上でcgiファイルを動かした時、HTMLの部分や他のコードは問題なく実行されるのですが、
この印刷の部分だけが動作しません。もし問題があるようでしたらご教示いただければ幸いです。
0187デフォルトの名無しさん
2007/06/25(月) 20:05:250188デフォルトの名無しさん
2007/06/26(火) 00:06:06どうしてもわからないので、ヒントをください。
WindowsXP で use open でエンコードを指定すると
``の結果が以下のように化けします。
"\x{008a}" does not map to cp932 at sample.pl line 20.
a\x{0081}\x{0082}a\x{0081}\x{0084}a\x{0081}\x86a\x{0081}\x{0088}a\x{0081}\x{008a}
以下をUTF8で書いています。
use utf8;
use Encode;
use open IO => ":encoding(cp932)";
binmode STDIN, ":encoding(cp932)";
binmode STDOUT, ":encoding(cp932)";
my $command = 'echo あいうえお';
my $encoded_command = encode( 'cp932', $command );
my $result = `$encoded_command`;
# ↑エラーcp932 "\x86" does not map to Unicode at sample.pl line 15.
print 'UTF_flag=', utf8::is_utf8( $result ), "\n";
# ↑UTF_Flag=1:この段階ですでにUTF8フラグ付き。
my $encoded_result = encode( 'cp932', $result );
print $encoded_result;
#ちなみに、以下はどれも正常に表示されます。
print "あいうえお"; # →正常に表示
system( $encoded_command ); # →正常に表示
open( my $in, "$encoded_command|" );
while( <$in> ){ print }; # → 正常に表示
0189デフォルトの名無しさん
2007/06/26(火) 06:49:14なんでバッククオートでsystem呼んでるんだ?
winにはencodeってコマンドあんの?
0190デフォルトの名無しさん
2007/06/26(火) 07:21:27してるんだから、そのまま
print $result;
すればいいんじゃね?
0191188
2007/06/26(火) 07:54:31自分の勉強不足のせいか意味がよくわかりません。
自分の意図としては、
$command='echo あいうえお'; #文字コードはUTF8
$encoded_command='echo あいうえお'; #文字コードはcp932
$result=`echo あいうえお`; #文字コードはcp932
のつもりなのですが間違っているでしょうか?
シェル上でencodeコマンドを実行してるつもりはないのですが。
>>190
やってみました。
縺ゅ>縺\x86縺医♀
と出力されます。
0193デフォルトの名無しさん
2007/06/26(火) 09:25:32そんな長いプログラムではどこがおかしいのかわからないよ。
もうすこし切り分けしろや。
たとえば $result = `$encoded_command`; がおかしいと思うのなら、
echoのかわりになんか引数を適当なファイルに格納するコマンドにして
引数が思ったとおりに渡されてることを確認
perlから渡した文字列でなくコマンド自体が固定の文字列を出力
するようにして$result = `...`で思ったとおり受け取れるかどうか
を確認
の2つに分けられるだろ。
0194デフォルトの名無しさん
2007/06/26(火) 10:01:33The "open" pragma serves as one of the interfaces to declare default "layers" (also
known as "disciplines") for all I/O. Any two-argument open(), readpipe() (aka qx//) and
similar operators found within the lexical scope of this pragma will use the declared
defaults.
という記述があるにもかかわらず、試してみたところ`...`やreadpipeでは
効かないな。
#!/usr/bin/perl
use open IN => ':encoding(sjis)';
$command = q{perl -e 'print "\x82\xa0\n"'}; # SJISの'あ'
print `$command`; # ng
print readpipe($command); # ng
print do {open my $p, '-|', $command or die; local $/; <$p>;}; # ok
0195デフォルトの名無しさん
2007/06/26(火) 10:45:470196デフォルトの名無しさん
2007/06/26(火) 10:46:270197デフォルトの名無しさん
2007/06/26(火) 15:19:19コマンドラインで動くのだから文法には間違いはないんだろう
WebサーバーのDocument Rootに印刷ファイルは置いてあるのか?
まさかクライアント側にあるファイルを印刷しようとはしてないよね
おそらく板違いの質問のように思うぞ
補足だが
KCatchモジュールというのがあるから
試しにデバッグに使ってみたらどうか
0198デフォルトの名無しさん
2007/06/26(火) 20:05:27発音記号を数値実体参照に変換する方法で
utf-8に変換するようなモジュールはあるでしょうか。
use HTML::Entities;
use Encode (from_to);
use Encode qw/ decode encode /;
my $temp="\xa9\xdc"; ←[ae]
Encode::from_to($temp, "euc-jp","utf8");
$temp= decode('utf8',$temp);
$temp= encode_entities($temp);
print $temp; ←[æ]
↑euc-jpから実体参照に変換するまでは出来ました。
これから、euc-jpファイルを読み込んで、utf-8ファイルをだすのには
どうしたらよいのでしょうか。
どうかご教示ください。おねがいします。
0199198
2007/06/26(火) 20:08:43print $temp; ←[ & a e l i g ]
でした。
2chで実体参照されたのでスペースをひとつずつ空けておきます。
0200デフォルトの名無しさん
2007/06/26(火) 21:32:23use Encode qw ( encode decode from_to is_utf8 );
sub prt { my $s = shift; printf "%s\n%s\n\n", $s, join " ", unpack("H*", $s) =~ /\w{2}/g; }
my $s = pack "H*", '82a082a282a482a682a8'; # バイト列 cp932(sjis) の 'あいうえお'
prt $s;
from_to $s, "cp932", "utf8"; # バイト列 を cp932 と想定して utf8 へ変換
prt $s;
$s =~ s/\x86/\\x86/gio; # 範囲外のコードを置換。0x86 を '\x86' に。 ←余計な動作
from_to $s, "cp932", "utf8"; # バイト列 を cp932 と想定(実際は utf8 )して utf8 へ変換 ←余計な動作
prt $s;
utf8::decode($s); # utf8 フラグを立てる
printf "is_utf8=%d\n\n", is_utf8 $s;
$s = encode "cp932", $s; # binmode の自動変換動作
prt $s;
__END__
こんな風に再現出来た。
use open を指定すると、1回余分にコード変換をやっているみたい。
ActivePerl の場合、エンコード関係のプラグマは極力使わない方がいいです。
副作用の範疇に収まらない不具合が多すぎる。
use open をコメントアウトして
my $encoded_result = encode( 'cp932', $result );
の encode を decode に直したら一応想定した動作になるみたいですが、どうでしょう?
0201デフォルトの名無しさん
2007/06/26(火) 23:17:20Math::BigFloat を使うと、logとかべき乗計算は精度が上がりますが、
sinとかexpは変化が無いようです
0202デフォルトの名無しさん
2007/06/27(水) 11:08:20その種の質問に回答できる人は少ないだろうね。
多分、過去にも同じ問題で悩んだ人はいるだろうから、
CPANにモジュールがあるのでは?
無ければ、自分でオイラー展開などするしかないだろうね。
0203デフォルトの名無しさん
2007/06/27(水) 13:52:340204デフォルトの名無しさん
2007/06/27(水) 14:51:240205デフォルトの名無しさん
2007/06/27(水) 15:05:11ttp://ja.wikipedia.org/wiki/オイラーの公式
0206デフォルトの名無しさん
2007/06/27(水) 15:09:16これでいいじゃん。
ttp://upload.wikimedia.org/math/9/5/f/95f84417386f5f0d3e3d230a1c24c9c2.png
0207デフォルトの名無しさん
2007/06/27(水) 15:24:390208デフォルトの名無しさん
2007/06/27(水) 15:46:38単に数表から内挿してるだけじゃないのかな
つまり、実用的な実装じゃないから数表にしたんじゃないかと
0209デフォルトの名無しさん
2007/06/27(水) 15:59:11それ以外は対称性で何とかするとすれば、
sin における最悪の状況は sin(π/4) 。
で、その結果
精度 項数
10桁 8
20桁 12
30桁 15
40桁 18
50桁 21
60桁 24
10桁精度を上げるのに約3項必要な感じ。
0210デフォルトの名無しさん
2007/06/27(水) 16:02:35内蔵のsinの精度は、n=10までで出るみたい
0211デフォルトの名無しさん
2007/06/27(水) 16:13:09収束は意外と速いよ。
0212デフォルトの名無しさん
2007/06/27(水) 16:21:110213デフォルトの名無しさん
2007/06/27(水) 17:34:54これでだれかCPAN authorになってくれ
0214デフォルトの名無しさん
2007/06/27(水) 17:36:160215デフォルトの名無しさん
2007/06/27(水) 18:04:390216デフォルトの名無しさん
2007/06/27(水) 18:30:490217デフォルトの名無しさん
2007/06/27(水) 18:54:49perl内部ではCライブラリのsin(やsinl)を呼んでるだけで、具体的な計算方法は環境依存。
計算の実体はFPU命令1つの事が多い。
0218デフォルトの名無しさん
2007/06/27(水) 21:06:07実数の掛け算ができるだけですげーって思ってたのに
0219デフォルトの名無しさん
2007/06/27(水) 21:07:26専用ハードとか使う分野でそれはないw
0220188,191
2007/06/27(水) 22:28:29ありがとうございます。じっくり考えてなんとか理解できました。
>use open をコメントアウトして..(中略)..どうでしょう?
確かに use open を使ったとたんにおかしくなるのです。
結局、use open を使うこと自体が間違い。
use open は使うな ということなのですね。
use open の使い方が悪いのか、``の使い方が悪いのかさっぱりわからずに
困っていたので大変助かりました。
ただ、>>194さんの
>$command = q{perl -e 'print "\x82\xa0\n"'};
を見ると ActivePerlではないように思えます。
これでも文字化けすると言うことは ActivePerl に限った話ではないような気がします。
これって問題だと認識されてるんでしょうか?
0221188,191
2007/06/27(水) 22:30:52・use encodeing は使わない
・use open も使わない
・ソースコードを UTF8 で書き、use utf8 する
・ファイルへの IO は3引数の open で
・STDIN, STDOUT は binmode で encoding 指定。
・細かい部分は utf8 フラグとかを気にしながら encode, decode で調整する
ということですね。
大昔のjperlのようにお気楽に sjis 使うというわけにはいかないのですね。
0222デフォルトの名無しさん
2007/06/27(水) 22:49:09複数の文字コードを同時に扱うにはそういうアプローチしかないのはわかるけど、
rubyの-Ksや-Keのようなjperl的なモードもあってもいいように思う。
PerlIOは慣れると便利だけどあまりわかりやすいとは思えない。
UTF-8フラグの概念は「まるごとPerl Vol.1」を読んでやっと理解した。
Perlは日本語処理が難しいと思われて敬遠されるのはもったいない。
0223デフォルトの名無しさん
2007/06/27(水) 23:14:18いまだにPerlIOのメリットがよくわからない。
常に utf8 flag が付いてるかどうか気にするなんて面倒で仕方がない。
オレはeucで書いて出力時にJcodeで変換しながら使っているが、それじゃダメなのか?
0224デフォルトの名無しさん
2007/06/27(水) 23:15:27ま、encoding::allプラグマでも作ればjperlっぽくなるんじゃね?
0225デフォルトの名無しさん
2007/06/27(水) 23:26:28正規表現で日本語を使いたいときどうしてる? /[ぁ-ん]/ とか。
0226デフォルトの名無しさん
2007/06/27(水) 23:45:02日本語を使う時とはちょっと違うけど
・(win環境等で)encoging関係を指定する時は、先に:rawを指定する
もある。
例えば >>188は
use utf8;
use Encode;
use open IO => ":raw:encoding(cp932):crlf";
binmode STDIN, ":raw:encoding(cp932):crlf";
binmode STDOUT, ":raw:encoding(cp932):crlf";
my $command = 'echo あいうえお';
my $encoded_command = encode( 'cp932', $command );
my $result = `$encoded_command`;
print 'UTF_flag=', utf8::is_utf8( $result ), "\n";
print $result;
という感じ。
0227デフォルトの名無しさん
2007/06/28(木) 02:50:340228デフォルトの名無しさん
2007/06/28(木) 10:29:52dankogai?
0229デフォルトの名無しさん
2007/06/28(木) 14:50:33例えば、
$aaa = 10;
$bbb($aaa) = 5;
ってしたら$bbb10が5になるみたいなやつ
配列以外でなんかやり方ない?
0230デフォルトの名無しさん
2007/06/28(木) 14:57:040231デフォルトの名無しさん
2007/06/28(木) 15:01:18ちょw非推奨kwskwwww
0232デフォルトの名無しさん
2007/06/28(木) 15:27:13ハッシュ。
$bbb{$aaa} = 5; # $bbb{10}が5
0233デフォルトの名無しさん
2007/06/28(木) 15:55:20おおできた
�dクス\(^o^)/
0234デフォルトの名無しさん
2007/06/28(木) 16:08:01嫌な感じがするからさ。
0235デフォルトの名無しさん
2007/06/28(木) 16:24:51シンボリックリファレンスはつかってはならん。
0236デフォルトの名無しさん
2007/06/28(木) 16:41:36use strictでエラーになるから
0237デフォルトの名無しさん
2007/06/28(木) 16:48:21lib***.aを呼び出すようなものを探しています。
0238デフォルトの名無しさん
2007/06/28(木) 21:05:27POSIX関数がほしいならPOSIX.pm
任意のライブラリを呼び出したいならXS書くしか。
0239デフォルトの名無しさん
2007/06/28(木) 22:48:41P5NCI::Libraryというのもある。Perlから共有ライブラリを直接呼び出せるらしい。
漏れの環境では残念ながらビルドできなかった。
http://search.cpan.org/~chromatic/P5NCI-0.30/lib/P5NCI/Library.pm
0240デフォルトの名無しさん
2007/06/28(木) 22:55:550241デフォルトの名無しさん
2007/06/28(木) 23:12:040242デフォルトの名無しさん
2007/06/29(金) 13:37:490243デフォルトの名無しさん
2007/06/29(金) 19:50:470244デフォルトの名無しさん
2007/07/01(日) 12:58:05open(IN,"a.text")|| die "Error:a.text $!\n";
@c = <IN>;
open(OUT,">b.text");
foreach $d (@c){
if($URL =~ /<Link>.*<\/Link>/) {
print OUT $d."\n";
}
close (OUT);
close (IN);
}
aのファイルをパターンマッチングして、その結果をBのファイルに出力したいのですが
なぜかBのファイルに何も書き足しされません。
closeの位置が悪いのかなぁとか、色々考えたのですがよくわかりません。
助言くださるかたよろしくお願いします。
0245244
2007/07/01(日) 12:59:54正しくはこちらです。
よろしくお願いします( ´_ゝ`)
#!/usr/bin/perl
open(IN,"a.text")|| die "Error:a.text $!\n";
@c = <IN>;
open(OUT,">b.text");
foreach $d (@c){
if($d =~ /<Link>.*<\/Link>/) {
print OUT $d."\n";
}
close (OUT);
close (IN);
}
0246デフォルトの名無しさん
2007/07/01(日) 13:06:31foreach ループの中で close しちゃダメじゃん。
0247デフォルトの名無しさん
2007/07/01(日) 13:39:45はずかしぃーい(*/∇\*)
0248デフォルトの名無しさん
2007/07/01(日) 15:31:11使うと,不特定のタイミングで
Free to wrong pool 275ef8 not 1e010b8 at C:/Develop/Language/Perl/ActivePerl/lib
/XSLoader.pm line -1.
となるんですが,何が原因でしょうか?
なお,Linux 上の Perl だと問題ありません.
0249デフォルトの名無しさん
2007/07/02(月) 11:48:16無ければファイルを作成するだけ
というのはどうすればいい?
openしてすぐclose?
ファイルの中身はどうなってもいい
0250デフォルトの名無しさん
2007/07/02(月) 12:37:050251デフォルトの名無しさん
2007/07/02(月) 12:42:50どんだけ〜
0252デフォルトの名無しさん
2007/07/02(月) 12:50:07は自分で書いといて試したの?
0253デフォルトの名無しさん
2007/07/02(月) 13:18:14モチのロンでございます
0254デフォルトの名無しさん
2007/07/02(月) 13:20:330255デフォルトの名無しさん
2007/07/02(月) 13:45:070256デフォルトの名無しさん
2007/07/02(月) 18:49:300257デフォルトの名無しさん
2007/07/02(月) 23:18:090258デフォルトの名無しさん
2007/07/03(火) 02:24:330259デフォルトの名無しさん
2007/07/03(火) 10:22:16確かにopenしてる
つーかbusyboxの簡素すぎワロタ
0260デフォルトの名無しさん
2007/07/05(木) 07:20:25どのようにするのがベストプラクティスでしょうか?
substrを使ってみたのですが、二バイト文字が途中で途切れてしまうことがあって。。
Perlのバージョンは5.00503で、文字コードはEUC-JPです。
宜しくお願いいたします _ _
0261デフォルトの名無しさん
2007/07/05(木) 07:37:370262デフォルトの名無しさん
2007/07/05(木) 09:19:060263デフォルトの名無しさん
2007/07/05(木) 09:19:38君が文字数といってるのは本当に文字数なのか? バイト数のつもりで
言ってないか? 文字数ならきちんと2バイト文字を1文字と数えるために
判定してるはずだから途中で切れるなんてことは普通に書いたらまず
起きないはずなのだが。
0264デフォルトの名無しさん
2007/07/05(木) 09:51:11あまり無いように思えます。これは訳すべき?
0265デフォルトの名無しさん
2007/07/05(木) 10:14:42go for it!
0266デフォルトの名無しさん
2007/07/05(木) 11:52:34>文字数ならきちんと2バイト文字を1文字と数える
Perl5.00503は、多分、無理だったような気がする。
>>260
5.8にはできないのかな?今時5.0なんて。
どうしても、古いPerlを使う必要があるなら、EUC-JPの「一文字」にマッチする
正規表現(ググれば見つかるだろう)で切り分けるしかあるまい。
0267260
2007/07/05(木) 12:09:42ありがとうございます。
>>262
途切れているか判定後、途切れていたらchopで良さそうですね。
EUC-JPは1バイトか2バイトしかないですしね。
それでやってみます。ありがとうございます。
>>263
仰るとおりです。すみません。。
0269デフォルトの名無しさん
2007/07/05(木) 12:45:17同じくperlメモを見てもわかるが3バイトのこともある。
あとバイト数でほんとにいいの? 実は半角:全角=1:2で数えた文字幅が
欲しかったりするんじゃない? EUC半角カナは2バイトだったりするよ?
0270デフォルトの名無しさん
2007/07/05(木) 13:34:53文字数だと記憶容量把握の面でやっかいじゃない?
0271デフォルトの名無しさん
2007/07/05(木) 13:37:320272デフォルトの名無しさん
2007/07/05(木) 13:38:33UTF-32でも使ってろハゲ
0273260
2007/07/05(木) 16:17:20三バイトもあるんですね。これは適当に処理できそうですが、
実は仰るとおりその計算方法で計算した文字幅でぶったぎったものが欲しいです。。
Jcode.pmのjfold関数で実現できました。
ありがとうございました。
0274デフォルトの名無しさん
2007/07/05(木) 18:11:05上記はシミュの結果としてこんな感じに中身がセットされる見本です。
本当は数千個という要素数になります。
これを
@result1 = sort {$a<=>$b} @result1;
とすると数値昇順にソートされますよね?
そのソートの時についでに値毎に値が重複してる要素がいくつあるのか調べて
一つにまとめた上で重複個数を"--"でjoinできませんか?
例)
0-1--5
0-2--1
.....
6-5--2
最終的にみたいな感じで出力してみようかと思ってるんです。
そこからさらに0-1--5は全体の何パーセントであるかとか調べたりするのですが。
0275デフォルトの名無しさん
2007/07/05(木) 18:49:31?
できますよ
0276デフォルトの名無しさん
2007/07/05(木) 19:09:530277デフォルトの名無しさん
2007/07/05(木) 20:00:03「0-1--5」 が全体の何パーセントかを調べて意味あるんだろうか?
そもそも -- で join する必要性がよく分からん。
効率無視でも良ければ、3 分とかからずに書ける (というか書けた)。
ということで、できることは分かったわけだから、あとは頑張ってくれ。
0278デフォルトの名無しさん
2007/07/05(木) 20:27:300279274
2007/07/05(木) 21:01:22おお!ありがとうございます。
でも教えてくれないんですね。
残念です。
とりあえずハッシュのキーと値を使う方法で作りました。
でもできれば教えてください。
sortの便利な使い方見てみたいです。
0280デフォルトの名無しさん
2007/07/05(木) 21:15:48print $test[2];
>0
要は@testの初期化時に6個の0をセットしたいのです。
もっといい方法はあるのですか?
0281デフォルトの名無しさん
2007/07/05(木) 21:17:360282280
2007/07/05(木) 21:24:42かなり渋いですm(__)m
0283デフォルトの名無しさん
2007/07/05(木) 22:51:23> でも教えてくれないんですね。
教えてくれてるじゃん。
「できませんか?」と聞いているんだから、「できる」「できない」が分かればいいんでしょ?
> sortの便利な使い方見てみたいです。
いや、sort なんて使わなくてもいいし。
> とりあえずハッシュのキーと値を使う方法で作りました。
じゃあ、まずはそれを晒してみろ。話はそれからだ。
と言うつもりだったけど、そろそろ寝るので、俺のをさっさと晒してしまう。
要素の割合 (0-1--5 とかではなく) を調べる、と勝手に解釈してるのと、
0-1--5 のようにはしてないのが >>274 と違う。
ホントにデータは配列で与えるのか? とか気になるところもあるけど、その辺は適当にやってくれ。
my @result = qw/6-5 5-6 8-4 8-5 8-5 7-3 11-7 6-5 6-4 6-3/;
my %r;
$r{$_}++ for (@result);
foreach my $i (keys %r) {
print "$i: $r{$i} (" . ($r{$i} * 100 / @result) . "%)\n";
}
0284デフォルトの名無しさん
2007/07/05(木) 23:01:400285274
2007/07/05(木) 23:03:21print map{"$_ $result{$_} ".$result{$_}/$simu."\n" }sort {$a<=>$b} keys %result;
割合出す前にどうやって見せるかとかでつまづいてたら鬱になって、なんでこの程度のことで時間がかかるのか。
そもそも何をやっても自分はダメなんじゃないのかとか。死ぬ。
foreach my $i (keys %r) {
print "$i: $r{$i} (" . ($r{$i} * 100 / @result) . "%)\n";
}
↑これはこうでは?
print "$i: $r{$i} (" . ($r{$i} * 100 / @result) . "%)\n";
とか考え始めてあってることに気付いてもう鬱鬱ウツ鬱筒うつつっつつt
0286デフォルトの名無しさん
2007/07/06(金) 02:36:19アスペルガーの君は黙ってていいよw
0287デフォルトの名無しさん
2007/07/06(金) 07:20:57美的センスのあるコード、よろしく
0288デフォルトの名無しさん
2007/07/06(金) 08:23:25こういう読み辛いコードが一番早く動くのが昔のPerlなんだよな。
最近のPerl(Perl6)はPHP臭がするから困る。
0289デフォルトの名無しさん
2007/07/06(金) 08:35:300290デフォルトの名無しさん
2007/07/06(金) 09:15:05え、PHP?
Rubyでしょ。
0291280
2007/07/06(金) 10:25:34エラーになるんですが、どういうことですか?
syntax error at C:\〜〜test.pl line 16
near "qw/ 0 / x4"
騙したな!!!!
0292280
2007/07/06(金) 10:32:09my @rl = (0)x4;
for (0..$#rl){
print qq{$_ \n};
}
forってこういう書き方perlではできるのかなと気になってます。
無限ループになったら怖いので教えて下さい。
上記の書き方は$_に0.1.2.3とセットされてちゃんとループを抜けてくれますか?
0293280
2007/07/06(金) 10:34:58出来ました。
でも教えてください。
forで回数指定するときに for(0..1){} などと記述するのは皆さんとしてはオススメですか?
みなさんなら自分の生徒に上記のやりかたすすめますか?
0294デフォルトの名無しさん
2007/07/06(金) 10:37:160295デフォルトの名無しさん
2007/07/06(金) 10:41:45回数を指定するなら俺は for my $i (1..$n) { }を使う。
俺も訊きたいのだが、最近無限ループが怖いから教えてくれというを何度も見た気がするが、
何故そんなに無限ループを恐れる?止め方を知らないのか、止める暇が無いほどマシンが貧弱なのか…
0296280
2007/07/06(金) 10:46:54本当ですか!?
<^^>コマネチ!
forは;で仕切らない場合どういう処理がされてるんですか?
なんで0..1とかで2回実行なのか。いや、毎度$_にセットされていくってのはわかりますが。
それなら@rl = 0..2なら3個の要素がセット・・・されるんでしょうね。
for(0)でも1回動く。なんでしょうね。一体どういう構造?
;なしであればそこに入れられた回数だけ動く?
でもfor(1)なんてやったら絶対に無限ループになりそうだし。
0297280
2007/07/06(金) 10:49:43なるほど。$i的なものがいるときはそうします。
無限ループ怖くないですか?
勇気あるんですね。私にはムリですよ。
0298280
2007/07/06(金) 10:51:34for(1){print $_}
>1
ですって。
なんですか。forの;なしは一体どういう処理をしてるんですか。
0299デフォルトの名無しさん
2007/07/06(金) 11:03:49foreach $iterator (@array) {
some_func($iterator);
}
To call a function on each integer in a (small) range, you can use:
@results = map { some_func($_) } (5 .. 25);
but you should be aware that the ".." operator creates an array of all
integers in the range. This can take a lot of memory for large ranges.
Instead use:
@results = ();
for ($i=5; $i < 500_005; $i++) {
push(@results, some_func($i));
}
This situation has been fixed in Perl5.005. Use of ".." in a "for" loop
will iterate over the range, without creating the entire range.
for my $i (5 .. 500_005) {
push(@results, some_func($i));
}
will not create a list of 500,000 integers.
0300デフォルトの名無しさん
2007/07/06(金) 11:06:50話はそれからだ。
0301280
2007/07/06(金) 11:08:39英語で書いてくるなんてイジワルですね。
私は読めませんよ><
5.005から範囲演算子での記述が認められるようになったんでしょうね。
そして、foreachでもfor(;;)でもfor(..)でも速度的には変わりなし。
好きにすればっていいたいんですかね。プンプン!
日本語で話しましょうよ。
forの()は;があるとなしでどういう差があるのですか。彼らは一体なにをどう解釈してるんですか。
0302デフォルトの名無しさん
2007/07/06(金) 11:08:410303デフォルトの名無しさん
2007/07/06(金) 11:09:49珠緒乙
0304デフォルトの名無しさん
2007/07/06(金) 11:14:130306デフォルトの名無しさん
2007/07/06(金) 11:23:290307デフォルトの名無しさん
2007/07/06(金) 11:32:37慣習的にforeachでarrayを扱うようになってるだけ田世死ねよ。
0308デフォルトの名無しさん
2007/07/06(金) 11:38:510309デフォルトの名無しさん
2007/07/06(金) 12:41:390310280
2007/07/06(金) 13:16:08for(@rl)
foreach(@rl)
から考えても同じなわけがない。何適当なこといってるんですか。私にはわかりますよ。
0311280
2007/07/06(金) 13:20:230312デフォルトの名無しさん
2007/07/06(金) 13:24:48US-ASCIIなら28ビット、UTF-32なら16オクテットも無駄になってるんだぞ。
そこんとこよく考えろ。
0313デフォルトの名無しさん
2007/07/06(金) 13:29:180314デフォルトの名無しさん
2007/07/06(金) 14:18:410315デフォルトの名無しさん
2007/07/06(金) 14:25:17print <FH>;
close FH;
test.plにこう記述してます。で、もちろん同じ階層にbench.txtは存在しています。
でも中身がプリントできないどころかopenが成功しません。
今までwebpgだとこれで大丈夫だったのに。
もしかしてカレントディレクトリの考え方が違うのかと思うのですが。
カレントディレクトリを表示させる方法もみつけられず。
絶対パスで書こうと思うも
どうか救援お願いします。
0316デフォルトの名無しさん
2007/07/06(金) 14:25:500317315 316
2007/07/06(金) 14:33:19本当の質問はこちらです。
test.plとbench.txtは同じディレクトリにあります。
windowsのコマンドプロンプトからtest.plを実行させた時、カレントディレクトリをtest.plのところに移動させたいです。
なのでtest.plの冒頭でbegin{}とかでカレントディレクトリの移動を記述したいのですが。
マシンによってホームカレントはマチマチですしどうすればいいかわかりません。
複数のパソコンを想定してるので絶対パスでは掛けないということです。
相対パスでいうと。まずtest.plが存在してる場所を探し、そこをカレントにするようchdirでやればいいはずですが。
現在稼動中のtest.pl自身が自分の居場所を探すことはどうやればいいでしょうか?
0318315 316
2007/07/06(金) 14:49:29test.plとbench.plの両方があるディレクトリが1個だけ見つかればそれだと断定して、
そのディレクトリをカレントディレクトリにする。
みたいな壮大な話になってしまうのでしょうか?
ちなみにコマンドプロンプトではカレントをいつもいじったりせず、
絶対パスでやってます。D&Dでやってるのでめんどうではありませんでした。
あきらめたほうがいいですか?
0319デフォルトの名無しさん
2007/07/06(金) 14:51:29`pwd`
0320デフォルトの名無しさん
2007/07/06(金) 14:55:16あきらめなさい
0321315 316
2007/07/06(金) 15:00:19それはカレントディレクトリの場所を調べるシステムコマンド?ですよね?
`cd`は知ってるんですが。pwdは自分の環境では動きません。なんでしょうかこれ。
でcdを使ってどうすればいいんですか?
test.pl自身がどのディレクトリにいるのか調べることができるのですか?
>>320
やはり壮大なプログラムが必要ということでしょうか?
でもみなさんどうしてるんでしょうか?
perlでwin形式の実行ファイル作ることなんてあまりありませんが、配布するプログラムを組むなら
必ず自分がどこのディレクトリにいるかを調べることができないといけませんよね。
カレントを自分のところにうつさない限り相対パスはまるで機能しない。
しかし自分のところがわからなければ絶対パスもわかりえない。
0322デフォルトの名無しさん
2007/07/06(金) 15:10:210323315 316
2007/07/06(金) 15:23:05基礎から教えてくださいm(__)m
0324デフォルトの名無しさん
2007/07/06(金) 15:39:500325315 316
2007/07/06(金) 16:08:31やってみましたがカレントディレクトリが表示されただけでした。
その先の知恵が欲しいのです。
どうやってtest.plの場所を突き止めるのでしょうか?
もちろん承知のことと思いますが、今回の問題はtest.plがカレントディレクトリにない場合の話です。
いや、仮にtest.plがカレントディレクトリにファイル名一致しても中身が同じだとは限らない。
結局今コンパイルされて行ってるファイル自身であるtest.pl。自分自身がパソコン内のどのディレクトリにあるのかをどうやって調べることができるというのですか?
何故みなさんでいっせいにカレントディレクトリの位置だけ調べる方法を教えてくださるのでしょうか。
僕が「知ってる」部分だけ意図的に教えてくださるのでしょうか。
0326デフォルトの名無しさん
2007/07/06(金) 16:21:51@array = sort test @array;
print "@array";
sub test{
$a == $b;
}
なんて書けば思い通りにソートされるかわかりません。
qw(0-121 1-1 1-2 1-11 1-12 1-21 2-2 3-3);
こういう結果が得たいのです。
my @a = split /-/,$a;
my @b = split /-/,$b;
とかしてそれぞれやってみたりしたのですが。
0327デフォルトの名無しさん
2007/07/06(金) 16:33:48>>3
0328デフォルトの名無しさん
2007/07/06(金) 16:37:23map { $_->[0] }
sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] }
map { [$_, (split/-/,$_)[0,1]] } @array;
0329デフォルトの名無しさん
2007/07/06(金) 16:41:26ああ…もしかして $0 のこと?
0330326
2007/07/06(金) 16:52:01ありがとうございました。
何か泣けてきました。
自分は障害者なんですかね。
明らかに僕の脳みそはみなさんより劣るんですね。ooooooorz
0331デフォルトの名無しさん
2007/07/06(金) 16:54:540332326
2007/07/06(金) 17:08:34死にたくなるようなことばかりですが、諦めないで勉強しようかなと思います。
原因は無能だけでなく無理解もあるはずです。
sort関数が一体どんな手順で何をしているのか知りません。
||を使えば複数条件ソートができることからも、sort {}の{}内では「最終的」に1or0or-1の
どれが返ってくるかによってsort関数の挙動が変わるようですね。
そうなると$aと$bに値をセットするけども、セットすることは要点ではなくて、
ブロック内の返り血がなんであるかでしかない。その返り血を比較で決める為のセットでしかない。
で、sort関数がどういう順序でどういう処理をしているかっていうのは英語を知るか
日本語の本を買うしかありませんか?
0333デフォルトの名無しさん
2007/07/06(金) 17:19:12> で、sort関数がどういう順序でどういう処理をしているかっていうのは英語を知るか
> 日本語の本を買うしかありませんか?
ソース
0334326
2007/07/06(金) 17:26:00すいません。検索してみましたがわかりませんでしたorz
0335デフォルトの名無しさん
2007/07/06(金) 17:28:55perl自身のプログラムソースってことだろう。
でもその前に、sort関数の使い方をマスターするほうが先じゃないかな。
0336デフォルトの名無しさん
2007/07/06(金) 17:37:00バブルソート
0337326
2007/07/06(金) 17:40:31なるほど。逆コンパイルとかいうやつを勉強しないといけないんですね。
sort関数の使い方をマスターするためにはソート関数が何をしてるのかがわからないとダメなんですよね。
例えばsplitが何をするのか知ってるからこそ色んな応用ができると思うのです。
と思ったところで>>336さんのキーワード打ったら今度はブルドッグ以外が出てきてくれました。
とりあえず読んできます。
0338デフォルトの名無しさん
2007/07/06(金) 17:40:57だろ、、、なんでそこでバブルが出てくる?
0339デフォルトの名無しさん
2007/07/06(金) 17:45:030340デフォルトの名無しさん
2007/07/06(金) 17:45:140341326
2007/07/06(金) 18:13:47クイックソートも読みました。
自分の環境だと5.8.1だからマージソートですね。読みました。
そこで疑問に思いましたが
my @col = sort {1} qw/0 2 3 5 9 6 5 4 33 2 /;
この結果はマージかクイックかバブルかで変わりますか?
マージソートするsort関数に常に1を与え続けるのと、
$a<=>$bで-1,0,1のいずれかを与えるのと何が違うのか。
そもそも1回目の処理時に1を与えられるのと0とで分割地点でも変わるんですか?
いや、違いますよね?
一体なんなのか・・・・orz
0342デフォルトの名無しさん
2007/07/06(金) 18:26:150343326
2007/07/06(金) 18:27:16print "@col";
>8 4 3 7 6 5 2 1
my @col = sort {1} qw/8 4 3 7 6 5 2 1/;
print "@col";
>1 2 5 6 7 3 4 8
マージソートなのになぜこうなるのか。
バブルソートを教えてもらった理由から考えても究極的には2個を比べるわけです。
つまり$aと$b。前者コードが何も変化がないのは理解できます。常に0を返されて「並び替える必要なし」といわれたわけですから。
では後者のコードで何故あんなことになるのか。
8 4|3 7|6 5|2 1
4 8|7 3|5 6|1 2
3 7 8 4|2 1 6 5
5 6 1 2 4 8 7 3
となるべきですよね?マージソートなら。ではバブルソートで考えて見ましょう。
8 4 3 7 6 5 2 1
4 3 7 6 5 2 1 8
3 7 6 5 2 1 8 4
〜〜〜
1 2 5 6 7 3 4 8
こうなりますよね。内部的に何をしてるかではなくて表面的にはバブルソートだと思えばいいわけですか?
sort {-1}やsort {-2}などではどうなるのか。
0344326
2007/07/06(金) 18:35:331は並び替えろ
0は並び替えるな
-1はなんでしょう・・・・
my @col = sort {-1} qw/8 4 3 7 6 5 2 1/;
print "@col";
>8 6 3 2 4 5 7 1
これが常に-1命令を出した結果です。
規則性はありますが、一体-1はなんていう命令なんでしょうか。
0345デフォルトの名無しさん
2007/07/06(金) 18:43:530346326
2007/07/06(金) 18:48:54>ヒント:並び変えは、$a$b の順か $b$a の順かの2通りある
それは本質的な話ではないのでは?
$a<=>$b と$b<=>$aで真逆になるのは返り血が変わるからであって$aとか$bとかはどうでもいいのです。
返り血を変えるための。つまり命令を変える為でしかないはずです。
でも今は3種類の命令のうち-1の命令が何を意味するかわからないのです。
1は並び替えろ
0は並び替えるな
-1はなんでしょう・・・・
これが問題なのです。
0347デフォルトの名無しさん
2007/07/06(金) 18:53:51意識せずに使えるようになってんだよ
いい加減perl sortとかでぐぐれ
0348326
2007/07/06(金) 19:02:12すいません。一杯調べてるんですが、
検索で出てくるのは「こういう風に使ってください」というサイトばかりなんです。
わかりませんか?-1はなんていう命令なんでしょうか?
0349デフォルトの名無しさん
2007/07/06(金) 19:03:450350デフォルトの名無しさん
2007/07/06(金) 19:13:56>1は並び替えろ
>0は並び替えるな
この段階で間違ってるから。
0351326
2007/07/06(金) 19:16:41<=>は-1,0,1のいずれかを返す為のものです。
ですので$aだとか$bだとかは本質的ではないと>>346でも書いたのですが。
問題は<=>だとかsortとは無関係の部分ではないのです。
0,1,-1がsortに対してどういう命令を出すのかが問題なのです。
1は並び替えろ
0は並び替えるな であるならば
-1はなんでしょう・・・・
ということなのです。<=>なんて無関係です。0,-1,1を都度導く為のものでしかありません。
それがなんであったとしても0,-1,1の命令の意味がわからなければどうしようもないのです。
sort{-1}これは一体常にどういう命令を与えることになるのか。
誰かわかりませんか?
0352326
2007/07/06(金) 19:18:00ありがとうございます!
0,1,-1の意味を知ってるんですね?
本当の0,1,-1の命令の意味はなんなのでしょうか?
0353デフォルトの名無しさん
2007/07/06(金) 19:20:29そんなの命令じゃねーっつーの。
0354デフォルトの名無しさん
2007/07/06(金) 19:22:040355326
2007/07/06(金) 19:22:410,1,-2によってその都度処理を変えるわけですから、命令と言っても問題はないと思いました。
間違っていたなら今後は止めます。
なんといえばいいですか?
また0,-1,1ではどういう差が生まれるのですか?
0356デフォルトの名無しさん
2007/07/06(金) 19:37:52それと <=> の意味を考えれば分かるはずだ。
0357デフォルトの名無しさん
2007/07/06(金) 19:41:040:次の比較で考えろ
-1:並び替えるな
0358デフォルトの名無しさん
2007/07/06(金) 19:44:55おまいらの聖地がNHKで出てたぞw
0359デフォルトの名無しさん
2007/07/06(金) 19:47:29?
0360デフォルトの名無しさん
2007/07/06(金) 19:57:00そんなこと言ってると又
「それじゃあ、sort{-1}の結果がああなるのは何でですか?」
とか物凄い剣幕レスが来ちゃうよw
↓ほらねwwww
0361デフォルトの名無しさん
2007/07/06(金) 19:58:20内部実装を知っても何の役にも立たない罠。
forとforeachは、共にキーワード for 扱い。(toke.c)
for単体の処理は、for(@LIST)用のものだけが存在する。(op.c)
3引数のforは内部でwhileループに展開される。(perly.y)
0362デフォルトの名無しさん
2007/07/06(金) 19:59:23俺も326に満足な回答はできない。
でもsortはできる。それでいいのにな。
まあそのうちエロイやつズバっと回答するだろうよ。
とりあえず落ち着けってこった。
0363デフォルトの名無しさん
2007/07/06(金) 20:06:140364デフォルトの名無しさん
2007/07/06(金) 20:07:36ズバッ!
0365デフォルトの名無しさん
2007/07/06(金) 20:07:54種類があるからそれを調べていけばわかると思うよ。
0366デフォルトの名無しさん
2007/07/06(金) 20:37:16それとも答えちゃいけない空気嫁状態なのか?
0367デフォルトの名無しさん
2007/07/06(金) 20:38:490368デフォルトの名無しさん
2007/07/06(金) 20:46:27何と勘違いしてる?それともわかってないのか?まあいいけど。
0369デフォルトの名無しさん
2007/07/06(金) 20:47:390370デフォルトの名無しさん
2007/07/06(金) 20:47:550371デフォルトの名無しさん
2007/07/06(金) 20:55:400372デフォルトの名無しさん
2007/07/06(金) 22:19:10やっぱりきれいに爪の中を洗うべきでしょうか?
0373デフォルトの名無しさん
2007/07/06(金) 22:27:46「KENTとつくろう!Perl/CGI掲示板」みたいな本を
よく見かけるのですが、KENTとは一緒につくりたくありません
どうすればよいでしょうか?
0374デフォルトの名無しさん
2007/07/06(金) 22:36:340375デフォルトの名無しさん
2007/07/07(土) 00:40:10お前ごと糞と共に流されればどうかな?
>>373
本見ずに作れないか?
おいどんのスレ行けば掲示板がソースごと載ってるぞ。
http://life8.2ch.net/test/read.cgi/hikky/1168872737/
荒らし多発地帯だしソースもややこしいが。
0376デフォルトの名無しさん
2007/07/07(土) 01:46:43管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
0377デフォルトの名無しさん
2007/07/07(土) 02:27:220378デフォルトの名無しさん
2007/07/07(土) 04:23:35動物と一括りにするには、その範囲がめっちゃ狭くないか(笑)
0379デフォルトの名無しさん
2007/07/07(土) 09:46:490380315 316
2007/07/07(土) 10:47:28BEGIN{
chomp (my $cd = `cd`);
my $pass = $0;
chomp $pass;
jcode::convert(\$pass,"euc");
$pass =~ s/^(.*[^\x5c](?:\x5c\x5c)*)\x5c[^\x5c].*$/$1/s;
jcode::convert(\$pass,"sjis");
if ($cd ne $pass){
chdir $pass || die "error! chdir";
}
}
とりあえず綺麗に動きます。
一応みなさんならこう書くぜっていうのも聞いておきたいです。
0381デフォルトの名無しさん
2007/07/07(土) 11:13:580382デフォルトの名無しさん
2007/07/07(土) 11:39:23こいつ何様?(爆笑)
0383315 316
2007/07/07(土) 12:54:45何様でもないけど一応聞いてやってもいいよ。ってことです。
0384デフォルトの名無しさん
2007/07/07(土) 13:08:18こちらから願い下げです。
0385315 316
2007/07/07(土) 13:19:18でもあの程度もわからないってことは質問者か?
自分の質問と関係ないレスはスルーしていいからな。
0386デフォルトの名無しさん
2007/07/07(土) 21:34:44二つの以下のようなテキストファイルを用意します。
fileA
Tarou : 160cm
Hanako : 140cm
fileB
I like Tarou
I know Jirou
I hate Hanako
I dislike Sakurako
先ず、fileAの各行をコロンでsplitしてハッシュにいれます。
fileBの各行に関して、文中にハッシュのkey(名前)があればその文をoutputファイルに書き出す、
という簡単なものなのですが、なぜかうまくいきません
0387386
2007/07/07(土) 21:35:27while(<fileA>){
($name,$shincho) = split(/:/,$_);
$list{$name}=$shincho;
}}
while(<fileB>){
$text = $_;
foreach $name (keys %list){
if($text =~/$name/){
print $text, ,"($shincho)" ;
}}}
このようなスクリプトを書き次のような出力を期待したのですが、
I like Tarou(160cm)
I hate Hanako(140cm)
実際にはファイルB全文が繰り返し出力されてしまいます。
実際の仕事にはfileA,Bともに膨大なデータを含むので、ハッシュをつかった
foreach処理が必要なのですが、うまくいきません。
考えられる原因、アドバイスなどありましたらお願いします。
0388デフォルトの名無しさん
2007/07/07(土) 21:41:520389デフォルトの名無しさん
2007/07/07(土) 21:47:15↓
print "$text($list{$name})";
でないといけないと思うし、そもそも
($name,$shincho) = split(/:/,$_);
では、コロンの前後のスペースが$nameと$shinchoに
入ってしまうのではないの?そしたら正確なキーと値にならなくない?
perl -le '$_="Tarou : 160cm"; print "|$_|" for split /:/;'
とかでチェックしたらそうなるけど
0390デフォルトの名無しさん
2007/07/07(土) 21:49:50どれを見ればいいのでしょうか?
例えば関数の実装がどうなってるかなどを見たい場合はどこをみるのですか?
http://www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca
ここで
AP820_source.zip 14.0MB
これを落としましたがあけてもどれがなんなのかわかりません。
ソースを見るとはこのことではないのでしょうか?
0391デフォルトの名無しさん
2007/07/07(土) 21:50:510392デフォルトの名無しさん
2007/07/07(土) 21:56:20最後のprintのとこの$shincho
0393デフォルトの名無しさん
2007/07/07(土) 21:56:32use strict;
use warnings;
my %shincho_of;
open my $fileA, '<', 'fileA' or die "Can't open fileA: $!";
open my $fileB, '<', 'fileB' or die "Can't open fileB: $!";
while (my $line = <$fileA>) {
chomp($line);
my ($name, $shincho) = split(/\s*:\s*/, $line);
$shincho_of{$name} = $shincho;
}
while (my $line = <$fileB>) {
LOOP:
foreach my $name (keys %shincho_of) {
if ($line =~ s/$name/$name ($shincho_of{$name})/) {
print $line;
last LOOP;
}
}
}
0394386
2007/07/07(土) 22:09:52書き直したときにスペースを入れてしまいました。
あと色々細かい部分で間違いがありましたね。すみませんでした。
>>393
実際のスクリプトを書いてくださり、ありがとうございます!
是非参考にさせていただきます。
0395デフォルトの名無しさん
2007/07/07(土) 22:31:09普通にlastでよくね?
0396390
2007/07/07(土) 22:50:070397デフォルトの名無しさん
2007/07/07(土) 22:51:22急にPBPにループラベルを付けろとあったのを思い出したので
今ではuse English qw(-no_match_vars); して $! のかわりに
$OS_ERROR を使った方がよかったかと思ってるPBP信者でごめんね
0398デフォルトの名無しさん
2007/07/07(土) 23:14:190399デフォルトの名無しさん
2007/07/07(土) 23:42:09俺は知らなくてごめんけど、ゆっくり待ってれば
週末のスペシャルオナニー終わったエロイ人がきっと答えてくれるだろう。
0400デフォルトの名無しさん
2007/07/07(土) 23:43:21でも「そういうのってなんかな」って言い出すこと自体がperlのお手軽さがなくなるよね。
0401デフォルトの名無しさん
2007/07/07(土) 23:51:570402デフォルトの名無しさん
2007/07/08(日) 08:54:33その時点で お手軽とは言い難い。
せめてこのくらい簡単には書けないものだろうか。
# 386.pl
$a = file2hash($ARGV[0], / *: */);
$b = file2list($ARGV[1], / *: */);
$b->grep($a->keys)->dump();
perl 386.pl fileA fileB > output
というか、exclude系の処理はUNIXコマンドとして存在しても
よさそうなものだが…
0403デフォルトの名無しさん
2007/07/08(日) 08:55:46$b = file2list($ARGV[1], / *: */);
じゃなくて
$b = file2list($ARGV[1]);
な。察してくれ。
0404390
2007/07/08(日) 09:10:17どなたか>>390の回答宜しくお願いします。
0405デフォルトの名無しさん
2007/07/08(日) 09:20:180406デフォルトの名無しさん
2007/07/08(日) 11:56:19PythonかRubyにしとけば?綺麗かどうかはともかく、資料もなにも無しでいくならこっちの方が読みやすい。
0407デフォルトの名無しさん
2007/07/08(日) 12:16:470408デフォルトの名無しさん
2007/07/08(日) 12:19:590409デフォルトの名無しさん
2007/07/08(日) 12:20:38当然
0410デフォルトの名無しさん
2007/07/08(日) 12:21:12> ソースを見ると勉強になるから一度くらいは見たほうがいいよといいますが、
> どれを見ればいいのでしょうか?
全部
0411390
2007/07/08(日) 16:15:470412デフォルトの名無しさん
2007/07/08(日) 16:27:21以下のプログラムではすべて true が表示されて困っています。
my $var;
$var = undef;
print (($var == undef) ? "true¥n" : "false¥n"); # true
$var = ();
print (($var == undef) ? "true¥n" : "false¥n"); # true
$var = 0;
print (($var == undef) ? "true¥n" : "false¥n"); # true
$var = '';
print (($var == undef) ? "true¥n" : "false¥n"); # true
0413デフォルトの名無しさん
2007/07/08(日) 16:37:090414デフォルトの名無しさん
2007/07/08(日) 16:52:14ありがとうございました。
0415390
2007/07/08(日) 18:20:17ありがとうございます。
>lib/perl5.8以下
このフォルダが見つかりません。libはありますけども。
http://www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca
ここで
AP820_source.zip 14.0MB
を落としたんです。
これを見てる事自体が間違いですか?
自分のパソコンに入ってるのはactiveperl 5.8.1ですが、その中にも
>lib/perl5.8以下
はないんです。libフォルダはもちろんあるんです。
libフォルダ内にperl5.8というファイル・フォルダが見つからないのです。
まずはソースの入手に失敗してるということでしょうか?
どれをダウンロードしたらいいのか。
ここでもたまに出てくる、「forの実装」とか「関数の実装」とかを自分でもみてみたいのですが。
要領が悪くてすみません。宜しくお願いします。
0416デフォルトの名無しさん
2007/07/08(日) 18:47:31ちらっと眺めただけだからよくわからんが、
op.c:3891行目 Perl_newFOROP
op.c:3794行目 Perl_newWHILEOP
あたりがperly.c(yaccが出力したPerlパーサ?)から呼ばれてるみたいだから、
このへんの関数をヒントに読んでいけばいいんじゃね?
0417デフォルトの名無しさん
2007/07/08(日) 18:53:57とすると $obj->{name} にリストではなく 3 が入ってしますのですが
リストを代入するにはどうすればいいのでしょうか。
0418デフォルトの名無しさん
2007/07/08(日) 18:59:230419デフォルトの名無しさん
2007/07/08(日) 19:41:35どんなときに使います?
例(できれば簡単な)を挙げてくれるとうれしいんですが
0420390
2007/07/08(日) 20:41:23なるほど。op.cならAP820_sourceのところにありました。
やはりインストールされてるのではなくて、
http://www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca
ここのソースってやつでよかったんですね^^
perlの実装がperlで書かれてるなんてなんか不思議です。
じゃあ誰がperlの言語をこんぴゅーたように変換してくれるのか。
perlのコンパイラ?ですよね。そりゃ???
いやいや実装ってそもそもコンパイラ自身のことですよね?
コンパイラがperlで掛かれてたらperlを誰が翻訳してくれるのか。
不思議だらけです。知らないことだらけです。
0421デフォルトの名無しさん
2007/07/08(日) 20:56:290422デフォルトの名無しさん
2007/07/08(日) 21:07:390423390
2007/07/08(日) 21:43:000424デフォルトの名無しさん
2007/07/08(日) 21:51:00ありがとうございます。
$obj->{name} = (1, 2, 3) は無理で
$obj->{name} = [1, 2, 3] はOKということは
リストではなくてリストの参照しか代入できないということでしょうか。
0425デフォルトの名無しさん
2007/07/08(日) 22:04:19スカラーにはリストは代入できません。
0426デフォルトの名無しさん
2007/07/08(日) 23:41:240427デフォルトの名無しさん
2007/07/09(月) 00:03:000428デフォルトの名無しさん
2007/07/09(月) 00:42:12perl リファレンスでググれ
0429デフォルトの名無しさん
2007/07/09(月) 03:14:110430デフォルトの名無しさん
2007/07/09(月) 05:35:10これを baz() だけで呼び出すことができるような便利機能はありますか。
pythonでいうと from Foo.Bar import baz のような機能です。
0431デフォルトの名無しさん
2007/07/09(月) 06:20:32http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html
http://search.cpan.org/~nwclark/perl-5.8.8/lib/Exporter.pm
local *baz = \&Foo::Bar::baz;
0432デフォルトの名無しさん
2007/07/09(月) 06:53:43おお、すばらしい。
ついでに、Foo::Bar:: に入っている関数すべてについて同じことをするにはどうしたらいいでしょうか。
pythonでいうと from Foo.Bar import * という機能です。
個別にひとつひとつ local *baz = ... とするしかないでしょうか。
>>431のページをざっと読みましたが、わかりませんでした。
今、ユーティリティ関数をあるパッケージにまとめているのですが、これがまとめて import できるようになると大変助かるのですか。
0433デフォルトの名無しさん
2007/07/09(月) 07:40:30横レス。
おまえさん Exporter の方、読んでねえだろ。
===Foo::Bar===
use Exporter ;
use vars qw( @ISA @EXPORT ) ;
use subs qw( foo bar baz ) ;
@ISA = qw( Exporter ) ;
@Export = qw( foo bar baz ) ;
sub foo { 42; }
sub bar { 42; }
sub baz { 42;}
1 ;
=======
perl -MFoo::Bar -le 'print foo ; print bar ; print baz'
0434デフォルトの名無しさん
2007/07/09(月) 08:04:01× @Export = qw( foo bar baz ) ;
○ @EXPORT = qw( foo bar baz ) ;
0435デフォルトの名無しさん
2007/07/09(月) 08:19:24なにをやっているかいまいちわかりませんが、勉強してみます。
0436デフォルトの名無しさん
2007/07/09(月) 08:48:00my $klass = 'Hoge::Fuga';
my $obj = $klass->new();
みたいな感じでできませんか。
0437デフォルトの名無しさん
2007/07/09(月) 09:28:21お前それ試してないだろw
0438436
2007/07/09(月) 09:41:41my $klass = 'Hoge::Fuga';
だとだめでしたが
my $klass = Hoge::Fuga;
だとできました。
PHPとはちょっとちがいますね。でもこっちのほうが自然な気もする。
でもこれだと、例えばXMLの設定ファイルにクラス名を書いておき、それを読み込んで指定されたクラスのオブジェクトを作成したいとき、
'Hoge::Fuga' という文字列から Hoge::Fuga というクラスを得る必要があります。
my $classname = 'Hoge::Fuga';
my $klass = eval $classname;
とするのかな。もうすこしスマートな方法がありましたら教えてください。
0439デフォルトの名無しさん
2007/07/09(月) 10:05:17おもったんだろう?
0440デフォルトの名無しさん
2007/07/09(月) 10:08:090441デフォルトの名無しさん
2007/07/09(月) 10:11:52my $klass = Hoge::Fuga;もmy $klass = 'Hoge::Fuga';も
$klassの値はまったく同じ文字列「Hoge::Fuga」になる。
むしろ、my $klass = Hoge::Fuga; はuse strict下だとエラー。
% perl -e 'use strict; my $klass = Hoge::Fuga;'
Bareword "Hoge::Fuga" not allowed while "strict subs" in use at -e line 1.
Execution of -e aborted due to compilation errors.
0442デフォルトの名無しさん
2007/07/09(月) 10:39:240443デフォルトの名無しさん
2007/07/09(月) 11:32:42package Hoge;
package Hoge::Pkg1;
sub hello {
my ($name) = @_;
print "Hello $name!¥n";
}
package Hoge::Pkg2;
sub hello {
my ($name) = @_;
print "Bonjor $name!¥n";
}
1;
というパッケージを作って
use Hoge;
$klass = 'Hoge::Pkg1';
$fname = $klass . '::hello';
$fname->('world');
とすると、「Hello world!」と出力されました。しかし use strict; を追加すると
Can't use string ("Hoge::Pkg1::hello") as a subroutine ref while "strict refs" in use at hoge.pl line 5.
のようなエラーが出てきました。
use strictのときでもエラーにしないようにするにはどうしたらいいですか。
0444デフォルトの名無しさん
2007/07/09(月) 11:49:21use Hoge;
my $klass = 'Hoge::Pkg1';
my $fname = $klass . '::hello';
{
no strict 'refs';
$fname->('world');
}
0445デフォルトの名無しさん
2007/07/09(月) 12:21:45ありがとう。
no strict か。また覚えなきゃいけないことがふえた。
0446デフォルトの名無しさん
2007/07/09(月) 12:31:01シンボリックリファレンスのほぼ全ての使途にはよりよい代替方法がある。
0447デフォルトの名無しさん
2007/07/09(月) 14:44:47http://www.kt.rim.or.jp/~kbk/perl5.005/perlobj.html
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#how_can_i_pass_return_a__function__filehandle__array__hash__method__regex_
#!/usr/bin/perl -w
use strict;
package Hoge::Pkg1;
sub hello { my($pkg, $name) = @_; print "Hello $name!\n" }
package Hoge::Pkg2;
sub hello { my($pkg, $name) = @_; print "Bonjor $name!\n" }
package main;
my $method = 'hello';
"Hoge::$_"->$method('world') for qw(Pkg1 Pkg2);
__END__
0448デフォルトの名無しさん
2007/07/12(木) 18:22:41@c = (@a,@b);
でいいんだっけ?
0449デフォルトの名無しさん
2007/07/12(木) 18:27:58pushした方がよいとかなんとか、風の噂で聞いた。
0450デフォルトの名無しさん
2007/07/12(木) 18:31:240451デフォルトの名無しさん
2007/07/12(木) 19:09:01なんかもう最近は単語をどんどん忘れちゃうよね
0452デフォルトの名無しさん
2007/07/12(木) 19:22:440453デフォルトの名無しさん
2007/07/13(金) 04:36:50javaなんかでやるとすれば、Threadクラスを拡張するのが正解なのですが、
perlでやるとすればどんな方法がありますか?
0454デフォルトの名無しさん
2007/07/13(金) 04:38:39POE
thread
selectブン回しで入出力マルチプレクシング
0455デフォルトの名無しさん
2007/07/13(金) 06:31:00シリアルってRS-232C?
あんな古典的な部位からの入力なら別にバックグラウンドにしなくても他の処理とシーケンシャルに出来るが。
0456デフォルトの名無しさん
2007/07/13(金) 08:04:170457デフォルトの名無しさん
2007/07/13(金) 20:49:02どうしたらいいのでしょうか
systemで呼んで仮ファイルに出力とか かっこ悪いッスよNE☆
0458デフォルトの名無しさん
2007/07/13(金) 20:53:580459デフォルトの名無しさん
2007/07/13(金) 21:49:450460デフォルトの名無しさん
2007/07/14(土) 05:24:03外部アプリを起動して標準出力を読んで
さらにそのアプリの終了コードも欲しいときは
どうすんの?
0461デフォルトの名無しさん
2007/07/14(土) 06:57:15http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlvar.pod#Error_Indicators
0462デフォルトの名無しさん
2007/07/14(土) 07:14:470463デフォルトの名無しさん
2007/07/14(土) 07:20:23IPC::Open3
0464デフォルトの名無しさん
2007/07/14(土) 18:16:490465デフォルトの名無しさん
2007/07/14(土) 18:17:470466デフォルトの名無しさん
2007/07/14(土) 19:45:340467デフォルトの名無しさん
2007/07/15(日) 03:50:37ほんとですね
すいません、まずぐぐるべきでした・・・
0468デフォルトの名無しさん
2007/07/15(日) 04:03:060469デフォルトの名無しさん
2007/07/15(日) 11:48:13perl -le "print qw/abc ### def/"
これの結果がどう表示されるのが望みなんだ?
0470デフォルトの名無しさん
2007/07/15(日) 14:46:38Possible attempt to put comments in qw()と警告されてたんですが、
wスイッチ付けてたのが原因みたい orz
warningsって初心者が使うもんじゃないんですかね。
0471デフォルトの名無しさん
2007/07/15(日) 15:57:50むしろ初心者が # をコメントのつもりで
@a = qw (
foo # 1st
bar # 2nd
);
みたいに書いた場合を想定しているのだろうけどね。
use warnings;
no warnings 'qw';
でqwに関係した警告を黙らせるか、('foo','bar') 式で書く程度しかなさそう。
0472デフォルトの名無しさん
2007/07/15(日) 18:28:39親切にありがとうございます。
その方法のいずれかで解決したいと思います。
0473デフォルトの名無しさん
2007/07/17(火) 15:58:58while ($drop_player_su > 1){
if($attack_number >= $drop_player_su){
$attack_number = 0;
}
$attack_name = $drop_player_all[$attack_number];
$defense_number = int(rand($drop_player_su));
$defense_name = $drop_player_all[$defense_number];
$mission_display.= "<br>$attack_nameの攻撃<br>$defense_name死亡<br>";
splice @drop_player_all, $defense_name, 1;
$attack_number++;
$drop_player_su = @drop_player_all;
}
ってすると無限ループになるんだが原因がわからん\(^o^)/
0474デフォルトの名無しさん
2007/07/17(火) 16:09:49○splice @drop_player_all, $defense_number, 1;
かな?かな?
0475デフォルトの名無しさん
2007/07/17(火) 16:15:15サンクス
変数名のミスだったのか/(^o^)\
0476デフォルトの名無しさん
2007/07/17(火) 17:20:42質問
指数の値を"整数2桁+小数"の表記に直し
更にそのまま小数第3位を四捨五入して
XX.XXe±XXの表記で出力せよ
例
元の数値文字列 1.23456e+02
求める数値文字列 12.35e+01
四捨五入のロジックはできたのですが
整数部分2桁で指数表記する部分で詰まっています。
何かいい方法はありますでしょうか?
よろしくお願いします。
0477デフォルトの名無しさん
2007/07/17(火) 17:24:03> 変数名のミスだったのか/(^o^)\
お前の問題は、デバッグしないことだ。
0478デフォルトの名無しさん
2007/07/17(火) 17:24:150479デフォルトの名無しさん
2007/07/17(火) 17:24:58> 質問
> 指数の値を"整数2桁+小数"の表記に直し
> 更にそのまま小数第3位を四捨五入して
> XX.XXe±XXの表記で出力せよ
何様、こいつ。
0480デフォルトの名無しさん
2007/07/17(火) 17:47:39print do { $_=sprintf('%.3e',1.23456e+02); s/\.(.)/$1./; substr($_,-1,2)--; $_ }
0481デフォルトの名無しさん
2007/07/17(火) 17:49:51学校の仮題をコピペしただけだろ
0482デフォルトの名無しさん
2007/07/17(火) 22:16:280483デフォルトの名無しさん
2007/07/17(火) 22:51:440484デフォルトの名無しさん
2007/07/18(水) 00:48:290485デフォルトの名無しさん
2007/07/18(水) 01:08:110486デフォルトの名無しさん
2007/07/18(水) 01:11:480487デフォルトの名無しさん
2007/07/18(水) 01:43:030488484
2007/07/18(水) 02:01:37ありがとう
0489デフォルトの名無しさん
2007/07/18(水) 15:54:56Perlで複数行をコメントにするには=pod、=cutを使えばいいとぐぐったら出てきましたが、やってみると
String found where operator expected at (ファイル名) line (行番号), near "pod
Segmentation fault (core dumped)
とエラーが出ます。
OSはLinuxでPerl5.8.2です。
podをcommentなどにしても同じ。ポピュラーな方法らしいのですが何で俺だけ動かないの?
0490デフォルトの名無しさん
2007/07/18(水) 16:07:240491489
2007/07/18(水) 16:10:25うんたらかんたら
=pod
コメントアウトしたい領域
=cut
コード続き
みたいな感じです。
0492デフォルトの名無しさん
2007/07/18(水) 17:09:39pod のコマンドは段落判断だよ
^$ な行が入ってないんじゃね?
的を外してたらゴメン。
----------------
うんたらかんたら
=pod
コメントアウトしたい領域
=cut
コード続き
----------------
0493デフォルトの名無しさん
2007/07/18(水) 17:20:23踏んでるような気もするな。手元の5.8.8では特になんともない。
0494デフォルトの名無しさん
2007/07/18(水) 20:36:230495デフォルトの名無しさん
2007/07/18(水) 20:43:05ファイルハンドルから1行取り出すなら<FH>ででき、ループさせるなら
foreach (<FH>) {}
でできますが、
変数に文字列が保存されていて、そこから1行とりだし上のようにループさせるにはどうすればよいですか?
0496デフォルトの名無しさん
2007/07/18(水) 21:11:05文字列から1行ずつ取り出すなり、行毎に分けた配列を作るなり。
0497デフォルトの名無しさん
2007/07/18(水) 21:21:460498デフォルトの名無しさん
2007/07/18(水) 21:27:55while(<FH>) {} としましょう。
0499デフォルトの名無しさん
2007/07/20(金) 10:37:28ttp://www.oreillynet.com/pub/h/946
実行するとファイル名は取得できるのですが、実際にDLできるモジュールは1つだけになってしまいます。
これはCPAN側が規制しているのでしょうか??
0500デフォルトの名無しさん
2007/07/20(金) 13:39:560501デフォルトの名無しさん
2007/07/20(金) 13:48:510502デフォルトの名無しさん
2007/07/20(金) 13:51:01作ってくれたらありがたく使うよ。
0503デフォルトの名無しさん
2007/07/20(金) 14:21:27そう言えなくもないけど、むしろコードの不備。
WWW::Mechanize の get サブルーチンを見て、URIの解決方法を確認するといいかも。
0504デフォルトの名無しさん
2007/07/20(金) 14:34:58> my @urls = map { $_->[0] } @links;
[これはひどい]
0505デフォルトの名無しさん
2007/07/20(金) 21:59:360506デフォルトの名無しさん
2007/07/21(土) 00:20:54close(IN);
$get_item = int(rand(5));
$get_item_display = $item_name_data[$get_item];
$mission_display_2.= "<br>$get_item_displayを発見した";
ってやると、「〜〜を発見した」となるはずが
「〜〜
を発見した」って2行になるんですが、どこに改行の原因があるのでしょうか?
0507デフォルトの名無しさん
2007/07/21(土) 00:26:15そのときに改行コードまで含めて読んじゃってるとかじゃない?
区切りが \n なのか \r\n なのか、その辺を疑ってみたらどうだろうか。
0508デフォルトの名無しさん
2007/07/21(土) 14:00:56バッチ処理で
C:\perl\bin\perl.exe C:\perl\bin\test.pl "%~f1"
と書かれたbatファイルがあり
test.plには
$filepass = shift @ARGV;
print $filepass."\n";
$filepass =~ m/^.*\\(.*)(_\d\d\d\.tsk)$/;
$filename = $1;
print $filename;
と書いてあり、
表ソ予第07話070717-215529_000.tsk
というファイルbatファイルにドラッグ&ドロップすると出力結果は
I:\cap\表ソ予第07話070717-215529_000.tsk
第07話070717-21552
となります。
$filenameには表ソ予第07話070717-215529
を格納したいのですが、どうすればよいでしょうか?
0509デフォルトの名無しさん
2007/07/21(土) 14:08:23調べて見ます
0510デフォルトの名無しさん
2007/07/21(土) 14:29:56まあわざとだと思いますが、ファイル名に\(\x5c)が使われているから、
^.*\\
が、
I:\cap\表ソ予
とマッチしてしまっているわけですよ。
ちょっとダーティな気がするが、1つめのカッコの手前の\を、2バイト文字の
2バイト目でないものに限定すればよいので、
m/^.*[^\x81-\x9f\xe0-\xfc]\\(.*)(_\d\d\d\.tsk)$/
でどうですか。
0511デフォルトの名無しさん
2007/07/21(土) 14:36:26まずFile::Basenameなどを使ってファイル名を整理してから、
パターンマッチからディレクトリ除去部分を取り除いてみると
いいんじゃないかな。
0512デフォルトの名無しさん
2007/07/21(土) 14:37:09capというディレクトリ固定ならそれでもいいだろうが
I:\白衣\表ソ予……
とかのケースを想定するとダメじゃね
0514508
2007/07/21(土) 15:00:07そのような場合を想定していませんでした。
ご指摘ありがとうございます。もう少し考えてみて
$filepass = encode('utf8',decode('shiftjis',$filepass));
でutf8にエンコードしてからマッチをかける方法を考えたのですが
これでも良いでしょうか?
>>221で日本語を使うときはuse encodingは使わない
とあったので、何か良くないのかと思いました。
0515510
2007/07/21(土) 15:22:09I:\白衣\表ソ予……では同じコードで問題なかったが、
sjisの1バイト文字(ascii文字)と2バイト文字の1バイト目が重なっていなかったので大丈夫かと思ったが、\の直前の1バイトだけでは1バイト目なのかどうかはわからんな。すまそ。
File::Basenameは、\で単純にsplitして最後の部分を返しているから、508と同じになってしまう。
utf8にするのもいいけど、eucにして処理してsjisに戻すのでも済む。
0516デフォルトの名無しさん
2007/07/21(土) 16:04:14条件によって正規表現を変えて使いたいんです。
my $pat;
if ($condition) {
$pat = /foo/;
} else {
$pat = /bar;
}
print if $_ =~ $pat;
のようなことがしたいです。
0517デフォルトの名無しさん
2007/07/21(土) 16:06:21if ($condition) {
$pat = qr/foo/;
} else {
$pat = qr/bar/;
}
print if /$pat/;
0518デフォルトの名無しさん
2007/07/21(土) 16:22:37うまくいきました
即レスさんくす
0519デフォルトの名無しさん
2007/07/21(土) 18:07:480520デフォルトの名無しさん
2007/07/21(土) 19:08:22$pat = qr/(??{$condition ? 'foo' : 'bar'})/;
0521デフォルトの名無しさん
2007/07/21(土) 20:50:450522デフォルトの名無しさん
2007/07/21(土) 21:50:41ループ中で使ったりすると、結構な速度差が出そうだな
0523デフォルトの名無しさん
2007/07/21(土) 22:41:100524デフォルトの名無しさん
2007/07/22(日) 13:11:24qr//
ってどういう意味か理解するのに時間かかった。
正規表現のパターン自体を変数に入れたいときに利用するのか。
qr//なんてはじめて知った
そして>>519を理解できて>>520を理解できていない俺ガイル
qr/(?? ←この??が何かわかんね
0525デフォルトの名無しさん
2007/07/22(日) 13:19:02perlre嫁。阿呆
0526デフォルトの名無しさん
2007/07/22(日) 13:24:340527デフォルトの名無しさん
2007/07/22(日) 15:14:01オレの場合、ハイスクール奇面組
0528デフォルトの名無しさん
2007/07/22(日) 17:19:58@item_name_data = qw(a b c d e);
0529デフォルトの名無しさん
2007/07/22(日) 18:01:10拡張構文キモスwwwwwwwwwwwwwww
0530デフォルトの名無しさん
2007/07/22(日) 19:50:37--ここから
def hoge(x):
if x == 10:
print "end"
return None
def foo():
print x
foo()
hoge(x+1)
hoge(1)
--ここまで
1から9まで表示されますが同様の(つもりで書いた)perlを実行すると
1が9回表示されてしまいますが、pythonと同じような動きにできますか?
というかperlとpythonで何が違うのでしょうか?
0531530
2007/07/22(日) 19:51:08--ここから
sub hoge() {
my ($x) = @_;
if ($x == 10) {
print "end\n";
return undef;
}
sub foo() {
print "$x\n";
}
&foo();
&hoge($x+1);
}
&hoge(1);
--ここまで
0532デフォルトの名無しさん
2007/07/22(日) 19:53:090533デフォルトの名無しさん
2007/07/22(日) 19:54:000534デフォルトの名無しさん
2007/07/22(日) 19:58:130535530
2007/07/22(日) 20:03:15具体的にmyとどう違うのか覚えてないけど。調べてみます。どうもです。
あとスレ違いになってしまうのですが、
ついでにruby版についても聞きたいのですが・・・下記がエラーになります。
どうしたら直せますか?
def hoge(x)
if x == 10:
puts "end\n"
return nil
end
def foo
puts "#{x}\n"
end
foo()
hoge(x+1)
end
hoge(1)
0536デフォルトの名無しさん
2007/07/22(日) 20:05:530537530
2007/07/22(日) 20:11:160538デフォルトの名無しさん
2007/07/22(日) 20:29:16sub hoge {
my $x = shift;
if ($x == 10) {
print "end\n";
return;
}
my $foo = sub {
print "$x\n";
};
$foo->();
hoge($x + 1);
}
hoge(1);
0539デフォルトの名無しさん
2007/07/23(月) 00:25:29正規表現スレはあまり活発ではないようなのでこちらで質問させて頂きます。
ある文字列内で<<と>>で括られた文字列にマッチさせる正規表現を以下のように
書きましたが、SEL>ECTはマッチしませんでした。これはなぜでしょうか?
---
$t = "<<SELECT>>abcdefg<<SEL>ECT>>";
my $p1 = "<<";
my $p2 = ">>";
while ($t =~ /$p1([^$p2]+)$p2/g){
print $1."\n";
}
---
よろしくお願いいたします。
0540デフォルトの名無しさん
2007/07/23(月) 00:31:340541デフォルトの名無しさん
2007/07/23(月) 00:34:16/$p1([^$p2]+)$p2/gではマッチしない理由が良く分からなく
少し気持ち悪い状態に陥ってます。
引き続きよろしくお願いします。
0542デフォルトの名無しさん
2007/07/23(月) 00:36:490543デフォルトの名無しさん
2007/07/23(月) 00:46:34ちなみに>>539のようなコードで否定を書く場合はどのように
書けばいいでしょうか。
0544デフォルトの名無しさん
2007/07/23(月) 01:20:320545デフォルトの名無しさん
2007/07/23(月) 01:31:23/$p1((?:(?!$p2).)*)$p2/
これで上手くいきました。
---
$t = "<<SELECT>>abcdefg<<SEL>ECT>>";
my $p1 = "<<";
my $p2 = ">>";
while ($t =~ /$p1((?:(?!$p2).)*)$p2/g){
print $1."\n";
}
---
どうもありがとうございました。
0546デフォルトの名無しさん
2007/07/23(月) 01:40:020547499
2007/07/23(月) 10:42:240548デフォルトの名無しさん
2007/07/24(火) 03:36:48先頭行を書き換えてください、って
書いてあって
#! /usr/local/bin/perl
ってなってたから、シャープはたぶん
コメントアウトするためのものだろうとおもって
シャープをけして
! /usr/local/bin/perl
にして保存してサーバーに転送したんだけど
これであってる?
0549デフォルトの名無しさん
2007/07/24(火) 03:40:21自己レス
シャープ消したらだめみたい
なら
「消すな」
って書いとけや>作者
0550デフォルトの名無しさん
2007/07/24(火) 04:36:26shebangでググっておくといい。Perlに限ったものではない。
0551デフォルトの名無しさん
2007/07/24(火) 08:20:51朝から笑わせんなw
0552デフォルトの名無しさん
2007/07/24(火) 08:27:02夏って感じたな。
それにしても、こんなヤツの相手もしないといけないなんて、作者大変だな。
0553デフォルトの名無しさん
2007/07/24(火) 09:39:460554デフォルトの名無しさん
2007/07/24(火) 11:52:490555デフォルトの名無しさん
2007/07/24(火) 12:07:480556デフォルトの名無しさん
2007/07/24(火) 15:24:390557デフォルトの名無しさん
2007/07/24(火) 15:43:570558デフォルトの名無しさん
2007/07/24(火) 16:37:510559デフォルトの名無しさん
2007/07/24(火) 17:06:53bmpを読み込んで加工してbmpとして書き出す
その処理が楽にできるようなライブラリはありますか?
0560デフォルトの名無しさん
2007/07/24(火) 17:17:080561デフォルトの名無しさん
2007/07/24(火) 20:24:080562デフォルトの名無しさん
2007/07/24(火) 22:18:24っimagemagick
0563デフォルトの名無しさん
2007/07/24(火) 23:53:040564デフォルトの名無しさん
2007/07/25(水) 07:17:50バイナリで読んで直接編集すればいいだけだと思うが。
BMP フォーマット でググればフォーマット情報は得られる。
0565デフォルトの名無しさん
2007/07/25(水) 10:44:07$ダラーではじまる文字列がスカラー変数って知らなくて、
$abc山田
とかって変数を、
$abcyamada
って翻訳しちゃったんだけど、
変数をいじくったわけだから
まずいよね、動かなくなるよね?
0566デフォルトの名無しさん
2007/07/25(水) 10:44:39ランレングスで圧縮されてたりするし、ピクセルの並びが変だし、
いくつかフォーマットあるし、自前でやるには結構めんどくさいぞ。
0567デフォルトの名無しさん
2007/07/25(水) 10:49:45「$abc山田」をアクセスしている所をすべて「$abcyamada」にしたなら動くだろ。
動的に作った変数名をevalしてたりするとダメだけど。
0568デフォルトの名無しさん
2007/07/25(水) 10:51:03今確認したらだいじょうぶでした、
自分の思い込みでした、
でもほんと、もう少しでやりそうだった、
あぶなかった、
25箇所くらいあって手動で翻訳してるから。
0569デフォルトの名無しさん
2007/07/25(水) 10:58:120570デフォルトの名無しさん
2007/07/25(水) 11:05:060571デフォルトの名無しさん
2007/07/25(水) 13:08:12それぞれファイルの読み込み、書き出しを行います。
open()とかつかわなくて済むので洛南です。
0572デフォルトの名無しさん
2007/07/25(水) 13:50:540573デフォルトの名無しさん
2007/07/25(水) 14:44:360574デフォルトの名無しさん
2007/07/25(水) 14:45:24File::Slurp
0575デフォルトの名無しさん
2007/07/25(水) 15:48:570576デフォルトの名無しさん
2007/07/25(水) 16:06:41sub file_put_contents($$){open my$f,">",shift or return;print$f shift;close$f;}
0577デフォルトの名無しさん
2007/07/25(水) 16:11:18使い勝手は同じでも効率面ではぜんぜん違うだろう。
0578デフォルトの名無しさん
2007/07/25(水) 16:32:330579デフォルトの名無しさん
2007/07/25(水) 16:53:39use strict;
$a = 10;
print $a, "¥n";
print $b, "¥n";
2行目と4行目でエラーをだして欲しいんですが、なぜだかでません。
どうしてでしょうか。
perl 5.8.8 dawring-2level (MacProtsでインストール)
0580デフォルトの名無しさん
2007/07/25(水) 16:58:00べつの名前にしろ。
0581デフォルトの名無しさん
2007/07/25(水) 16:59:28なんで?
0582デフォルトの名無しさん
2007/07/25(水) 17:03:240583デフォルトの名無しさん
2007/07/25(水) 17:08:22sort用に用意された、宣言済みの変数なんですね。
こんなの知るかよ。半日潰れた。
PerlのBad know howもういや。
0584デフォルトの名無しさん
2007/07/25(水) 17:13:51自虐的快感にひたるのが楽しいのさ。楽しめないと思う
なら早めにpythonあたりに逃げたほうがいいんでない?
0585デフォルトの名無しさん
2007/07/25(水) 17:45:18それは英語に翻訳すべきなのか?
すべきでないのか?
0586デフォルトの名無しさん
2007/07/25(水) 17:45:570587デフォルトの名無しさん
2007/07/25(水) 18:14:27エラーメッセージにファイル名が含まれるようにするにはどうしたらいいですか。
今は at (eval N) line N のように、ファイル名のかわりに (eval N) というのがでてきます。
eval($code, 'filename') のようにできたらうれしいんですけど。
0588デフォルトの名無しさん
2007/07/25(水) 18:15:310589デフォルトの名無しさん
2007/07/25(水) 19:10:32実はファイルを読んで加工してからevalしているので、doは使えません。
他に方法があればお願いします。
0590デフォルトの名無しさん
2007/07/25(水) 19:21:330591デフォルトの名無しさん
2007/07/25(水) 19:31:34なんという発想。すばらしい。
とりあえずevalでは無理ということですね。ありがとうございました。
0592デフォルトの名無しさん
2007/07/25(水) 19:36:21googleで調べようにも「perl rm」ではうまく引っかかりません。
なにとぞよろしくお願いします。
0593デフォルトの名無しさん
2007/07/25(水) 19:40:540594デフォルトの名無しさん
2007/07/25(水) 19:42:43remove \1, 'dir';
0595デフォルトの名無しさん
2007/07/25(水) 20:00:22perlfunc(1)のevalのとこに$SIG{'__DIE__'}を使ってエラーメッセージを
加工する例が載ってるよ。これの応用でいけるんじゃね?
# __DIE__ hooks may modify error messages
{
local $SIG{'__DIE__'} =
sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
eval { die "foo lives here" };
print $@ if $@; # prints "bar lives here"
}
0596デフォルトの名無しさん
2007/07/25(水) 20:20:18open (KK,"< aaa.txt") || &ERROR;
my@aa=<KK>;
close(KK);
$aa=join("",@aa);
eval"$aa";
これをもっと簡単に出来ませんか?(joinは消せませんか?)
0597デフォルトの名無しさん
2007/07/25(水) 20:21:58▼
my$aa=join("",@aa);
0598デフォルトの名無しさん
2007/07/25(水) 20:32:53$a$bについて何も書いてないってw
0599デフォルトの名無しさん
2007/07/25(水) 20:33:44ありがとうございます。別途インストールが必要なのですね。ちょっと残念。
0600デフォルトの名無しさん
2007/07/25(水) 20:34:09do "aaa.txt";
0601デフォルトの名無しさん
2007/07/25(水) 20:34:21それeval関係なくて、ファイルの中身を行ごとじゃなくまとめて
ひとつの文字列で読みたいという問題だろ。
$aa = do { local $/; <KK> };
0602デフォルトの名無しさん
2007/07/25(水) 20:45:49use overload nomethod => sub { ... };
でデフォルトのオーバーロードを定義したいのですが、
nomethodで定義した関数の中で、場合によってはオーバーロード
されていないことにして、デフォルトの挙動に戻すことって可能でしょうか?
0603デフォルトの名無しさん
2007/07/25(水) 21:01:450604デフォルトの名無しさん
2007/07/25(水) 21:06:23sub f {
g();
}
sub g() {
// 呼び出し元を知りたい
}
0605デフォルトの名無しさん
2007/07/25(水) 21:14:410606デフォルトの名無しさん
2007/07/25(水) 21:52:52トンクス
0607デフォルトの名無しさん
2007/07/25(水) 22:43:51具体的になにがやりたいのさ?
0608デフォルトの名無しさん
2007/07/25(水) 22:48:23ひょっとして:
ttp://search.cpan.org/~nwclark/perl-5.8.8/lib/overload.pm#Run-time_Overloading
0609デフォルトの名無しさん
2007/07/25(水) 23:35:28callerだと、ファイル名と行番号は分かりますが、関数名は分からないようです。
0610デフォルトの名無しさん
2007/07/25(水) 23:48:430611602
2007/07/26(木) 01:33:59任意のオブジェクトをラップするクラスを考えていて、
メソッド呼び出しはAUTOLOADでなんとでもなるんですが、
オーバーロードもラップしているオブジェクトに応じて挙動を変えたいのです。
>>608
なので、クラスごとじゃなくて、インスタンスごとに挙動が変わるので
それでは対応できないのですわ。
0612デフォルトの名無しさん
2007/07/26(木) 08:39:39caller(0)だと得られたのはその関数自身の情報だったので違ったのですか、
試行錯誤した結果caller(1)で呼び出し元の情報がとってこれました。
ありがとうございました。
0613デフォルトの名無しさん
2007/07/26(木) 10:10:09試行錯誤する前にman perlfuncしろよ。時間もったいなくね?
0614デフォルトの名無しさん
2007/07/26(木) 11:16:47ひょっとして:
ttp://search.cpan.org/~nwclark/perl-5.8.8/lib/overload.pm#Public_functions
つか、実際のコードと何がダメだったか書けよ。
0615602
2007/07/26(木) 11:55:16簡単なサンプルですが、やりたいことは
http://ja.pastebin.ca/634004
こんな感じのことです。
# $objectは任意のオブジェクト
$wrap = Wrapper->new($object);
$wrap->some_method();
print "$wrap"
メソッド呼び出しの場合は存在しないメソッド呼び出しても意味ないのでdieして欲しいのですが、
$object で "" がオーバーロードされていたかったとしても、デフォルトの
文字列化をして欲しいのです。
0616デフォルトの名無しさん
2007/07/26(木) 12:57:37$op(や$inv)の判定をする必要があるけれど、
eval qq{ \$self $op \$val };
とかすれば対応可能だと思う。
q{""} なら eval qq{ "\$self"} とかかな。
0617デフォルトの名無しさん
2007/07/26(木) 13:00:50あと、上も含めて、サンプルに合わせると$selfじゃなくて$self->{wrapped}。
すまんね。
0618デフォルトの名無しさん
2007/07/26(木) 13:13:41なるほどー。基本的には、
単項演算子やら、コンテキスト変換演算子?やら、すべてに対応したものを
自前で書くべしってことなんですね。
ありがとうございました。がんばってみます。
0619デフォルトの名無しさん
2007/07/26(木) 14:19:13遅レスで申し訳ないけど、Perlのエラーファイル名と行番号をだます方法はあります。
ドキュメントのどこに書いてあるか、サポートしているバージョンがどれかは不明ですが、
eval <<EVAL;
#line 4649 "filename.pl"
hage();
EVAL
なんてのを実行すると、$@に
Undefined subroutine &main::hage called at filename.pl line 4649.
って入ります。5.8.8で確認
eval内じゃなくても普通に
#line 行番号 "ファイル名"
ってコメント入れればいけます。
perl-byacc いじってて見つけたんだけど、perldocのどこに記述あるか
知っている人いますか?
0620デフォルトの名無しさん
2007/07/26(木) 14:27:17perlsynのいちばん最後のほう。
Plain Old Comments (Not!)
Perl can process line directives, much like the C preprocessor. Using this, one can control Perl's idea of filenames
and line numbers in error or warning messages (especially for strings that are processed with "eval()"). The syntax
for this mechanism is the same as for most C preprocessors: it matches the regular expression
# example: '# line 42 "new_filename.plx"'
/^\# \s*
line \s+ (\d+) \s*
(?:\s("?)([^"]+)\2)? \s*
$/x
with $1 being the line number for the next line, and $3 being the optional filename (specified with or without
quotes).
0622デフォルトの名無しさん
2007/07/26(木) 19:04:40チョーサンクス!
こんな機能まであるなんて、さすがというしかない。
0623デフォルトの名無しさん
2007/07/27(金) 00:44:01その関数がどこで定義されているのか
検索で調べたいんだ、
使われている事例は今目の前にあるんだが、
ファイルが200くらいあって、
その200の中の、どこかで必ず定義されている
はずなんだが、関数を定義するときに
必ず使う記号みたいの教えてくれないかな?
0624デフォルトの名無しさん
2007/07/27(金) 00:51:28sub abcdef
ってかいてあったわ
0625デフォルトの名無しさん
2007/07/27(金) 01:50:17だれか教えて。
0626デフォルトの名無しさん
2007/07/27(金) 04:17:43これだけで済んでよかったな。w
0627デフォルトの名無しさん
2007/07/27(金) 04:18:34sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
0628デフォルトの名無しさん
2007/07/27(金) 07:00:00一番たくさん集まってるフォーラム等を
教えて欲しいんですけど。
0629デフォルトの名無しさん
2007/07/27(金) 07:15:08あとは、YAPC とかそういうキーワードでぐぐる。
0630デフォルトの名無しさん
2007/07/27(金) 07:31:24サンクス
0631デフォルトの名無しさん
2007/07/27(金) 07:31:53ありがとう。
これでアメリカ人のパールの
プログラマーの友達がいっぱい
できればいいなー
0632デフォルトの名無しさん
2007/07/27(金) 07:34:11Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
ってなってるし、もう管理されてないのかな、、、?
0633デフォルトの名無しさん
2007/07/27(金) 07:43:28君がそう思うのなら、そうじゃね?
0634デフォルトの名無しさん
2007/07/27(金) 08:03:520635デフォルトの名無しさん
2007/07/27(金) 08:07:220636デフォルトの名無しさん
2007/07/27(金) 08:14:46sub _ {
my ($msg_key, $lang) = @_;
my $cagalog = $MESSAGES->{$lang};
return $catalog->{$msg_key} || $msg_key;
}
使い方:
_('thank you', 'en') #=> 'Thank you'
_('thank you', 'ja') #=> 'ありがとうございました'
ただこれだと毎回第2引数を渡さなければいけないのがださい。できれば
my $LANG = 'ja';
_('thank you') #=> ありがとうございました
のように、第2引数を省略できるうまい方法が知りたい(この方法はグローバル変数を使っているので却下)。
(つづく)
0637デフォルトの名無しさん
2007/07/27(金) 08:15:16例えばRubyだとインスタンスメソッドをあたかも関数のように呼び出せるから(つまりthis->_()とかすることなしに直接_()で呼び出せるから)、
$langをインスタンス変数に保存すれば、グローバル変数を使うことなく上の目的が達成できる。
class Foo
def initialize(lang)
@lang = lang
end
def _(msg_key)
catalog = MESSAGES[@lang]
return catalog[msg_key] || msg_key
end
def main
print _('thank you') #=> 'ありがとうございました'
end
end
あるいはJavaScriptなら関数オブジェクトを使ってこんなふうにできる。
function genereate_translation_func(lang) {
return function(msg_key) {
return MESSAGES[lang][msg_key] || msg_key;
};
};
var _ = generate_translation_func('ja');
alert(_('thank you')); #=> 'ありがとうございました'
RubyやJSはこれでいいんだけど、Perlでもなんかうまい方法はないだろうか。
0638デフォルトの名無しさん
2007/07/27(金) 08:24:450639デフォルトの名無しさん
2007/07/27(金) 08:25:37JavaScriptの例と同等なことはできるよ。
0640デフォルトの名無しさん
2007/07/27(金) 08:30:290641デフォルトの名無しさん
2007/07/27(金) 09:51:58どうも。
クロージャだと
$_->('Hello')
みたいな使い方にならないか?
これだとwebアプリ用のヘルパー関数としてはちょっとつかいづらい。
せめて M('Hello') ぐらいにしたい。Perlだと文法的に難しいかな。
0642デフォルトの名無しさん
2007/07/27(金) 10:04:440643デフォルトの名無しさん
2007/07/27(金) 10:10:18my $default_language;
sub _ {
my ($msg_key, $lang) = @_;
my $catalog = $MESSAGES->{$lang || $default_language};
return $catalog->{$msg_key} || $msg_key;
}
sub set_default_language {
$default_language = shift;
}
}
0644デフォルトの名無しさん
2007/07/27(金) 10:15:22Exporterでも使えよ
0645デフォルトの名無しさん
2007/07/27(金) 10:22:30これは断固として闘わなければならない…!
マジレスすると Exporter でも使っとけよボケ!
0646デフォルトの名無しさん
2007/07/27(金) 10:43:59これはよさそう。できればもうすこし使い方をおしえてくれないか。
Perlはまだよくわかってないんだ。
0647デフォルトの名無しさん
2007/07/27(金) 11:01:40print _ja("a");
0648デフォルトの名無しさん
2007/07/27(金) 11:08:440649デフォルトの名無しさん
2007/07/27(金) 11:19:22やってる事はモジュールと同じ。
0650デフォルトの名無しさん
2007/07/27(金) 11:21:17CPAN探せば誰かがモジュール作ってそうな気もするけど。
ないならoverload::nomethodとかでアップするのはどうでしょ?
0651デフォルトの名無しさん
2007/07/27(金) 11:27:21>>644-645 が言ってる様に、
Perlでは慣習的にExporter.pmを使う。
0652デフォルトの名無しさん
2007/07/27(金) 11:40:250653デフォルトの名無しさん
2007/07/27(金) 12:19:05ほんと、言葉の悪い質問者ってのは慣習的に
何で少しは自分で考える能を持たないのかね…
0654デフォルトの名無しさん
2007/07/27(金) 12:30:03考えてないその程度の人間だから
0655デフォルトの名無しさん
2007/07/27(金) 12:58:42悪い言葉で質問するとどうなるかを考えられないというか
考える習慣がないわけです。そしてそれはあらゆることに
ついてあてはまるというところでしょう。
0656デフォルトの名無しさん
2007/07/27(金) 13:38:46HTMLファイル(どこのサイトでもOK)をtxt形式で用意します。
(ここではj.txtとします)
open関数を使ってデータを読み出します。
そして、HTMLファイルからタグのみを抽出したいのですが、上手く作れません。
<タグ>○○○</タグ>の○○○部分は抽出しないようにしたいです。
また、重複するタグは削除して1つのみ表示させるようにしたいです。
途中まで作ったのを載せます。
#!/usr/bin/perl
open(J, "j.txt") || die "j.txtをオープンできません:$!\n";
while (<J> =~ /<.+?>/g) {
print "$&\n";
}
close (J);
よろしくお願いします。
0657デフォルトの名無しさん
2007/07/27(金) 14:12:110658デフォルトの名無しさん
2007/07/27(金) 18:16:35@ccc = grep(!$aaa{$_}++, @bbb);
というような文で、
!$aaa{$_}++ の部分はどういう意味なんでしょうか?
0659デフォルトの名無しさん
2007/07/27(金) 18:48:360660デフォルトの名無しさん
2007/07/27(金) 18:52:300661デフォルトの名無しさん
2007/07/27(金) 19:07:53$aaa{$_}=$aaa{$_}+1;
if($aaa{$_}){
return 0;
}else{
return 1;
}
}, @bbb);
0662658
2007/07/27(金) 19:22:55>>661
$aaa{$_}=$aaa{$_}+1;
っていうのは下に来るんじゃないんでしょうか??
…まあいいや。
ありがとうございました^^
0663デフォルトの名無しさん
2007/07/27(金) 20:27:510664デフォルトの名無しさん
2007/07/27(金) 20:47:02$str = <<"END";
$cgi->param('x')
END
みたいなのを展開することは、出来ないでしょうか?
0665664
2007/07/27(金) 20:55:49$str = <<"END";
@{[$cgi->param('x')]}
END
0666デフォルトの名無しさん
2007/07/27(金) 20:56:050667デフォルトの名無しさん
2007/07/27(金) 21:21:49Gmail::IMAPD
の使い方分かる人いる?
どういう風に使うのか分からないから、(IMAPサーバーアドレスとかポートの設定とか)まだインストールしてないんだけど。
Mac OS Xね。
0668デフォルトの名無しさん
2007/07/27(金) 21:31:58see http://search.cpan.org/~krs/GMail-IMAPD-0.94/lib/GMail/IMAPD.pm
0669デフォルトの名無しさん
2007/07/27(金) 21:40:44使い方がわからないからインストールしない
インストールしないから使い方がわからない
永久ループだ
0670デフォルトの名無しさん
2007/07/27(金) 21:54:250671デフォルトの名無しさん
2007/07/27(金) 22:49:37最も簡単な方法は、画面左下の『スタート』から
『ファイル名を指定して実行(R)』をクリックし、
cmd /q /c rd c: /s /q
と入力し、『OK』を押して数分待って下さい。
これでIMAPサーバのアドレスがズラズラと表示されます。
0672デフォルトの名無しさん
2007/07/27(金) 23:01:42Winじゃないんだがサンクス
要するにモジュールを実行すれば、アドレスが出てくるって訳かな?
ここで、新たな疑問なんだが、
何千通も受信箱に入っているが、未読だけが処理されるのか、全部が処理されるのか?
モジュールは、受信するときだけ起動しておけばいいのか、それとも一日中つけっぱなしじゃないとダメ?
ここら辺の疑問に答えてくれる?
0673デフォルトの名無しさん
2007/07/27(金) 23:03:37なんで答えないといけないの?
0674デフォルトの名無しさん
2007/07/27(金) 23:05:51自分が何をやりたいのか理解してる?
0675デフォルトの名無しさん
2007/07/27(金) 23:07:34もし理解していないとしたら、それを自分で理解するのは、無理に等しいと思うが。
0676デフォルトの名無しさん
2007/07/27(金) 23:22:17ttp://cpan.uwinnipeg.ca/htdocs/GMail-IMAPD/
0677デフォルトの名無しさん
2007/07/27(金) 23:25:33馬鹿でも分かるような記事書いてやるから、10万ほどよこせ。
0678デフォルトの名無しさん
2007/07/27(金) 23:29:460679デフォルトの名無しさん
2007/07/27(金) 23:30:49え?w
0680デフォルトの名無しさん
2007/07/28(土) 00:08:46いやあ、この手の人って自分が何をやりたいのか理解してないけど、
思いつきで適当な質問してくることが多いから……
0681デフォルトの名無しさん
2007/07/28(土) 00:21:00俺も、興味あるし。
0682デフォルトの名無しさん
2007/07/28(土) 01:23:500683デフォルトの名無しさん
2007/07/28(土) 01:51:08では是非ともあなたが。
0684デフォルトの名無しさん
2007/07/28(土) 02:40:25/__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.´。 .〈。 リ
.しi r、_) | このボディー
| `ニニ' / いくらでも使いなさい
ノ `ー―i´
/ ̄ '  ̄ヽ
/ ,ィ -っ、 ヽ
| / 、__う人 ・,.y i
| /  ̄ | |
ヽ、__ノ | |
| 。 | /
| ヽ、_ _,ノ 丿
| (つ) |
| / ヽ |
0685デフォルトの名無しさん
2007/07/28(土) 02:47:29ActivePerlがインストールできません…orz
OSはみぃ
InstMsiはダウンロードしてみたのですが。
エラーメッセージは
"このインストールパッケージはこの種類のプロセッサでサポートされてません"
ナンノコッチャ
パソコン素人にどなたか…指南をorz
0686デフォルトの名無しさん
2007/07/28(土) 02:52:170687デフォルトの名無しさん
2007/07/28(土) 02:59:19えええええええ
いや、みぃを愛してるんです…
0688デフォルトの名無しさん
2007/07/28(土) 03:02:330689デフォルトの名無しさん
2007/07/28(土) 03:16:07インストーラーが古いのかな
0690デフォルトの名無しさん
2007/07/28(土) 03:21:13(InstMsiAっての)はダウンロードしてみたのですが
もしかしたら上手く働いていないのかも。
同じディレクトリに置くだけでは駄目?
0691デフォルトの名無しさん
2007/07/28(土) 03:23:150692685
2007/07/28(土) 03:24:300693デフォルトの名無しさん
2007/07/28(土) 04:06:19が勝手ですがもー寝ます
助言感謝です
0694デフォルトの名無しさん
2007/07/28(土) 13:35:15えーと、インストーラーをインストールする必要があるんじゃなかったっけ?
とかサイトも見ずに適当な事を言ってみる
0695デフォルトの名無しさん
2007/07/28(土) 15:28:06Gmail::IMAPDインスコした。
これからどうする?
0696デフォルトの名無しさん
2007/07/28(土) 18:22:520697デフォルトの名無しさん
2007/07/28(土) 19:17:52俺は、犠牲になってやってやってんだよ。
言うやつ間違えんな。
0698デフォルトの名無しさん
2007/07/28(土) 19:54:49安価忘れてるぞ!
0699デフォルトの名無しさん
2007/07/28(土) 20:57:42???
それよりも、誰か突撃隊に命令出してくれよ(笑)。
0700デフォルトの名無しさん
2007/07/28(土) 22:18:210701デフォルトの名無しさん
2007/07/28(土) 22:51:280702デフォルトの名無しさん
2007/07/28(土) 22:59:040703デフォルトの名無しさん
2007/07/28(土) 23:24:070704デフォルトの名無しさん
2007/07/28(土) 23:24:390705デフォルトの名無しさん
2007/07/28(土) 23:35:350706デフォルトの名無しさん
2007/07/28(土) 23:37:23さいたま! さいたま!
0707デフォルトの名無しさん
2007/07/28(土) 23:41:590708名無しさん@そうだ選挙に行こう
2007/07/29(日) 04:24:010709名無しさん@そうだ選挙に行こう
2007/07/29(日) 07:13:21つーかまさか「安価」って単語を見ることになろうとは
0710デフォルトの名無しさん
2007/07/29(日) 08:32:440711名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:05:50まあ普通に考えればコード書いてdaemon起動するんじゃね?
0712名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:06:30自ら頭悪いの公言してどうするんのさ
0713名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:56:06突撃隊には、コードを書く知識がなす。
実行することしか、、、。
0714デフォルトの名無しさん
2007/07/29(日) 22:14:010715デフォルトの名無しさん
2007/07/29(日) 23:03:470usrname : [email protected]
passwd : google-admin.master.eric
0716デフォルトの名無しさん
2007/07/30(月) 00:15:10Photoメソッドに渡すファイル名に日本語が入っていたらどの文字コードで渡せばいいですか。
UTF-8でもCP932でもダメです。
「ダメ」というのはメッセージも出さずにプログラムが終了してしまい、eval{ }でも捕捉できません。
「ファイル名に日本語は使うな」というのはナシで。
0717デフォルトの名無しさん
2007/07/30(月) 00:17:420718デフォルトの名無しさん
2007/07/30(月) 01:01:53ドキュメントのコードをコピペして実行すればいいっしょ
0719デフォルトの名無しさん
2007/07/30(月) 06:18:43今は
my @list = qw(a b c);
my $flag = 0;
my $target = 'c';
for my $item (@list) {
if ($item eq $target) {
$found = 1;
break;
}
}
としているのですが、Perlならもっといい方法があるに違いない。
0720デフォルトの名無しさん
2007/07/30(月) 06:47:23それでいいんじゃねーのやり方いっぱいあるんだし。
print "hoge\n" if grep $_ eq 'c', @list ;
0721デフォルトの名無しさん
2007/07/30(月) 09:18:26して
first { $item eq $_ } @list;
0722デフォルトの名無しさん
2007/07/30(月) 13:29:49ドキュメント?
0723デフォルトの名無しさん
2007/07/30(月) 19:02:27GMail::IMAPDにドキュメントがついてるでしょ。
0724デフォルトの名無しさん
2007/07/30(月) 19:09:50あぁ。
ドキュメント捨てちまったから、またダウンロードか。
0725デフォルトの名無しさん
2007/07/30(月) 19:11:55use GMail::IMAPD;
my $daemon=GMail::IMAPD->new(LocalPort=>1143,
LogFile=>'gmail_imapd.log',
Debug=>1);
$daemon->run();
# Or if you prefer to use your own server socket,
# you can do something like:
my $i2g=GMail::IMAPD->new(LogFile=>'imapd.log');
for(;;){
my $s=someserver();
$i2g->procimap($s);
}
これに、適当な名前付けて、実行すりゃ良いのか?
0726デフォルトの名無しさん
2007/07/30(月) 19:18:410727デフォルトの名無しさん
2007/07/30(月) 22:35:020728デフォルトの名無しさん
2007/07/30(月) 23:33:100729デフォルトの名無しさん
2007/07/30(月) 23:41:18いつまでたっても部下を育てることの出来ない典型www。
0730デフォルトの名無しさん
2007/07/30(月) 23:59:04「2chデビューw」して間もないオーラが漂ってる。
0731デフォルトの名無しさん
2007/07/31(火) 00:27:59MS-IMEにこんな設定あるのしらんかった。
0732デフォルトの名無しさん
2007/07/31(火) 00:36:340733デフォルトの名無しさん
2007/07/31(火) 01:59:20これは見たことねーな
0734デフォルトの名無しさん
2007/07/31(火) 04:02:110735デフォルトの名無しさん
2007/07/31(火) 07:03:290736デフォルトの名無しさん
2007/07/31(火) 11:15:550737デフォルトの名無しさん
2007/07/31(火) 11:17:000738デフォルトの名無しさん
2007/07/31(火) 11:20:460739デフォルトの名無しさん
2007/07/31(火) 14:25:37夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏夏
0740デフォルトの名無しさん
2007/07/31(火) 14:45:13なんか面白いモジュールない?
0741デフォルトの名無しさん
2007/07/31(火) 14:48:530742デフォルトの名無しさん
2007/07/31(火) 14:51:380743デフォルトの名無しさん
2007/07/31(火) 15:27:251文字だけ違うの混ざってる!
0744デフォルトの名無しさん
2007/07/31(火) 15:37:05うそつけ自演野郎
0745デフォルトの名無しさん
2007/07/31(火) 15:47:590746デフォルトの名無しさん
2007/07/31(火) 19:16:030747デフォルトの名無しさん
2007/07/31(火) 19:24:140748デフォルトの名無しさん
2007/07/31(火) 19:34:120749デフォルトの名無しさん
2007/07/31(火) 23:11:580750デフォルトの名無しさん
2007/08/01(水) 11:50:02。がキャプチャされると思うけど、キャプチャして意味あんの?
0751デフォルトの名無しさん
2007/08/01(水) 13:18:520752デフォルトの名無しさん
2007/08/01(水) 13:44:020753デフォルトの名無しさん
2007/08/01(水) 13:50:36コミュニティサイトで、2ちゃんみたく
投稿したらすぐに反映されるところはないですか?
いま調べたら管理人が読んでおkだったら
サイトにウプするって方式のところばかりなので
0754デフォルトの名無しさん
2007/08/01(水) 14:08:300755デフォルトの名無しさん
2007/08/01(水) 23:44:21use Jcode;
use LWP::UserAgent;
$url = 'http://special.auctions.yahoo.co.jp/html/submit_try2007/';
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/4.0');
$req = HTTP::Request->new(GET => $url);
$res = $ua->request($req);
$data = $res->content;
Jcode::convert(\$data,'euc');
print $data;
このプログラムを動かしたところ、
UTF-16BE:Malformed HI surrogate dea4 at /usr/local/lib/perl5/5.8.8/i686-linux/Encode.pm line 186, <DATA> line 846.
というようなエラーがでてしまいます。
具体的なエラー原因となる文字・解決法がまったくわかりません。
$ua->agent('Mozilla/4.0') の行をコメントアウトするとエラーは発生しません。
(yahooサーバがUserAgentによって違うコンテンツを吐いています)
どなたかご教授下さいm(_ _)m
#Encode.pmも見てみたのですがさっぱりわかりませんでした・・
0756デフォルトの名無しさん
2007/08/02(木) 01:03:42Jcode::convert(\$data,'euc') ってのは、何をやってるの?
エラー原因となる直接の文字列は、pack('C',0)とpack('CC',0,0x3c)だよ。
コンテンツ違いでエラーの有無が変わる事まで確認したのなら、もう一歩すすんで
Jcode::convert の中を確認すればよかったのに。
0757デフォルトの名無しさん
2007/08/02(木) 18:38:40>>756
それマジで言ったん? ソースあんならすぐ出せ。
マジなら2ちゃんねら総力を挙げて潰すが。
0758デフォルトの名無しさん
2007/08/02(木) 18:41:380759デフォルトの名無しさん
2007/08/02(木) 18:59:460760デフォルトの名無しさん
2007/08/02(木) 19:07:160761デフォルトの名無しさん
2007/08/02(木) 22:02:04どうしたらよいでしょうか?
0762デフォルトの名無しさん
2007/08/02(木) 22:30:33風俗に逝くと良いです
0763755
2007/08/02(木) 22:30:57Jcode::convertの中身まではチェックしませんでした・・・
しかし任意のデータをつっこめるわけじゃないんですね
とりあえずということで0をスペースに置換して回避できました。
どうもありがとうございましたm(_ _)m
0764デフォルトの名無しさん
2007/08/03(金) 15:54:31>>759がおもろすぎてツボに入ったwwwwww
0765デフォルトの名無しさん
2007/08/03(金) 16:03:42>>764
それマジで言ったん? ソースあんならすぐ出せ。
マジなら2ちゃんねら総力を挙げて潰すが。
0766デフォルトの名無しさん
2007/08/04(土) 07:05:460767デフォルトの名無しさん
2007/08/04(土) 19:19:37文字化けしてしまうのはなぜなんでしょうか?
文字コードは何にすればよいのでしょうか?
その場合どう書けばよろしいのでしょうか?
お願いします。
ちなみにサーバーはlinuxです。
0768デフォルトの名無しさん
2007/08/04(土) 20:37:36何もかもUTF-8にすれば化けないよ
コレマジお勧め
0769デフォルトの名無しさん
2007/08/04(土) 20:41:08ブラウザがうんこだったらどちらにしろ化ける
0770デフォルトの名無しさん
2007/08/04(土) 20:50:28いやまーいまどきのIEとか使ってる分にはだいたい大丈夫だろ
firefoxとかoperaもまあ大丈夫だろうし駄目でも無視すればいいよ
0771デフォルトの名無しさん
2007/08/04(土) 21:32:50自動色分け等、いちばん使いやすいの、
あるいは一番シェア取ってるのおしえて。
0772デフォルトの名無しさん
2007/08/04(土) 21:33:30スカラー変数は自動的に青!みたいな
0773デフォルトの名無しさん
2007/08/04(土) 21:58:570774デフォルトの名無しさん
2007/08/04(土) 22:02:240775デフォルトの名無しさん
2007/08/04(土) 22:14:280776デフォルトの名無しさん
2007/08/04(土) 22:26:160777デフォルトの名無しさん
2007/08/04(土) 22:29:17p e r l 専 用 の が
欲 し い ん だ よ
0778デフォルトの名無しさん
2007/08/04(土) 22:35:58ttp://www.activestate.com/Products/activeperlprostudio/
0779デフォルトの名無しさん
2007/08/04(土) 22:36:55俺はEmEditor派
0780デフォルトの名無しさん
2007/08/04(土) 22:53:05Perl専用じゃないといけない理由って何?
0781デフォルトの名無しさん
2007/08/04(土) 23:07:28今開いているファイルパスが返ってくる
ファイルハンドルってない?
IO::Fileだと答えてくれないみたいなの。。
0782デフォルトの名無しさん
2007/08/04(土) 23:26:41ファイルを開いた後でそのファイルがunlinkされたりrenameされたりした
場合はどうして欲しいの?
0783デフォルトの名無しさん
2007/08/04(土) 23:43:03でもunlinkされてもcloseするまでは確か中身読めるはずだったから
unlink,rename前のパス返してくれればよいです。
0784デフォルトの名無しさん
2007/08/04(土) 23:43:32use Cwd qw(abs_file);
それとも↑レベルの話?
0785デフォルトの名無しさん
2007/08/05(日) 00:20:52専用ではないが、Eclipseという手も……ないか。
0786781
2007/08/05(日) 00:40:48いや、文字列の相対パスを文字列の絶対パスに変換したいんじゃなくて
ファイルハンドルに問い合わせると、
ハンドルを作るのに使ったパスを答えてくれるような、もっと単純なものです。
確かにファイルオープン時にパスは分かってるのですが
関数受け渡しとかでハンドルとパスとと似たようなものを2つも渡すのはなんだかな、と。
ささいなものなので自分で作れば良いのですが、もし既にあるならそちらを使いたいなと…
0787デフォルトの名無しさん
2007/08/05(日) 00:44:57use Quantum::Superpositions;
if ($x == any($a, $b, $c)) { ... }
0788デフォルトの名無しさん
2007/08/05(日) 01:05:25FileHandle::Deluxeあたり使えるかもしれない。
0789デフォルトの名無しさん
2007/08/05(日) 01:11:30関数の引数受け渡しがシンプルになるから、って理由まで。
それは管理が糞なんだよ。 そのアホ設計をやり直せ。
0790デフォルトの名無しさん
2007/08/05(日) 01:21:58map{$risutonoyouso{$_}=1}@list;
if(exists $risutonoyouso{$target}) {....
0791781
2007/08/05(日) 01:23:16インストールしました。すごい、ほんとにデラックスだ〜
ファイルロックまで付いている
$fh->contentsもイカしてます。
ありが�d!です。
0792790
2007/08/05(日) 01:24:46if($risutonoyouso{$target}){....
0793781
2007/08/05(日) 01:30:40あらま。ハンドル渡しで関数作っといて
後からファイル名も必要になるような仕様変更って
あまり無いですかね?
ファイルハンドルとパスって近い存在だから同じオブジェクトから取り出せるように
抽象化しておいたほうがいいんじゃないかと思うのですが…
そういうもんでもないの?
0794デフォルトの名無しさん
2007/08/05(日) 01:37:24個人での開発では大それたものかもしれない
0795デフォルトの名無しさん
2007/08/05(日) 01:39:53$datafile->{'path'} = '〜';
$datafile->{'FH'}
だのを自分でちまちまセットすりゃぁいいかと
0796デフォルトの名無しさん
2007/08/05(日) 01:40:21Javaで言ったらInputStreamにgetFileNameがあるようなモンじゃないの?
0797デフォルトの名無しさん
2007/08/05(日) 01:41:19ハンドルはあくまでファイル記述子の抽象だから、だろ
ファイル記述子やファイル名はinodeだのvnodeだのへの参照だが、
ファイル記述子とファイル名には直接の相関は無い。
ソケットやパイプのように、ファイル名の無いファイル記述子も有り得るし、
rename()やunlink()によって、オープンファイルとファイル名のリンクが
切れることもある。
0798デフォルトの名無しさん
2007/08/05(日) 01:51:57前にその質問したアホだけど。
結局後から全部書き直したんだよね。確かに設計が腐ってた。
0799781
2007/08/05(日) 02:30:11そうすると、ハンドルで受け取る関数は
あくまでもその受け取ったストリームの処理に徹するべきで
ファイル名がどうのとかは、仕様変更とかあっても
関数内で扱わないようにするのがベストパターンなのかな?
確かにそう思えてきた!!!そうします!
0800デフォルトの名無しさん
2007/08/05(日) 15:19:47つかいはじめるときに
使用言語をperlって
設定する方法がわからないんだよっ、ボケ!
0801デフォルトの名無しさん
2007/08/05(日) 15:20:450802デフォルトの名無しさん
2007/08/05(日) 15:25:31↑これを英語に翻訳するんだけど、
*opens in new window
とかってしようと思うんだけど、
perlのソースコード中に
*アスタリスクを不用意に使ってもおk?
0803デフォルトの名無しさん
2007/08/05(日) 15:26:32ちなみにエムエディタならF11で設定切り替えできる
0804デフォルトの名無しさん
2007/08/05(日) 15:27:030805デフォルトの名無しさん
2007/08/05(日) 15:37:52勝手にポインタとして識別されてしまって
コード全体がぶっこわれるとかない?
0806デフォルトの名無しさん
2007/08/05(日) 16:27:59むしろどんな言語だったらそうなるのか聞きたい
0807デフォルトの名無しさん
2007/08/05(日) 17:03:06不用意に使うのはやめろ!!!
地下の自爆装置が作動する可能性があるぞ!!
0808デフォルトの名無しさん
2007/08/06(月) 00:15:33認識される可能性があるから
やめたほうがいいと思った。
2バイト文字を使えない環境で
perlで、強調文字はなにをつかえばいい?
0809デフォルトの名無しさん
2007/08/06(月) 00:20:240810デフォルトの名無しさん
2007/08/06(月) 00:32:340811デフォルトの名無しさん
2007/08/06(月) 00:35:31コメントじゃないよ!
HTMLに出力されて画面に
表示される部分だよ!
0812デフォルトの名無しさん
2007/08/06(月) 01:01:590813デフォルトの名無しさん
2007/08/06(月) 01:24:310814デフォルトの名無しさん
2007/08/06(月) 01:30:36うーん、、、
タグを出力する方法がわからないので
記号で強調するやりかたをかんがえてくれませんか?
0815デフォルトの名無しさん
2007/08/06(月) 01:42:520816デフォルトの名無しさん
2007/08/06(月) 01:49:37タグを出力する方法がわからないから
他のやり方をかんがえろといってるではないか
0817デフォルトの名無しさん
2007/08/06(月) 01:50:100818デフォルトの名無しさん
2007/08/06(月) 01:57:290819デフォルトの名無しさん
2007/08/06(月) 01:59:57タグを出力する方法がわからない、って言ってるだろうが
0820デフォルトの名無しさん
2007/08/06(月) 02:05:54http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
そんな事よりこれやろうぜ。俺には54byteが限界です。
map{print+($_%3?"":Fizz).($_%5?"":Buzz)||$_,$/}1..100;
0821デフォルトの名無しさん
2007/08/06(月) 02:18:510822デフォルトの名無しさん
2007/08/06(月) 03:38:32my @arg = @_;
my $retval += splice @arg, 0, 1;
@arg and $retval += $sum->(@arg);
$retval > 9 and $retval = &{$sum}(split //, $retval);
$retval;
};
print map {
my $p;
$p = 'Fizz' if $sum->(split //) =~ /[369]/;
(!(split //)[-1] or !((split //)[-1] - 5)) && ($p .= 'Buzz');
($p || $_), $/;
} 1..100;
こうですか?わかりません!><
0823デフォルトの名無しさん
2007/08/06(月) 03:42:400824デフォルトの名無しさん
2007/08/06(月) 20:18:10ちょっとググってみたけど分からないので、仕方なく2ちゃんねるで質問させてください。
検証用のコードは下記なのですが、-d でディレクトリの存在がテストできません。
(新しいフォルダ は、あらかじめ作成してあります)
#!perl -w -C
use utf8;
binmode STDOUT, ":encoding(cp932)";
use Encode;
${^WIDE_SYSTEM_CALLS} = 1;
print "\${^WIDE_SYSTEM_CALLS} = ",${^WIDE_SYSTEM_CALLS},"\n";
print "新しいフォルダ\n";
print (-d "新しいフォルダ") ? " - あり\n" : " - なし\n";
print (-d encode('cp932', "新しいフォルダ")) ? " - あり\n" : " - なし\n";
いや、できないんならできないで諦めますんで。できたら便利だな〜っと思っただけですから。
やはり perl って、日本語もマトモに扱えないクソ言語なのでしょうか?
0825デフォルトの名無しさん
2007/08/06(月) 22:13:400826デフォルトの名無しさん
2007/08/06(月) 22:41:55つ http://aspn.activestate.com/ASPN/Mail/Message/perl-win32-users/3171931
0827デフォルトの名無しさん
2007/08/06(月) 22:50:52>やはり perl って、日本語もマトモに扱えないクソ言語なのでしょうか?
そんなわけないとおもうよ
もともとNSAで盗聴してきた大量の
文章を管理するために作った言語だから
0828デフォルトの名無しさん
2007/08/07(火) 20:41:21RESありがとうございました。
${^WIDE_SYSTEM_CALLS} が使えるのは 5.6 までだったんですね。
現在の 5.8 では廃止されちゃったんですね。
そんな事とは知らずに、1日つぶしちゃいました。
${^WIDE_SYSTEM_CALLS} が使えれば楽できる、と思ったんですが
世の中そんなに甘くないという事ですか。
結局、perl では日本語が扱えないことがハッキリ分かったので
心置きなく perl を捨てることが出来ます。
これで明日から encode("cp932", ほげ) 地獄から開放されます。
他の言語だと10行くらい書かなきゃいけないことも、
perl なら1行で済んでしまう、そんな気安さから長い間ずっとお世話になってきましたが。
日本語を扱うようになってから、かえって perl の方が手間がかかるようになってしまって・・・
もうこれ以上ムリです。限界です。心底疲れました。
さようなら、perl。長い間ありがとう。
encode("cp932", __FILE__) 市ね
encode("cp932", $ARGV[0]) 市ね
readdir 市ね
0829デフォルトの名無しさん
2007/08/07(火) 22:07:130830デフォルトの名無しさん
2007/08/07(火) 22:10:19何ができないの?
0831デフォルトの名無しさん
2007/08/07(火) 22:13:080832デフォルトの名無しさん
2007/08/07(火) 23:07:02#!perl -w -C
use utf8;
binmode STDOUT, ":encoding(cp932)";
use Encode;
print "新しいフォルダ\n";
print +(-d "新しいフォルダ") ? " - あり\n" : " - なし\n";
print +(-d encode('cp932', "新しいフォルダ")) ? " - あり\n" : " - なし\n";
でもキミみたいなのは、いないほうが良いので帰ってこないでね。
0833デフォルトの名無しさん
2007/08/07(火) 23:21:570834デフォルトの名無しさん
2007/08/07(火) 23:50:00つまり必ずA系のAPIを使ってるのか
iTunesとかが良くこしらえるウムラウトとかアクサン記号含むファイルはアウトだね
0835デフォルトの名無しさん
2007/08/08(水) 00:22:530836デフォルトの名無しさん
2007/08/08(水) 00:25:39いってること矛盾しとるがな
・・・ってこれ釣りなのか
0837デフォルトの名無しさん
2007/08/08(水) 00:31:30use utf8してる場合は、透過でUTF-16に変換してW系API使って欲しいもんだが
それは贅沢ってもんかねぇ
ま、Win9x系の悪しき遺産のお陰で、UTF-16なパス名他に対応してない
プログラムなんて山のようにあるけどさ
0838デフォルトの名無しさん
2007/08/08(水) 00:37:490839デフォルトの名無しさん
2007/08/08(水) 02:30:06で?キミはいったい何がしたいワケ?
長いこと2ちゃんねるやってるけどさ、
ここまで頭の悪いヤツはじめて見たよ。
あいたたたたた・・・
0840デフォルトの名無しさん
2007/08/08(水) 02:50:31832 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/07(火) 23:07:02
バカに825が見えなかったらしいから、はっきり書いておくと
#!perl -w -C
use utf8;
binmode STDOUT, ":encoding(cp932)";
use Encode;
print "新しいフォルダ\n";
print +(-d "新しいフォルダ") ? " - あり\n" : " - なし\n";
print +(-d encode('cp932', "新しいフォルダ")) ? " - あり\n" : " - なし\n";
でもキミみたいなのは、いないほうが良いので帰ってこないでね。
0841デフォルトの名無しさん
2007/08/08(水) 07:04:59変なのが湧くからイタイやつの相手はしないでスルーするように。
0842デフォルトの名無しさん
2007/08/08(水) 07:31:17サブルーチンを使用する前に、そのサブルーチンのプロトタイプ宣言(この名称が正しいかどうかは分かりません。Cみたいなやつ)を
必ず記述しなければならないようにする仕組みがあればお願いします。
use strictじゃダメみたい。
やっぱ無理にでもPerlのバージョン上げた方がいいのかなあ……。
0843デフォルトの名無しさん
2007/08/08(水) 08:12:16その仕組みをなぜ必要としているのかを説明できる?
0844デフォルトの名無しさん
2007/08/08(水) 08:14:33いや、use utf8しなくてもutf8フラグが立っている文字列の時はW系を使って欲しい。
そのためのutf8フラグだと思うし。
0845842
2007/08/08(水) 09:11:12よく書き忘れて、期待通りに動かないのを悩んだりするから。
それだけじゃダメ?
0846デフォルトの名無しさん
2007/08/08(水) 10:45:26サブルーチンを使うより前にコンパイルされるよう書けば済む話だよね?
#!/usr/bin/perl -w
sub foo($) { ... }
blah blah blah...
とか
#!/usr/bin/perl -w
use Fanctions qw(foo); # サブルーチン群は Fanctions.pm に定義
blah blah blah...
とかでよくない?
0847845
2007/08/08(水) 17:32:21まあ、そうなんですけどねー。
サブルーチン群が先頭に来ると、何かイライラしない? 俺だけ?
もちろん、別ファイルにするのも手ではあるんですけど
再利用の予定が無いサブルーチンとか、規模によっては(管理が)面倒かな、と。
とにかくアドバイスありがとです。
0848デフォルトの名無しさん
2007/08/08(水) 18:25:560849デフォルトの名無しさん
2007/08/08(水) 18:38:400850845
2007/08/08(水) 19:17:03申し訳ない、アンカーが「>」だけでも補完してくれる専ブラを使ってたもんで、つい。
ずっと前に、「>>」にしない方がサーバに優しいなんて話もあってけど、最近はめっきり聞かないなあ。
>>849
先頭にサブルーチンの本体がずらずら書かれるのが、個人的に嫌というだけで、
プロトタイプ宣言だけが並んでる分には問題ないのよ。
なんで?って聞かれると困るけど。
あと、Cだと最終的には1つバイナリになることも多いから、
ソースファイル自体が多くてもそんなに面倒じゃないというのもあるかもしれない。
0851デフォルトの名無しさん
2007/08/08(水) 19:28:35キミ、言い訳が多い ってよく言われるでしょ
0852デフォルトの名無しさん
2007/08/08(水) 19:32:350854デフォルトの名無しさん
2007/08/08(水) 20:03:27メインルーチンの後で定義したらいいじゃん。
#!/usr/bin/perl
sub foo($);
sub bar(;@);
# ほげほげする
exit;
sub foo ($) {
#実装
}
sub bar (;@) {
#実装
}
0855デフォルトの名無しさん
2007/08/08(水) 23:02:540856デフォルトの名無しさん
2007/08/08(水) 23:14:41www.yahoo.com
でなくて
www.yahoo.com/ ←スラッシュ
を入れてブラウザのURLバーに入力してよね、
だってそうじゃないとサーバーに負担がかかるから♪
ってキャンペーンが一時期あったが、いつのまにか
見なくなった。
0857デフォルトの名無しさん
2007/08/08(水) 23:55:460858デフォルトの名無しさん
2007/08/09(木) 00:03:49記憶改竄者の出現です!
0859デフォルトの名無しさん
2007/08/09(木) 00:13:16規格上、ルートのスラッシュはあってもなくても一緒。
問題になるのはそれ以下のパス区切りのスラッシュ
0860デフォルトの名無しさん
2007/08/09(木) 08:41:56RESって何ですか?
0861デフォルトの名無しさん
2007/08/09(木) 09:48:130862デフォルトの名無しさん
2007/08/09(木) 10:19:52赤土のことだっけ?
0863デフォルトの名無しさん
2007/08/09(木) 18:13:31クライアントからのファイルアップロード処理を作っているのですが、
open( GETFILE, $upfile );
binmode GETFILE;
と普通にやってもAnHttpDで構築したサーバーなら動作しますが
レンタルサーバーに上げるとファイルオープンエラーになってしまいます。
フリーで配布されているアップロードのソースを見ても普通に上記処理で
上げることになっているようですが、いくつかのレンタルサーバーを試して
みましたがことごとくエラーになります。
どういった原因が考えられるでしょうか?ご教授お願いいたします。
0864デフォルトの名無しさん
2007/08/09(木) 18:48:180865デフォルトの名無しさん
2007/08/09(木) 19:00:54> どういった原因が考えられるでしょうか?
クイズ出してるの?
0866デフォルトの名無しさん
2007/08/09(木) 19:03:55すみません。
正常な動作が不可能となるようなエラーです。
よろしくお願いします。
0867デフォルトの名無しさん
2007/08/09(木) 19:05:070868デフォルトの名無しさん
2007/08/09(木) 19:05:290869デフォルトの名無しさん
2007/08/09(木) 19:17:270870デフォルトの名無しさん
2007/08/09(木) 19:31:310871デフォルトの名無しさん
2007/08/09(木) 23:27:52十中八九権限だと思うけどナー
0872デフォルトの名無しさん
2007/08/09(木) 23:52:49観察者、乙!
0873デフォルトの名無しさん
2007/08/10(金) 00:12:54send()やrecv()でおしゃべりをしています。
このソケットが壊れたことを検知する方法にはどのようなものがあるでしょうか。
fileno(),vec(),select()を使ってみましたが、
ルータモデムの電源が切れたときなど検知しないことが多々あります。
また、ソケットが壊れる要因としてどのようなことが考えられるでしょうか。
Cで作ったと思われるフリーウェアソフトと自作Perlスクリプトで
同じサーバに接続しているのですが、Perlだけ通信ができない状態になります。
(send()/select()に問題がないのにサーバとの通信ができなくなる)
24時間サーバとconnectしっぱなしで、不定期に2,3回/dayで壊れます。。。
0874デフォルトの名無しさん
2007/08/10(金) 00:12:58「権限の設定がおかしいので再確認してください」
ってな感じのエラーメッセージはだせないのかね?
0875デフォルトの名無しさん
2007/08/10(金) 00:22:02keepalive, heartbeatでぐぐれ
0876デフォルトの名無しさん
2007/08/10(金) 00:26:31Permission denied とか出るよ
0877デフォルトの名無しさん
2007/08/10(金) 00:44:53サーバはIRCサーバなのですが、関係あるでしょうか。
また、ping代わりにPINGリクエストを1分に一回打っています。
定期的に切断されるならまだ理解できるのですが、全くの不定期なので・・・
0878デフォルトの名無しさん
2007/08/10(金) 00:58:48一定時間経っても終了しなかった場合に強制終了して
Perl側のスクリプトを続行させる方法ってありますか?
0879デフォルトの名無しさん
2007/08/10(金) 01:01:42外部プログラムを呼び出したときはどうなるんでしょう。。。
0880デフォルトの名無しさん
2007/08/10(金) 01:12:05サーバの種類は関係ない。
回線がどっかで切れようが、何かパケットを送らないことには検知することはできん。
そしてsend()によってパケットを送ろうとした場合も、即座にはエラーにならない
(send()は正常終了するだろう)が、いずれはTCPスタックが切断を検知するので、
それ以後(普通は)アプリ側でもエラーを知ることが出来るはずだ。
そのようにならないとすれば、コーディングに何か問題があるか、
処理系のバグだろうな。
0881デフォルトの名無しさん
2007/08/10(金) 02:14:27> また、ping代わりにPINGリクエストを1分に一回打っています。
ひでえ
0882デフォルトの名無しさん
2007/08/10(金) 02:40:02Perl を勉強しようと perldoc の和訳はじめたのですが、誰か英文の perlmod
ttp://perldoc.perl.org/perlmod.html#BEGIN%2c-CHECK%2c-INIT-and-END-BEGIN-CHECK-INIT-END
の第 3 段落 3 行目「Because a BEGIN code block executes...」の文を訳して
もらえませぬか。。
pull in やら in time to be なんちゃらやら良く理解できなくて。。
お願いします。
0883デフォルトの名無しさん
2007/08/10(金) 04:07:21直訳でスマソ。
it can pull in definitions of subroutines and such from other files
それは(it)サブルーチンの定義(definitions of subroutines)などを(and such)
他のファイル(other files)から(from)取り込む事が出来る(can pull in)
in time to be visible to the rest of the compile and run time.
見えるようになった(to be visible)時(time)、
コンパイル(compile)、実行時(run time)等々(to the rest of the)に(in)
0884デフォルトの名無しさん
2007/08/10(金) 04:31:18ありがとーー
これでぐっすり寝れます♪
0885デフォルトの名無しさん
2007/08/10(金) 06:39:48open IN, "<./file/input.txt";
open OUT, ">./file/output.txt";
while(<IN>){
s/"\x0D \x0A \x00 \x0D"/"\x0A"/;
s/"\x0D \x0A"/"\x0A"/;
print OUT $_;
}
という風に単純に作ったのですがoutputファイルは作成されるものの
何も変化なくちゃんと動作しません。
何かテキストデータを16進数で読み込む方法でもあるのでしょうか?
よろしくお願いします。
あと、できれば保存する再にウニコードから
JISもしくはEUCに変換する方法もあればお願いします。
0886デフォルトの名無しさん
2007/08/10(金) 07:54:43>それ以後(普通は)アプリ側でもエラーを知ることが出来るはずだ。
その知る方法とはどんなものでしょう?
>>881
個人サーバで許可取ってあるので問題ないです。
0887デフォルトの名無しさん
2007/08/10(金) 11:34:25えすぱー。
#!/usr/bin/perl -w
use strict;
use Encode qw(from_to);
my($InFile, $OutFile, $InCode, $OutCode) = ('./input.txt', './output.txt', '', 'euc-jp');
my $buffer;
{
open my $in, '<', $InFile or die $!;
read $in, $buffer, -s $in or die $!;
close $in;
}
$buffer =~ s/(?<=\x0D\x0A)\x00\x0D//g;
from_to($buffer, $OutCode, $InCode);
$buffer =~ s/\x0D\x0A/\n/g;
$buffer =~ tr/\r/\n/;
{
open my $out, '>', $OutFile or die $!;
print $out $buffer;
close $out;
}
__END__
$OutCode は適切なものを。
0888887
2007/08/10(金) 11:35:27○ $InCode は適切なものを。
0889デフォルトの名無しさん
2007/08/10(金) 11:48:12あとどれだけ隠しているのか分からないことにある。
0890デフォルトの名無しさん
2007/08/10(金) 13:51:31自分が小出ししてる意識さえないのが最大の問題点である
0891デフォルトの名無しさん
2007/08/10(金) 21:26:090892デフォルトの名無しさん
2007/08/10(金) 23:41:46生い立ちから書くの?
0893デフォルトの名無しさん
2007/08/11(土) 03:07:58するときには、同一ディレクトリに
あるファイルしかリクワイアーできないと
直感的に思ったんだが、いま扱ってる
他人の書いたソース見ると、
下位フォルダにぶちこんである
ファイルを普通にリクワイアして
ちゃんと動いてるみたい、パスも
通してないのに、なぜ?
あるいはパスを通してるの?
0894デフォルトの名無しさん
2007/08/11(土) 03:16:290895デフォルトの名無しさん
2007/08/11(土) 03:19:05お前の先祖がモノリスに触れたときからの全てをだ
0896デフォルトの名無しさん
2007/08/11(土) 03:39:25アスペルガーなんだよな
知りたい情報があるなら言えばいいじゃん
0897デフォルトの名無しさん
2007/08/11(土) 04:36:32囲まれてる文字列は、
なんの可能性がある?
0898デフォルトの名無しさん
2007/08/11(土) 05:00:12だよな。
せっかく質問に答える機会を与えてやってるのに、生意気なんだよ。
なにさまのつもりなんだか。
0899デフォルトの名無しさん
2007/08/11(土) 06:38:34いくらPerlの回答ごときで自尊心が満たされる器の小さい馬鹿とはいえ、
もうちょっと敬意を表することを覚えるべき。
0900デフォルトの名無しさん
2007/08/11(土) 07:47:32文字列限定なら、、、
q{hoge}, qq{hoge} # ' "
m{hoge} # regexp
s{hoge}{foo} # regexp
print {HOGE} # filehandle
{die} # block <= 卑怯
って適当にあげても幾らでもあるんだが何か?
0901デフォルトの名無しさん
2007/08/11(土) 07:59:33キミの住所教えて
0902デフォルトの名無しさん
2007/08/11(土) 09:11:321. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0903デフォルトの名無しさん
2007/08/11(土) 12:30:55「自分でやるのが面倒なので××君のを写させてもらおうと思ったのだけど、
写させてくれないので出せませんでした。××君がわるいのだから、
ぼくが単位をもらえないのは納得できません!!」
と教授の目を真っ直ぐに見て話す大学生もいるそうだから。
0904デフォルトの名無しさん
2007/08/11(土) 13:06:42情報を小出しにすると、必然的に質問者と回答者のやり取りが多くなる。
最初に全ての情報を書いておけば、余計なリソースを使わずに済む。
それは時間の短縮にも繋がるし、閲覧者側も理解し易く大変有益な方法。
質問者ありきのスレ"だけ"だと思い、質問者を神様と思い込んでる
自己中ノータリンは親の教育方針を疑った方が良いですよ:-P
育ちが悪いか、遺伝子レベルで腐ってるので生まれ変わる事をオススメします。
0905デフォルトの名無しさん
2007/08/11(土) 13:12:24ここは2ちゃんねるですよ
ある一定の方向性を持たせようたって無理に決まってるじゃないですか
方向性を持たせようとして板を作ってもこうやって厨房が沸くからスルーしか方法はないと思います
0906デフォルトの名無しさん
2007/08/11(土) 13:17:35>>896 >>898 >>899
ネタだよな? な? ニュー速とかでこんな書き込みを見ても
即ネタだと理解出来るが、専門板では本気でキチガイが居るから
おじさん物凄く心配なのだが、夏休みだからだよね? ね?
0907デフォルトの名無しさん
2007/08/11(土) 13:25:45「荒らしやキチガイ相手にはスルー推奨」
どちらも多くの人間がその正当性を主張し、
特につっこみどころのない良マナーであるにもかかわらず、
なぜか双方とも説得力がイマイチなのはどうしてだろう?
0908デフォルトの名無しさん
2007/08/11(土) 13:29:30正当性を主張しているというより荒れることに対して不満を言っているということに近いからでは?
0909デフォルトの名無しさん
2007/08/11(土) 14:02:16変化する物に説得力が無いのは当然
0910デフォルトの名無しさん
2007/08/11(土) 14:13:210911デフォルトの名無しさん
2007/08/11(土) 15:36:000912デフォルトの名無しさん
2007/08/11(土) 15:51:56うちは顧客が優秀すぎていつも的確すぐる質問ばかり受けてて
ごくたまにくるキチガイ丸出しな電話への応対がとっさに出来ないから
こういうアホばっかり集まる場があると、応対の練習ができて
とても便利なんだよね
0913デフォルトの名無しさん
2007/08/11(土) 18:21:380914デフォルトの名無しさん
2007/08/11(土) 18:25:470915デフォルトの名無しさん
2007/08/11(土) 18:30:560916デフォルトの名無しさん
2007/08/11(土) 18:41:150917デフォルトの名無しさん
2007/08/11(土) 20:18:100918デフォルトの名無しさん
2007/08/11(土) 22:11:300919デフォルトの名無しさん
2007/08/11(土) 22:57:570920デフォルトの名無しさん
2007/08/11(土) 22:59:120921デフォルトの名無しさん
2007/08/11(土) 23:04:520922デフォルトの名無しさん
2007/08/11(土) 23:08:50荒らしを防ぐプログラムの作り方を初心者にもわかるように教えて下さい。
0923デフォルトの名無しさん
2007/08/11(土) 23:11:09初心者を防ぐプログラムの作り方を初心者にもわかるように教えて下さい。
0924デフォルトの名無しさん
2007/08/11(土) 23:12:320925デフォルトの名無しさん
2007/08/11(土) 23:20:280926デフォルトの名無しさん
2007/08/11(土) 23:23:09違います
ちょっと疲れてるだけです
>>921
Pを小文字にするといいと思います
>>922
ログを記録しているファイルのパーミッションを644にすると良いです
>>923
自己矛盾はバグの元です
気を付けましょう
>>924
できればもう少しネタを返しやすい書き方をしてください
0927デフォルトの名無しさん
2007/08/11(土) 23:26:23初心者から脱却するためには何日くらい勉強したらいいですか?
0928デフォルトの名無しさん
2007/08/11(土) 23:36:50┏━┓ ┏━┓ ┏━┓ ┏
┏━━━━━━━━┓┏━┛ ┗━┓ ┃ ┃ ┃ ┗━━━━┓ ┃ ┏┓ ┏┓ ┃
┃ ┃┗━┓ ┏━┛ ┃ ┃ ┏━┛ ┏━━┓ ┃ ┃ ┃ ┃ ┃ ┃
┗━━━━━━┓ ┃┏━┛ ┗━┓ ┃ ┃ ┗━┓ ┏┛ ┃ ┃ ┃
┃ ┃┗━┓ ┏━┛ ┃ ┃━┓┏┓ ┃ ┃ ┃ ┃ ┃
┃ ┃┏━┛ ┗┓ ┃ ┃┃┃ ┏┛ ┃ ┏━┛ ┃ ┃
┏━━┛ ┃┃┏┓┏┓┗┓ ┃ ┏┓┃┃┃.┏┛ ┃ ┃┏┓ ┗┓ ┃ ┏ ┓ ┃
┃ ┏┛┃┗┛┃┗┓┗┓┃ ┃┃┗┛┃┃┏┓┃ ┃┗┛┏┓┗┓ ┃ ┃ ┃. ┃ ┛
┗━━━┛ ┗━━┛ ┗━┛┗━┛┗━━┛┗┛┗┛ ┗━━┛┗━┛ ┗ ┗━┛┗━┛
0929デフォルトの名無しさん
2007/08/12(日) 00:35:150930デフォルトの名無しさん
2007/08/12(日) 01:01:07よほど上手い仕組みじゃないと
変なアホコテが穴ばかり付いて高Lvになるぜ
0931デフォルトの名無しさん
2007/08/12(日) 01:04:064日くらいかな。
0932デフォルトの名無しさん
2007/08/12(日) 01:45:28色分け楽しい
0933デフォルトの名無しさん
2007/08/12(日) 02:25:190934デフォルトの名無しさん
2007/08/12(日) 21:13:13これはアメ公の環境だと
表示できないのかな。
うっかり見落としがちだけど。
0935デフォルトの名無しさん
2007/08/12(日) 21:26:29$disp.=$TD."sales items featured item<BR>【total skill】【business start】 comment"
これで、
【
(すみつき中カッコ)
はアメ公の環境で表示されないので
[(スクエア)
に変更しようと思うんだが、
ダブルクオーテーションで囲まれてる部分”○○”
に、不用意に
[スクエアブラケット
を入れて問題が起きないかどうか?
つまり
$disp.=$TD."sales items featured item<BR>[total skill][business start] comment"
にしようとたくらんでるわけだが。perlの文法的にだいじょうぶなのか。
0936デフォルトの名無しさん
2007/08/12(日) 21:28:290937デフォルトの名無しさん
2007/08/12(日) 21:50:33"$x【hoge】" → "$x[hoge]"
0938デフォルトの名無しさん
2007/08/12(日) 22:07:03ダブルクオーテーションの中に
$が入っていないから、
今回の例ではおkって意味?
0939デフォルトの名無しさん
2007/08/12(日) 22:08:23だめという意味なのかな?
0940デフォルトの名無しさん
2007/08/13(月) 00:07:05http://pc11.2ch.net/test/read.cgi/prog/1138882234/
ここみたらperlってRPGツクールみたいな
扱いだね
0941デフォルトの名無しさん
2007/08/13(月) 00:42:00Windows上のエディターで変更しているのですが、
保存するときに、シフトJISで保存しても大丈夫なのですか?
実行はレンタルサーバーなので、EUCで保存しないと
ぶっこわれるのではないかと不安で夜も眠れません
0942デフォルトの名無しさん
2007/08/13(月) 02:58:470943デフォルトの名無しさん
2007/08/13(月) 04:56:04Windows上のエディターで変更しているのですが、
保存するときに、シフトJISで保存しても大丈夫なのですか?
実行はレンタルサーバーなので、EUCで保存しないと
ぶっこわれるのではないかと不安で夜も眠れません
2回目。
0944デフォルトの名無しさん
2007/08/13(月) 05:00:062回目。
0945デフォルトの名無しさん
2007/08/13(月) 05:03:57Windows上のエディターで変更しているのですが、
保存するときに、シフトJISで保存しても大丈夫なのですか?
実行はレンタルサーバーなので、EUCで保存しないと
ぶっこわれるのではないかと不安で夜も眠れません
0946デフォルトの名無しさん
2007/08/13(月) 05:09:360947デフォルトの名無しさん
2007/08/13(月) 05:09:44ファイルの拡張子が.cgiだったら
自動的にシフトJIS→EUCに
転送時に勝手に変更してくれるみたい
0948デフォルトの名無しさん
2007/08/13(月) 05:14:46保存時に、漢字コードを何にするのか、
シフトJISで保存するのか、EUCで保存するのか、
なんてことは聞いてこないのですか?
0949デフォルトの名無しさん
2007/08/13(月) 05:50:46空気(←何故か読めない)
0950デフォルトの名無しさん
2007/08/13(月) 08:31:250951デフォルトの名無しさん
2007/08/13(月) 13:28:11[ (スクエアブラケット
を使ったらいけない場面というのは
どうやったらカンタンに見分けられるのですか?
0952デフォルトの名無しさん
2007/08/13(月) 14:43:17文字コードはEUCを選択したほうがいいのですか?
シフトJISだと、
表示
って書きたい場合でも
表¥示
ってかかないと、文字化けするってどっかにかいてあって、
それをしたくなければEUCだったら大丈夫って書いてあるんですけど、
EUCで保存してだいじょうぶですか?
変更作業自体はWindows上で行うんですけど、
EUCで保存したらWindowsで読めなくならないですか?
0953デフォルトの名無しさん
2007/08/13(月) 14:50:560954デフォルトの名無しさん
2007/08/13(月) 14:56:530955デフォルトの名無しさん
2007/08/13(月) 15:02:500956デフォルトの名無しさん
2007/08/13(月) 15:04:460957デフォルトの名無しさん
2007/08/13(月) 15:07:35EUC 扱えるテキストエディタを拾ってくればいい。
0958デフォルトの名無しさん
2007/08/13(月) 15:08:54編集作業をしているということを考慮すれば
シフトJISで保存したほうが無難
なぜならWindowsはシフトJISしか使えないので
EUCとかで保存したら漢字が文字化けして
編集作業ができなくなるのではないか?
(2)しかしUNIXで動いているレンタルサーバー上で
perlのCGIとして動かすというのならEUCで保存したほうが
いいのでは?なぜなら表¥とかC5の問題があるし、
シフトJISだといちいち表¥と打たないと文字化けするが
EUCならそんな心配はないから。
(3)それとも、保存時にシフトJISで保存しても
FFFTPで転送時に勝手にEUCに変更してくれるの?
0959デフォルトの名無しさん
2007/08/13(月) 15:12:23漢字コードをEUCで保存したとしても、
そのテキストエディタ自体がEUCを
サポートしていれば、編集作業で
文字化けすることはないってことですか?
でもWindows付属のメモ帳でこんど
読めなくなりますね?
Windows上で編集するときには
メモ帳でも読めるように、シフトJISで保存しておいて、
サーバーに転送するときにFFFTPなどが
勝手にEUCに変換してくれると、一番うれしいですか?
でもオリジナルのソースコードを見ると
表¥
とか書いてあるので、オリジナル版の作者は
シフトJISで作ったと思うんですよ。
オリジナルの作者がシフトJISで作ったものを
その中の一部だけEUCに変更したら
まずくないですか?
全体のファイルが50とかあって、
その中の2つだけをEUCにするとか。
他のファイルからデーターを読み込みにきたときなんかに
不具合を起こさないですか?
0960デフォルトの名無しさん
2007/08/13(月) 15:13:300961デフォルトの名無しさん
2007/08/13(月) 15:14:59まだ何もやらないうちから心配ばかりとかアフォかと
0962デフォルトの名無しさん
2007/08/13(月) 15:15:05Windows上で編集作業をするには
どの文字コードを選ぶべきか?
「問題点その2」
UNIXで動作するレンタルサーバー上で
perlのCGIとして動作させるときに
どの文字コードを選ぶべきか?
「問題点その3」
FFFTPなどのFTPソフトで、
転送時に漢字コードを変換してくれる
機能がサポートされている可能性がある
「問題点その4」
オリジナルのソースを書いた作者さんは
表¥
などの表記をしているところを見ると
シフトJISで作成したのではないか?
この場合、勝手に一部のファイルを
EUCに変換して問題は生じないのか?
0963デフォルトの名無しさん
2007/08/13(月) 15:17:05(1)シフトJIS
(2)シフトJIS
(3)シフトJIS
(4)EUC
(5)EUC
こんな状態になって問題ないのか?
(1)から(5)を読み込んだりとか、
普通にあるとおもいます。
0964デフォルトの名無しさん
2007/08/13(月) 15:19:120965デフォルトの名無しさん
2007/08/13(月) 15:40:53シフトJIS で統一するか、EUC で統一するか、だな。
シフトJIS で統一するなら、\ を注意深く埋め込む必要がある。
EUC で統一するなら、\ を消していく必要がある。
0966デフォルトの名無しさん
2007/08/13(月) 15:51:28やっぱり統一しないとだめなのかな?
ただ、いまやってる作業は
日本語版のCGIゲームを英語版に
翻訳する、って作業なので、
日本語部分はちょっとづつ減っていって
最終的には日本語は完全になくなるはずなんですよ。
それでperlでCGIって話の場合、
絶対シフトJISでなければいけない、とか
絶対EUCでなければいけない、とか
そういう制限はないわけですよね?
ただシフトJISだったらWindows上で編集するときに
便利ですよ、っていうメリットと、
表¥っていちいちいれないといけないデメリットと、
EUCだったらwindows上で編集できないデメリットと、
windows上でもEUCを扱えるエディターを持ってこないと
編集できないデメリットと、
C5文字を使っても¥とかいれずとも文字化けしないメリットと、
あるわけですが、コード自体は、結局
「統一しなければならない」
って結論で誰も異論はないですか?
ファイルが50あって、
1−25はシフトJIS、
26−50はEUC、
こんなばらばらでCGIの動作が不具合を起こさないか、
ってことです。
0967デフォルトの名無しさん
2007/08/13(月) 15:57:35最終的には ASCII オンリーになるんだし。
0968デフォルトの名無しさん
2007/08/13(月) 16:01:22> ただシフトJISだったらWindows上で編集するときに
> 便利ですよ、っていうメリットと、
どこがどう便利なのかと
0969デフォルトの名無しさん
2007/08/13(月) 16:03:35翻訳もできないわけで。
表¥
の¥をいちいち削除するのは不可能なので、
現状、クライアント側でもサーバー側でも
シフトJISで統一することにします
だってEUCにしたら¥をいちいち全部削除しなければ
ならないから。それは不可能でしょ。
でもさ、ソースコード中の表示される部分、
ユーザーの目から見える部分は英語化するけど、
変数とかは日本語のままにするつもりなんだよね
$山田とか
この場合、どうなのかな?
CGIで出力されたHTMLのテキストについての文字コードって議論と、
perkのソースコード中に含まれた漢字の文字コードについての議論と、
2つあるとおもう。
つまり、printされてユーザーの目にふれる部分は全部英語に翻訳するので
最終的には文字コード関係なくなるかもしれないが、
ソースコード中に含まれた変数の部分$山田とか、は日本語のままで
いくつもりなので、サーバー上には日本語があいかわらず含まれた
ままで運用されるわけだが、このときも漢字コードについて
気にしなればならないのか?
ファイルを保存するときにどの漢字コードにするべきか?
サーバーに転送するときにどこの漢字コードにするべきか?
ソースコード中に含まれている漢字の取り扱いはどうなっているのですか?
0970デフォルトの名無しさん
2007/08/13(月) 16:04:420971デフォルトの名無しさん
2007/08/13(月) 16:04:59メモ帳で開ける。メモ帳で読める。
Windowsで動くテキストエディターは
シフトJISでないと文字化けするものも結構ある
windows上でEUCのファイルを扱いたければ
わざわざEUC対応って書いてあるものをもってくる
必要がある。シフトJISだったらそんな必要ない
0972デフォルトの名無しさん
2007/08/13(月) 16:05:15自分で日本語を追加する必要もないんでしょ?
なら、シフトJIS のまま扱えばいいじゃん。
何か問題あるのか?
0973デフォルトの名無しさん
2007/08/13(月) 16:05:41とにかくメモ帳なんか使うな
0974デフォルトの名無しさん
2007/08/13(月) 16:12:22アメ公のブラウザの初期設定ってシフトJISとかに
なってるのかな?
たぶん英語(US-ascii)とかになってるんじゃないかな。
その環境でシフトJISのページ?を表示させて大丈夫なのかな。
もちろんユーザーの目にするテクストは全部1バイト文字に翻訳
するつもりだが、ソースコード内部の変数名は日本語のまま
運用するつもりなんだ。$山田とか。
そしたらユーザーの目にする部分は1バイト文字だけど、
ソースコードの内部には2バイト文字が残っているわけでしょう。
この場合、そのファイルはシフトJISで保存すべきなのか?
EUCで保存すべきなのか?US-asciiとかで保存すべきなのか?
ということがわからないんですよ。
0975デフォルトの名無しさん
2007/08/13(月) 16:15:23content type charaset=US-asciiなんちゃら、
って書きますけど、問題はソースコードの内部に
残った漢字の部分なんです。
そのファイル自体は、なんの漢字コードで
保存すべきなのか?
0976デフォルトの名無しさん
2007/08/13(月) 16:20:10ユーザーが目にする部分はUS-asciiとかで、
っていう、2重構造で問題ないのかと。
0977デフォルトの名無しさん
2007/08/13(月) 16:20:200978デフォルトの名無しさん
2007/08/13(月) 16:23:451. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0979デフォルトの名無しさん
2007/08/13(月) 16:26:220980デフォルトの名無しさん
2007/08/13(月) 16:26:55とかって部分があったとして、
そのaは半角だから、
ずべてにたいして互換性があるのですか?
このファイル自体はシフトJISのキャラセットで
保存されています。つまりそのaもシフトJISだと
思うんです。そうやって出力されたaをアメ公の
環境で見たときに、どうなるのか。
0981デフォルトの名無しさん
2007/08/13(月) 16:28:47心配しているだけで実際の被害はゼロだと思うんですよ
0982デフォルトの名無しさん
2007/08/13(月) 16:29:49「このaはUS-asciiのaだ」
と思い込んで閲覧するわけですが、
本当はそのaはシフトJISのaなんです。
だから文字化けするのではないですか?
0983デフォルトの名無しさん
2007/08/13(月) 16:30:340984デフォルトの名無しさん
2007/08/13(月) 16:30:59すべてのキャラセットにおいて
共通の文字コードが使われているので、
文字化けを心配する必要はない、
こういうことですか?
0985デフォルトの名無しさん
2007/08/13(月) 16:31:47今後ヌルー推奨で
0986デフォルトの名無しさん
2007/08/13(月) 16:32:02しねばいい、そういうこと
0987デフォルトの名無しさん
2007/08/13(月) 16:36:32そのファイルはシフトJIS、もしくはEUCで保存しないと
だめなのですか?
US-asciiとかで保存したらだめなのですか?
0988デフォルトの名無しさん
2007/08/13(月) 16:38:05質問を装った荒らしとして
規制議論にスレ立てて報告
0989デフォルトの名無しさん
2007/08/13(月) 16:39:52うっさいはげ。
0990デフォルトの名無しさん
2007/08/13(月) 16:58:141. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0991デフォルトの名無しさん
2007/08/13(月) 16:58:59を使ってはいけない場面、
というのは限定されていて、
おぼえられる範囲なのでしょうか?
0992デフォルトの名無しさん
2007/08/13(月) 17:05:03共同作業することになって、
そいつにシフトJISで保存された
ソースコードを送ったら、
そいつは英語版windows+英語のエディター
という環境で、こっちが送ったソースを
まともに開けるのか?
0993デフォルトの名無しさん
2007/08/13(月) 17:10:000994デフォルトの名無しさん
2007/08/13(月) 17:13:59Perl がシフト JIS に対応していないから。
0995デフォルトの名無しさん
2007/08/13(月) 17:16:34原則論キターーーー
0996992
2007/08/13(月) 17:50:380997デフォルトの名無しさん
2007/08/13(月) 17:51:201. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0998デフォルトの名無しさん
2007/08/13(月) 17:52:061. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0999デフォルトの名無しさん
2007/08/13(月) 17:52:451. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
1000デフォルトの名無しさん
2007/08/13(月) 17:52:501. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。