Perlについての質問箱 34箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/01/11(金) 00:07:22"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 ttp://pc11.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
ttp://www.perl.org/get.html
● 2008/01/11現在の最新版: 5.10.0
● 2007/01/11現在の開発版: 5.9.5
前スレ
Perlについての質問箱 33箱目
http://pc11.2ch.net/test/read.cgi/tech/1192463997/
リンク集は>>2-3
過去スレは>>4 あたり
0002デフォルトの名無しさん
2008/01/11(金) 00:07:47Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル] (追加)
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi
perldoc.jp: ttp://www.perldoc.jp/
Perldoc.com: ttp://www.perldoc.com/
0003デフォルトの名無しさん
2008/01/11(金) 00:08:12CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8 Unicodeメモ]
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2008/01/11(金) 00:08:280005デフォルトの名無しさん
2008/01/11(金) 00:09:061 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/
0006デフォルトの名無しさん
2008/01/11(金) 00:09:3820 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/
31 ttp://pc11.2ch.net/test/read.cgi/tech/1181500187/
32 ttp://pc11.2ch.net/test/read.cgi/tech/1186995713/
33 ttp://pc11.2ch.net/test/read.cgi/tech/1192463997/
0007デフォルトの名無しさん
2008/01/11(金) 14:30:54リストを集合と見なして、和、積などの演算を提供するモジュールでポピュラーなのあったっけ?
0008デフォルトの名無しさん
2008/01/11(金) 16:28:170009デフォルトの名無しさん
2008/01/12(土) 00:24:18CGI.pm には入ってないので、自前でやるしかない。
で、あってる?
escapeHTML ってのはあるんだけどなぁ。
(= CGI::Lite で言うところの、browser_escape)
0010デフォルトの名無しさん
2008/01/12(土) 02:47:40use URI::Escape
じゃあ、いかんのかね?
0012デフォルトの名無しさん
2008/01/12(土) 22:32:260013デフォルトの名無しさん
2008/01/12(土) 22:46:330014デフォルトの名無しさん
2008/01/12(土) 23:23:55そか? むしろOOってこんなに簡単だったんだ、とオモタが。
[Hoge.pm]
package Hoge;
sub new {
my $class = shift;
return bless({@_}, $class);
}
sub fuga {
my ($self, $world) = @_;
print "$self->{hello}, $world\n";
}
1;
[hoge.pl]
use Hoge;
my $h = new Hoge(hello => "HELLO");
$h->fuga("WORLD");
0015デフォルトの名無しさん
2008/01/12(土) 23:34:11他のOOPLを先にやっちゃった人だと、ちと辛くなる。
何かOOPL自体を実装してる気分になる。
0016デフォルトの名無しさん
2008/01/12(土) 23:57:02病的
0017デフォルトの名無しさん
2008/01/13(日) 02:18:45struct Person => {
name => '$',
son => '@',
doughter => '@'
};
$person[$i] = Cell->new();
$person[$i]->son($j, 'taroh');
$person[$i]->doughter($k, 'hanako');
みたいにたくさんの人がいて、
人によって息子と娘の数は違います。
下の書き方だと表示できません。よろしくお願いします。
for ($i = 0; $i <= $#person; $i++){
print $person[$i]->name;
print ' son: ';
for ($j = 0; $j <= $#{$person[$i]->son($j)}; $j++){ ←この行でダメと怒られる
print $person[$i]->son($j);
}
print ' doughter: ';
for ($j = 0; $j <= $#{$person[$i]->doughter($j)}; $j++){
print $person[$i]->doughter($j);
}
printf "\n";
}
0018デフォルトの名無しさん
2008/01/13(日) 08:24:310019デフォルトの名無しさん
2008/01/13(日) 11:00:49まずは、ソースの頭にこの二行を追加してください。
あとは、ガイダンスに従ってプログラムを修正してください。
use string;
use warning;
002017
2008/01/13(日) 17:18:11↓
for ($j = 0; $j <= $#{$person[$i]->son; $j++){
で解決しました。
use string; を入れると、グローバル変数に文句を言われて、my を使ってみると
$person[$i] がなぜかできなくなるので使ってないです。
~~~
0021デフォルトの名無しさん
2008/01/13(日) 17:53:45ちゃんとしたのを書くときはstrictとwarningプラグマをつけて書くようにしたほうがいいよ。
何かエラーが出るなら、コードにバグなりバグの原因が潜んでるってことだから。
0022デフォルトの名無しさん
2008/01/13(日) 18:33:260023デフォルトの名無しさん
2008/01/13(日) 19:26:24そもそもPerlではforeachにしたほうがいい
strictとwarningsは 必 須
0024デフォルトの名無しさん
2008/01/13(日) 19:35:12002517
2008/01/13(日) 19:47:54すみません。strict と warnings は使うようにします。foreach にもします。
>$person[$i] がなぜかできなくなるので使ってないです。
については、
my $person[$i] = Person->new();
↓
my @person = Person->new();
にしたらローカル変数使えました。どうもありがとうございました。
0026デフォルトの名無しさん
2008/01/13(日) 21:21:490028デフォルトの名無しさん
2008/01/13(日) 22:36:13マイルール押し付けすぎじゃね?
0029デフォルトの名無しさん
2008/01/13(日) 22:38:320030デフォルトの名無しさん
2008/01/13(日) 23:18:12あまり教条主義的になるのもよくない
0031デフォルトの名無しさん
2008/01/13(日) 23:40:27そこそこに大きくなりそうな時は、やっぱCにしようって思わない?
0032デフォルトの名無しさん
2008/01/13(日) 23:41:310033デフォルトの名無しさん
2008/01/14(月) 02:10:03Perlで書かなければならないときはPerlで書くし、
Cで書かなければならない時はCで書く。
0034デフォルトの名無しさん
2008/01/14(月) 03:00:33速さが必要なときは、特定部分だけCにしてる
0035デフォルトの名無しさん
2008/01/14(月) 04:53:03それは分かってて使わないってことだろ?
上のは使うことすら知らなかったわけだから
0036デフォルトの名無しさん
2008/01/14(月) 05:20:230037デフォルトの名無しさん
2008/01/14(月) 11:29:210038デフォルトの名無しさん
2008/01/14(月) 13:22:36PerlとRubyくらいまとめたい。
0039デフォルトの名無しさん
2008/01/14(月) 16:39:51ローカルサーバー上では
$i = rindex($add,"\\");
という入力をすることでうまく行きますが
借りてるサーバに上げる場合は
$i = rindex($add,"/");
と改変しなければ動かないプログラムがありまして、
出来れば、ローカルと借りてるサーバ両方でうまく処理が行くようにしたいのですけど、
いい方法ないでしょうか?
0040デフォルトの名無しさん
2008/01/14(月) 16:56:40\か/に正規化すれば?もしくはシステムが使ってるパスのセパレータを取得してそれを使う
$add =~tr/\\/\//;
$i = rindex($add, "/");
0041デフォルトの名無しさん
2008/01/14(月) 16:58:36なるほど
ありがとうございます
0042デフォルトの名無しさん
2008/01/14(月) 17:31:290043デフォルトの名無しさん
2008/01/14(月) 18:33:59やったこと
・相手のサーバーがダウンしてるのかと数箇所、変更しましたが変わらず
・数個のモジュールを試すが全部、同じエラー
-------------------------------------------
Fetching with LWP:
ftp://*****************
LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.4.21-27.0.2.elsmp) does not match executable architecture (i386-linux-thread-multi-2.6.9-34.elsmp) at /usr/lib/perl5/site_perl/5.8.6/Errno.pm line 11.
Compilation failed in require at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17.
Compilation failed in require at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.6/LWP/Protocol/ftp.pm line 24.
]
Fetching with Net::FTP:
ftp://*****************
Can't locate object method "new" via package "Net::FTP" at /usr/lib/perl5/5.8.6/CPAN.pm line 2251.
0044デフォルトの名無しさん
2008/01/14(月) 20:27:57> CPANがエラーで動きません。どうすればよいのでしょうか?
エラーを解消する。
0045デフォルトの名無しさん
2008/01/14(月) 22:22:58004643
2008/01/15(火) 08:40:400047デフォルトの名無しさん
2008/01/15(火) 10:17:06004843
2008/01/15(火) 10:24:27cpan>install Net::FTP
でもエラーが出ますし,,,,
0049デフォルトの名無しさん
2008/01/15(火) 10:53:25005043
2008/01/15(火) 12:01:41yum? どこかに解説ありますでしょうか??
0051デフォルトの名無しさん
2008/01/15(火) 13:09:26> Net::FTPがないってことで
> cpan>install Net::FTP
> でもエラーが出ますし,,,,
誰にそんなデタラメ吹き込まれたの?
0052デフォルトの名無しさん
2008/01/15(火) 13:12:14> LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.4.21-27.0.2.elsmp) does not match executable architecture (i386-linux-thread-multi-2.6.9-34.elsmp) at /usr/lib/perl5/site_perl/5.8.6/Errno.pm line 11.
005343
2008/01/15(火) 13:14:31CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Thu, 10 Jan 2008 22:37:46 GMT
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.4.21-27.0.2.elsmp) does not match executable architecture (i386-linux-thread-multi-2.6.9-34.elsmp) at /usr/lib/perl5/site_perl/5.8.6/Errno.pm line 11.
Compilation failed in require at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17.
Compilation failed in require at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.6/LWP/Protocol/ftp.pm line 24.
]
Fetching with Net::FTP:
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
Can't locate object method "new" via package "Net::FTP" at /usr/lib/perl5/5.8.6/CPAN.pm line 2251.
005543
2008/01/15(火) 13:33:54rm -f /usr/lib/perl5/site_perl/5.8.6/Errno.pm
で、削除して成功しました。
よくわかりませんが...下記を参考にしました
ttp://www.nilab.info/zurazure2/000806.html
ttp://cyberlib.enterbrainz.com/1182508727.html
0056デフォルトの名無しさん
2008/01/15(火) 15:56:02引きちぎって捨てました」的解決。
0057デフォルトの名無しさん
2008/01/15(火) 15:59:14お前の環境もお前が使っているLinuxディストリビューションの
パッケージシステムの管理体制も知らんからわからん。
エラーメッセージで示されているファイル群を見れば何が起きているかわかるだろ。
005843
2008/01/15(火) 21:38:15そんなの関係ねぇ!
○∧〃
/ >
< \
0059デフォルトの名無しさん
2008/01/16(水) 02:13:39Foo::Const;というパッケージから
Const以下をMainにExportし
Const::〜 というアクセス方法を提供するにはどのようにしたら良いでしょうか?
0061デフォルトの名無しさん
2008/01/16(水) 18:38:57require 'subroutin1.pl';
require 'subroutin2.pl';
と書くとうまくいきません。
両方とも読み込む方法はないでしょうか?
0062デフォルトの名無しさん
2008/01/16(水) 18:49:16二つのファイルの最後に1;は書いた?
0063デフォルトの名無しさん
2008/01/16(水) 18:58:350064デフォルトの名無しさん
2008/01/17(木) 00:29:250065デフォルトの名無しさん
2008/01/17(木) 01:30:06いい薬はありませんか?
0066デフォルトの名無しさん
2008/01/17(木) 02:17:45http://life9.2ch.net/utu/
0067デフォルトの名無しさん
2008/01/17(木) 08:35:36取り合えず、下記を使え。
強い味方になるぞ
KCatch.pm/CGI エラーメッセージをブラウザに表示
http://www.kawa.net/works/perl/catch/news.html
0068デフォルトの名無しさん
2008/01/17(木) 19:00:38普通に
use CGI::Carp qw(fatalsToBrowswr);
を書いておけば良いのと違うの?
0069デフォルトの名無しさん
2008/01/17(木) 22:26:42Compress::Zlib::memGunzip()を試しましたが、zipのためかうまくいきませんでした。
(undefが返る)
すみませんが、お知恵を貸してください。
0070デフォルトの名無しさん
2008/01/17(木) 22:45:49007169
2008/01/17(木) 23:06:41Archive::Zipでできますか?
use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
とりあえずこれで解決できそうです。
なぜか2chで聞くと自己解決につながる不思議!
Archive:;Zipもみてみますね。どうもありがとう
0072デフォルトの名無しさん
2008/01/17(木) 23:14:42日本語でおk?
変数に入ってるのは、zipファイルのファイル名 "なんとか.zip" が入ってるの?
それとも、メモリー中で圧縮された状態のデータそのものが入ってるの?
圧縮されたファイルを解凍したいだけなら、
google で 「perl zip 解凍」 を検索すれば参考になるコードがみつかるよ。
007369
2008/01/17(木) 23:19:54ファイル名やファイルハンドルではありません。
0074デフォルトの名無しさん
2008/01/18(金) 10:35:27これ動かないんですがどうすればいいんですか?
0075デフォルトの名無しさん
2008/01/18(金) 13:17:22なぜ動かないのかをつきとめて、そこを動くように修正すると良い。
0076デフォルトの名無しさん
2008/01/18(金) 14:32:22使ったこと無いけどWWW::NicoVideoっつーのがCPANにあるから見てみれば
あとPlaggerにもぷらぎんあるかあr
0077デフォルトの名無しさん
2008/01/18(金) 15:33:05cのヘッダファイルのように変数を一元管理するにはどうしたらいい?
例
##hoge.pl
use strict
$hoge = 'hoge';
print $hoge;
require 'piyo.pl';
print $hoge;
##piyo.pl
$hoge='piyo';
use strictコメントアウト時はhogepiyoだけど
Global symbol "$hoge" requires explicit package name at ./strict.pl line 3.
Global symbol "$hoge" requires explicit package name at ./strict.pl line 4.
Global symbol "$hoge" requires explicit package name at ./strict.pl line 6.
Execution of ./strict.pl aborted due to compilation errors.
と怒られるorz
0078デフォルトの名無しさん
2008/01/18(金) 15:43:02@argv[1] = ( 1 ..5);
なデータがあるんですけど、
@argv[1]のリストの数を調べたいときは、どうするんですかね?
$#argv[1]とすると、syntx errorになります。
0079デフォルトの名無しさん
2008/01/18(金) 16:05:460080デフォルトの名無しさん
2008/01/18(金) 16:19:28> @argv[1] = ( 1 ..5);
これはどういう意味だ?
($argv[1]) = (1 .. 5)
と等価か?
0081デフォルトの名無しさん
2008/01/18(金) 16:33:560082デフォルトの名無しさん
2008/01/18(金) 17:26:00配列を表すらしい@を付ければできるんじゃね?
つーところかと
0083デフォルトの名無しさん
2008/01/18(金) 17:46:320084デフォルトの名無しさん
2008/01/18(金) 18:36:29これをスペースでsplitして2次元配列にしたいのですが、
そのようなことはできませんか?
0085デフォルトの名無しさん
2008/01/18(金) 18:41:25がんばれ
008674
2008/01/18(金) 18:58:10Crypt::SSLeay入れたら動きました
0087デフォルトの名無しさん
2008/01/18(金) 19:24:020089デフォルトの名無しさん
2008/01/18(金) 20:11:10あるけど、初心者はやるな。
0090デフォルトの名無しさん
2008/01/18(金) 20:18:43if ($a =~ m/^(a|b)$/)
if (grep { $a eq $_ } qw(a b))
:
好きなように書け
0091デフォルトの名無しさん
2008/01/18(金) 20:21:360092デフォルトの名無しさん
2008/01/18(金) 20:40:04use strict;
use Benchmark;
timethese(2000000, {
Alternation => sub{ my $x = "abcdefghijk"; my $y = $x =~ /(?:d|e|f)/ },
CharacterClass => sub{ my $x = "abcdefghijk"; my $y = $x =~ /[def]/ },
});
>> Benchmark: timing 2000000 iterations of Alternation, CharacterClass...
>> Alternation: 3 wallclock secs ( 2.45 usr + 0.00 sys = 2.45 CPU) @ 815328.17/s (n=2000000)
>> CharacterClass: 1 wallclock secs ( 1.41 usr + 0.00 sys = 1.41 CPU) @ 1422475.11/s (n=2000000)
0093デフォルトの名無しさん
2008/01/18(金) 22:58:31相反する(しかも管理しづらそうな)ことをする理由は分からないけど、
エラーメッセージの通りパッケージ名を付けるだけで怒られないようにはできる
use strict;
$main::hoge = "hoge";
print $main::hoge;
0094デフォルトの名無しさん
2008/01/19(土) 06:20:50相反するってのは例が悪かったって事で勘弁を。>>77の例でいうと$hogeはhoge.plでは変更しない。
#hoge.pl
use strict;
my($hoge);
$hoge='hoge';
require 'piyo.pl';
print $piyo;
#piyo.pl
$piyo='piyo'
でhoge.plを実行すると
Global symbol "$piyo" requires explicit package name と怒られる。
#piyo.pl
package piyo
を追加して
#hoge.pl
print $piyo::piyo;
とすれば怒られないけど hoge.pl内$piyoですます方法ないのかな?
009577
2008/01/19(土) 14:49:54#hoge.pl
use strict;
our($piyo);
require 'piyo.pl';
print $piyo;
#piyo.pl
$piyo='piyo'
0096デフォルトの名無しさん
2008/01/20(日) 00:08:5313 14
15 16
のように、1行に2つのデータを持ったファイルがあります。
これを、
list[0][0] = 11;
list[0][1] = 12;
list[1][0] = 13;
list[1][1] = 14;
list[2][0] = 15;
list[2][1] = 16;
のように二次元配列にしたいのですが、どのようにすれば良いのでしょうか?
0097デフォルトの名無しさん
2008/01/20(日) 00:30:36push @list, [map int, split] while(<DATA>);
__DATA__
11 12
13 14
15 16
0098デフォルトの名無しさん
2008/01/20(日) 00:44:26ありがとうございます。
コードを説明して頂けませんか?
0099デフォルトの名無しさん
2008/01/20(日) 01:06:20本を読まない。
ネットを検索しない。
誰かが教えてくれるのをじっと待っているだけ。
つねに受身の態勢。
0100デフォルトの名無しさん
2008/01/20(日) 01:09:23ネットは検索しました。
回答を待っています。
受身の人間は質問しません。
0101デフォルトの名無しさん
2008/01/20(日) 01:15:34@aと@bによる二次元の配列@xを作る際に、
for $i (0..$#a){
$x[0][$i] = $a[$i];
}
for $i (0..$#b){
$x[1][$i] = $b[$i];
}
多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変えるのに、
for $j (0..$#{$x[$i]}){
$c[$j] = $x[$i][$j];
}
というコードを書いてるんですが、もっと奇麗な書き方はありませんか?
0102デフォルトの名無しさん
2008/01/20(日) 01:38:01@x = (\@a, \@b);
>多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変える
@c = @{@x[i]};
「続・初めてのPerl」のような参考書をお読みください。
0103デフォルトの名無しさん
2008/01/20(日) 03:24:160104デフォルトの名無しさん
2008/01/20(日) 05:56:49ありがとうございました。
参考書を買って一通り読んだほうがよさそうですね。
アドバイスありがとうございました。
0105デフォルトの名無しさん
2008/01/20(日) 09:17:59× @c = @{@x[i]};
○ @c = @{$x[i]};
0106デフォルトの名無しさん
2008/01/20(日) 22:02:02ム板で言う「受け身」は「わからんから教えてくれ」の事だぞコラ
hoge や fuga を試したけど moge や munya のエラーになって
困っています。xxx.net や ○●の本を確認したけれど××の所
の通りで間違っていないコードかと思ったんですが。タスケテ
の様に複数の試行錯誤と複数の情報確認をひっさげてポストしてみ
0107デフォルトの名無しさん
2008/01/21(月) 10:27:18Perlの配列の要素はスカラーですよ?
0108デフォルトの名無しさん
2008/01/21(月) 10:59:150109デフォルトの名無しさん
2008/01/21(月) 12:22:47速さを求めるなら、正規表現の | より、正規表現使わないで or のほうが速いぞ
0110デフォルトの名無しさん
2008/01/21(月) 22:29:32やっと理解できたよ。map なんて昔からあった?
0111デフォルトの名無しさん
2008/01/21(月) 22:32:210112デフォルトの名無しさん
2008/01/22(火) 06:44:240113デフォルトの名無しさん
2008/01/22(火) 06:46:560114デフォルトの名無しさん
2008/01/22(火) 07:31:26perl4 には無かった記憶が。perl5 からだとすると
http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perlhist.pod
> 5.000alpha1 1993-Jul-31
> 5.000 1994-Oct-17
0115デフォルトの名無しさん
2008/01/22(火) 10:44:570116デフォルトの名無しさん
2008/01/22(火) 13:29:05なんとなくだが、その気持ちは分かった気がする。
0117デフォルトの名無しさん
2008/01/22(火) 13:39:170118デフォルトの名無しさん
2008/01/22(火) 14:18:17そのままLISPerになっちゃえばいいのにw
0119デフォルトの名無しさん
2008/01/22(火) 17:29:54前にも同じこと言ったけど中二病だよね。あれって。
0120デフォルトの名無しさん
2008/01/22(火) 17:31:340121デフォルトの名無しさん
2008/01/22(火) 17:59:140122デフォルトの名無しさん
2008/01/22(火) 18:23:02perl はプロトタイプとして使うな。
有る程度ロジックの検証ができたらCなりjavaなりに書き換える。
だから perl 固有すぎる命令は使いたくないね。
map のつかいかたを一所懸命覚えても、何の糧にもならないし。
0123デフォルトの名無しさん
2008/01/22(火) 18:24:230124デフォルトの名無しさん
2008/01/22(火) 19:22:390125デフォルトの名無しさん
2008/01/22(火) 19:58:090126デフォルトの名無しさん
2008/01/22(火) 20:18:470127デフォルトの名無しさん
2008/01/22(火) 20:19:100128デフォルトの名無しさん
2008/01/23(水) 20:45:350129デフォルトの名無しさん
2008/01/23(水) 21:13:32struct A => {
aaa => '@', ←ふつうの配列
bbb => '@' ←これを多次元配列にしたい
};
$A->aaa(0, 'a0000'); ←これと
$A->aaa(1, 'a1111'); ←これはよいとして
$A->bbb(0, 0, 'b0000'); ←これはダメ
$A->bbb(0, {0, 'b0000'}); ←これもダメ
$A->bbb({0, 0}, 'b0000'); ←これもダメ
どう書けばよいですか?お願いします。
0130デフォルトの名無しさん
2008/01/23(水) 21:22:35配列のリファレンスの配列にすればいい。
0131デフォルトの名無しさん
2008/01/23(水) 21:26:06$A->aaa->[0] = 'a0000';
$A->bbb->[0][0] = 'b0000';
こんなんじゃあかんの?
0132129
2008/01/23(水) 22:22:24>130
perlに多次元配列はないという噂は聞きますが
これまでCと同じ感覚で使ってました。プログラマじゃないので許してください。
>131
そんな記述できるのですね。
やりたかったことです。ありがとうございました。
0133デフォルトの名無しさん
2008/01/23(水) 23:15:250134デフォルトの名無しさん
2008/01/23(水) 23:36:070135デフォルトの名無しさん
2008/01/24(木) 00:08:28リファのリファとか言うより伝わりやすい。
厳密なのは仕様書書きとかがやればいい。
0136デフォルトの名無しさん
2008/01/24(木) 00:14:570137デフォルトの名無しさん
2008/01/24(木) 00:37:180138デフォルトの名無しさん
2008/01/24(木) 00:42:420139デフォルトの名無しさん
2008/01/24(木) 00:48:09それはPerl5で非推奨になった
0140デフォルトの名無しさん
2008/01/24(木) 01:26:30$hash{'a-b'}みたいなもんだし多次元のつもりでやると想定外のことになりうるからあまり勧められんね。
keysとかで簡単に拾うこともできんし。
0141デフォルトの名無しさん
2008/01/24(木) 01:32:05いまテストしてる環境はWinXP SP2 (5.1.2600) + ActivePerl 5.8.8 です(一応)。
0142デフォルトの名無しさん
2008/01/24(木) 02:20:590143デフォルトの名無しさん
2008/01/24(木) 03:09:03そもそもunixtimeの定義からして無理だろ。
負の数を正の整数で表現するにはどうしたらいいですか? みたいなもんだ。
自前の日付表現方法考えろ。
0144デフォルトの名無しさん
2008/01/24(木) 03:38:28どうもです。
unix time定義の厳密な定義はわかりませんが、仮に整数のみであるとしても
負数から計算してタイムスタンプなり配列なりを返す実装はありそうかなと思って。
もうちょっと探してみて、なさそうなら他の手を考えます。
0145デフォルトの名無しさん
2008/01/24(木) 03:40:230146デフォルトの名無しさん
2008/01/24(木) 05:18:37検索したら、下記かな?と思いましたが、終わってるようですし。
ttp://bug.org/ML/perl-jp/
0147デフォルトの名無しさん
2008/01/24(木) 10:42:03分かってる人間どうしで言うのは構わんけど
ここで「多次元配列使いたい」って質問してくる人はたぶん分かってないと思うぞ
0148デフォルトの名無しさん
2008/01/24(木) 11:06:45なんの話題をしたいかによる。
今はどこも過疎ってるけどね。
0149デフォルトの名無しさん
2008/01/24(木) 11:30:31ダイアルアップ時代の産物だと感じるねぇ
0150デフォルトの名無しさん
2008/01/24(木) 11:50:56ダイアルアップ時代になって、メールをプロバイダに取りに行くように
なって利点が無くなったもんだよ。
0151デフォルトの名無しさん
2008/01/24(木) 12:46:53じゃその利点があったとかいう時代に
日本で活動していたMLなんていくつあったの?
0152デフォルトの名無しさん
2008/01/24(木) 13:46:59MLはクローズドな空間を構成するために使われていたから、日本でいくつなんて、
数えられるわけないだろ。
とりあえず私は、あるとき、メールがオフィスタイムに平均して3秒に1通来る状態に
なって、biff - メール到来通知エージェントがつねにフラグを立てている状態になっ
て、調べてみると72のMLに入っていたので、入っているMLを整理したことがある。
あとになって調べてみると、POPが出てきた時に、「これはMLを殺すぞ」と
指摘していた人がいるんだよね。まあ、その通りになったわけで。
0153デフォルトの名無しさん
2008/01/24(木) 14:26:540154デフォルトの名無しさん
2008/01/24(木) 14:47:160155デフォルトの名無しさん
2008/01/24(木) 15:10:250156デフォルトの名無しさん
2008/01/24(木) 15:26:350157デフォルトの名無しさん
2008/01/24(木) 15:42:030158デフォルトの名無しさん
2008/01/24(木) 17:48:430159デフォルトの名無しさん
2008/01/24(木) 19:14:46ダイアルアップとは関係なく、コミュニティ・ツールが変わったのが大きい気がする。
perlな方々はblogやIRCで済ませてる人が多いみたいだし。
慣れてない人には不親切かもしんない。
0160デフォルトの名無しさん
2008/01/24(木) 19:30:09しかし投稿を一気に落として、必要な書き込み作ってアップロードって作業は
時間が限られた電話回線時代にはマッチしてた様に思うね。
今、特に常時接続になってからはMLでもなんでもクライアントでは
データコピーを持たない、ASPスタイルこそが時代の流れと
なっていったと思う。
オンライン辞書の類は地味ながら個人的にはここ10年でも
指折りの革新的なツールだと思ってるお。
0161デフォルトの名無しさん
2008/01/24(木) 20:00:53イマイチよくわかりません。
$,=" ";
としても
すべての変数に空白がつくわけではないようですし・・・
0162デフォルトの名無しさん
2008/01/24(木) 20:13:500163デフォルトの名無しさん
2008/01/24(木) 22:49:430164デフォルトの名無しさん
2008/01/25(金) 13:05:410165デフォルトの名無しさん
2008/01/25(金) 13:07:320166デフォルトの名無しさん
2008/01/25(金) 15:43:020167デフォルトの名無しさん
2008/01/25(金) 18:59:19暇だから答えよう。
$, = ' ';
@a = ('a'..'f);
print @a;
みたいな時に配列の間に半角スペースが入るってだけ。
print "@a";
の間には $" で指定。こっちはデフォで半角スペース入ってる。
0168デフォルトの名無しさん
2008/01/25(金) 20:38:170169デフォルトの名無しさん
2008/01/25(金) 21:22:360171デフォルトの名無しさん
2008/01/26(土) 13:20:13open関数でテキストドキュメントを読み込んで
表示するという初歩の操作を試しているのですが、
"invalid argument "というメッセージがでてきて
ファイルが開けません。
スクリプトは単純ですが以下の構造です。
open(F , ">C:\Perl\text.txt") || die " stupid : $!\n";
while(<F>) {
print;
}
close(F);
ファイルはtext.txtです。パスも間違っていません。どうすれば
よろしいでしょうか?
0172デフォルトの名無しさん
2008/01/26(土) 13:25:15英語で言うと、I is bookみたいな状態。
0173デフォルトの名無しさん
2008/01/26(土) 13:30:38print ">C:\Perl\text.txt", "\n";
とでもして、おまいが何をしようとしているかを確認してみろ。
0174デフォルトの名無しさん
2008/01/26(土) 18:39:26Windowsでながーい(256文字以上の)ファイル名使っている場合に
ファイル名は取得できるのですが
そのファイルサイズなどを取得する方法がわかりません。
短いファイル名ならサイズの取得も可能なのですが
非常に長いファイル名だとサイズに0が帰ってきます。
もしよかったらサイズ取得の方法をヒントだけでも結構ですので
教えてもらえませんか?
絶対できるのは間違いないとは思うのですが…
0175デフォルトの名無しさん
2008/01/26(土) 19:34:111: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0176174
2008/01/26(土) 20:13:11あの後、考えてみたら
Win32::UTCFileTime
を使ってなんとかなりそうな雰囲気です。
少なくともいくつかの例ではうまくいきました。
お騒がせして大変申し訳ありませんでした。
もうちょっと自分で考えないとだめですね…
0177デフォルトの名無しさん
2008/01/26(土) 20:17:23こりゃひどいね。
キミは、自分が何をしたいのかが分かってないみたいだね。
どこをどう直せばいいのか、教えるのは簡単だが
それはキミにとって良くない。
入門書を読むことをオススメするよ。
0178デフォルトの名無しさん
2008/01/26(土) 20:58:43そういわずに教えてあげなよ
0179デフォルトの名無しさん
2008/01/26(土) 21:00:22ありがとう。
これからはperldoc読みます。
プログラム言語は奥が深い。
三十路にはキツイザンス
0180デフォルトの名無しさん
2008/01/26(土) 21:26:32値を取り込むプログラムを作りたいです。
====
AAA
BBB
CCC
……
====
my @prohibit = ('XXX', 'YYY', 'ZZZ');
my @keep;
if ($_ !~ /$prohibit[0]/ && $_ !~ /$prohibit[1]/ && $_ !~ /$prohibit[2]/ ) {
push @keep, $_;
}
とすればまあできるんですが、
my @prohibit に禁止文字の追加や削除をしたときに困ってしまいます。
if ($_ !~ /@prohibit/ ) はエラーになります。
下の $ifif を作っても if 文が中身を把握してくれません。どのようにすればよいでしょうか?
my $ifif;
foreach my $i (0 .. $#{@prohibit}) {
$ifif = $ifif . sprintf " \$prohibit\[$i\] =\~ \/\^%s\/ \&\&", $prohibit[$i];
}
$ifif = $ifif . ' 0 == 0';
0181デフォルトの名無しさん
2008/01/26(土) 21:40:32半年授業をサボってたんだから、少しは自分で勉強しろよ。
0182デフォルトの名無しさん
2008/01/26(土) 21:41:02my $regex = join '|', map quotemeta, @prohibit;
if ($_ !~ /$regex/) { ...
0183デフォルトの名無しさん
2008/01/26(土) 22:29:02ありがとうございます。
単純なインクリメントで日単位の処理をしたいだけだったので
Date::Calc(::Object)で対応しました、という報告をしにきたところでした。
ユリウス暦とはまったく思いつきませんでしたが、Date::CalcはA.D.以降なので
ユリウス→グレゴリオ変換のほうが対応できる範囲が広がりますね。
まぁ20世紀を処理するだけなのでどっちもオーバースペックですがw
0184180
2008/01/27(日) 00:09:34ありがとうございました!!
0185デフォルトの名無しさん
2008/01/27(日) 00:35:54どうやってアンインストールしたらいいの?
フォルダ削除だけで平気?
こういうのもありかしら?
for my $value (<DATA>){
%prohibit = map +($_, 1), qw|XXX YYY ZZZ|;
push @keep, $_ unless exists prohibit{$_};
}
exit;
__END__
AAA
GGG
ZZZ
YYY
ZZZ
XXX
HHH
>>183
月の満ち欠けを画像出力するときに、ユリウスを使って計算をしたことがありましたから(゚∀゚)アヒャ
>>185
念のためrootタソになって、# rm -rf 推奨♪
0187デフォルトの名無しさん
2008/01/27(日) 00:50:04なんかおかしいよな(´・ω・`)
my %prohibit = map +($_, 1), qw|XXX YYY ZZZ|;
my @keep;
for my $value (<DATA>){
push @keep, $value unless exists prohibit{$value};
}
exit;
__END__
AAA
GGG
ZZZ
YYY
ZZZ
XXX
HHH
0189デフォルトの名無しさん
2008/01/27(日) 01:02:24そうなんです
まだ高校生でで思うように開発環境整えられないからさ
0190デフォルトの名無しさん
2008/01/27(日) 01:02:310191デフォルトの名無しさん
2008/01/27(日) 03:03:57>>188
なんかあえて難解な書き方にしてるような。
0192デフォルトの名無しさん
2008/01/27(日) 03:48:53Winだとインストールが面倒(できない)モジュールがあったりするよ。
まぁ中級後半くらいまでは充分だと思うけど。
0193デフォルトの名無しさん
2008/01/27(日) 11:12:16モジュール頼みのPerlなのに、モジュールがインストールできなくて
ユーザーが離れていってしまうという。
0194デフォルトの名無しさん
2008/01/27(日) 12:27:43Winにcygwinを導入してPerl使えとかいうのも酷な感じもする。
まあcygwin perlもCPANで入れられないモジュールもあるらしいけどなあ。
0195デフォルトの名無しさん
2008/01/27(日) 15:30:120196デフォルトの名無しさん
2008/01/27(日) 15:47:070197デフォルトの名無しさん
2008/01/27(日) 17:12:330198デフォルトの名無しさん
2008/01/27(日) 18:49:21しばしばmake中にエラーが出るので、その場合にはPPMも使ってる。
CPAN.pmとPPMを併用することによるエラーも出てきてるのかもしれないが、
いずれにせよWinにおけるモジュール管理のノウハウをもうちょっと蓄積したいね。
0199デフォルトの名無しさん
2008/01/27(日) 20:08:59failed: unable to open database file(1)
と表示されて起動できません。
ppm-shellは起動できるんですがinstallの段階で同じエラーになります。
どうやらユーザー名にマルチバイト文字が入っているせいらしいんですが
エラーを避ける方法はありませんか?
0200デフォルトの名無しさん
2008/01/27(日) 22:50:58ActivePerlでどのモジュールを利用するのか、分かりません。取り敢え
ず、Tk::TableMatrixをppmのコマンドでinstall Tk-TableMatrixでインストールし
ましたが、サンプルのコードが動きません。ActibePerlのバージョンは
This is perl, v5.8.7 built for MSWin32-x86-multi-threadとなって
います。
調べていたらuse Tk::TableMatrix;の1行のみのソースでもエラーが出
ます。エラーの内容は、下記です。
Had to create Tk::XlibVtab unexpectedly at C:/ActivePerl/lib/DynaLoader.pm line 253.
Use of uninitialized value in subroutine entry at C:/ActivePerl/lib/DynaLoader.pm line 253.
15.pl syntax OK
インストールに失敗しているのでしょうか? Perl/Tkの他の
Widgetについては、ボタン、ラベル、メニューについては動きます。全
てのテストはしていませんが。ppmのqueryではTk-XlibVtabはありませ
ん。searchでは、ActivePerlのリポジトリーにはありません。
そもそもが、スプレッドシートを使う時に、ActivePerlでどのモジュー
ルが必要なのかと言う事も理解していません。
恐れ入りますが、分かる方がいらっしゃいましたら、ご教授願います。
Perl/Tkでスプレッドシートが出来なければ、わざわざPerl/TkのGUIを
覚える必要もありませんから。宜しくお願いします。
0201デフォルトの名無しさん
2008/01/28(月) 00:05:07環境変数設定し。
新:知らないことがあってもへっちゃらさ: ActivePerl の ppm が起動しないのです
http://riku.justblog.jp/weblog/2008/01/activeperl-ppm-.html
0202デフォルトの名無しさん
2008/01/28(月) 19:37:31■テスト1
・CORE::GLOBAL::exitは呼ばれず、終了してしまいます。
#!/usr/bin/perl
use strict;
*CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)};
exit(1);
1;
■テスト2
・事前にSample.pmを作成します。
package Sample;
use strict;
use warnings;
*CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)};
1;
・CORE::GLOBAL::exitが呼ばれます。
#!/usr/bin/perl
use strict;
*CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)};
exit(1);
1;
■動作確認環境
This is perl, v5.8.5 built for i386-linux-thread-multi
This is perl, v5.8.8 built for x86_64-linux-thread-multi
0203デフォルトの名無しさん
2008/01/28(月) 19:38:31#!/usr/bin/perl
use strict;
use Sample;
exit(1);
0204デフォルトの名無しさん
2008/01/28(月) 20:24:02SET ACTIVEPERL_PPM_HOME=C:\Perl\ppm で起動できました
これで枕を高くして眠れます
ありがとうございます
0205デフォルトの名無しさん
2008/01/28(月) 21:41:52コンパイラがexitキーワードを解決するときの *CORE::GLOBAL::exit の問題。
#!/usr/bin/perl
BEGIN {
*CORE::GLOBAL::exit = sub { printf "exit(%s)\n",join(',',@_);CORE::exit(@_)};
}
exit 1; # この行が(実行ではなく)コンパイルされる時の *CORE::GLOBAL::exit
0206デフォルトの名無しさん
2008/01/29(火) 10:53:21のように配列の中に配列を入れたいんですが、できますか?
やっぱり、リファレンスを使うべきなんでしょうか?
0207デフォルトの名無しさん
2008/01/29(火) 11:23:200208デフォルトの名無しさん
2008/01/29(火) 16:01:58Terminal does not support AddHistory.
Terminal does not support GetHistory.
と言われるんですが、これは何ですか。
0209デフォルトの名無しさん
2008/01/29(火) 17:15:040210デフォルトの名無しさん
2008/01/29(火) 17:32:43Bundle::CPANのことでしょうか?
入ってるし機能しているはずなんですが・・・。
cpan>
で上下矢印キー押すとコマンド履歴出てくるから入ってる証拠ですよね。
おかしいです。
0211デフォルトの名無しさん
2008/01/29(火) 18:28:34探求をはじめなよ。
0212デフォルトの名無しさん
2008/01/29(火) 18:38:12あっ!!そういう手があるんですね。
hackですね。ww
0213デフォルトの名無しさん
2008/01/29(火) 20:38:01cpanの入れ直しから始めて、cpan setup後に
cpan >install Bundle::CPAN
をして、途中で
----
Ah, I see you already have installed libnet before.
do you want to modify/update your configuration(y|n)? [no]
----
とあったのですが、これはどういう意味ですか?
(英語としての意味じゃなくて、その中身です。何を指してるんでしょう。)
ソース見てもソース自体がよく分からなかったです。
0214デフォルトの名無しさん
2008/01/29(火) 20:41:34enter arithmetic or perl expression: exit
はexitのままEnterで良いですか?
いずれもメッセージ本文でGoogle検索してみたものの英語力不足のせいか
全く目当ての情報が見つかりませんでした。
0215デフォルトの名無しさん
2008/01/29(火) 21:03:54中身て?
単に、設定ファイル上書きしていいか 聞かれてるだけだけど…
0216デフォルトの名無しさん
2008/01/29(火) 21:18:58中身というのは
「設定ファイルを上書き」
というのが何かという意味です。
perlに慣れた人ならすぐ分かるのでしょうが、私は慣れていないので
ピンとこない、といえば伝わるでしょうか?
0217デフォルトの名無しさん
2008/01/29(火) 21:21:030218デフォルトの名無しさん
2008/01/29(火) 21:27:42英語は分かるので英語的な意味は分かるんですが、それが「何を指しているか」
が分からないんですよ。
言葉って指すものについての経験が不足していると伝わらないでしょう。
パソコンを触ったことがない人にアルゴリズムの話をしても伝わらないように。
冷静に考えてみてください。
それに、上で引用した
----
Ah, I see you already have installed libnet before.
do you want to modify/update your configuration(y|n)? [no]
----
にしたって、その部分の意味は英語の分かる私にはわかりますが、
文脈が分からないのですよ。
言葉って断片だけでは意味をなさなくて、背景の理解があって初めて、
その言葉が理解できるものでしょう。
なので、私がこのメッセージがチンプンカンプンだというのはそういうことです。
それで、どうすればいいんですか?
cpanという言葉もよく分かっていない状態なのですが、
設定というのも何を指すか分からないですが、
cpanの設定を変えていいかはどう判断したらいいんですか?
よろしくお願いします。
0219デフォルトの名無しさん
2008/01/29(火) 21:44:59さもなくばyes.
0220デフォルトの名無しさん
2008/01/29(火) 22:14:58日本語でおk。
要は、「どんな情報があって、それが何を意味していて、その情報を書き換えられたらどうなるのか、ということがわからない」と言いたいんだな?
0221デフォルトの名無しさん
2008/01/29(火) 22:22:500222デフォルトの名無しさん
2008/01/29(火) 22:26:14noにして大きなトラブルが生じそうになかったのでnoにしました。
では、代わりに。これも昨日から発生している問題なのですが、
cpan -fi [modname]
としたときに
Unknown option : f
と出ます。
Bundle::CPANを入れたらforceオプションが使えるようになると聞いたのですが、
このようになります。
ただし、cpanシェルのなかに入って
cpan[1]>force install [modname]
という操作なら出来ます。
出来ないのは、普通にシェルのコマンドライン上で
$ cpan -fi [modname]
とすることによるforceインストールが出来ません。
代わりに普通のインストールが行われてしまいます。
"unknown option: force" - Google 検索
http://www.google.co.jp/search?num=30&hl=ja&q=%22unknown%20option%3A%20force%22&lr=
17件しか引っかからず、よく分かりません。
Bundle::CPAN
0223デフォルトの名無しさん
2008/01/29(火) 22:30:38質問の意味がよく分かりません。
私が言いたかったのは断片だけでは言葉って意味をなさないということです。
文章的な文脈と知覚経験的な文脈とがあって意味をなすということです。
つまり、
----
Ah, I see you already have installed libnet before.
do you want to modify/update your configuration(y|n)? [no]
----
が分からないという質問に対して2度も直訳的な回答をされたのに対して
それでは伝わらないと言ったまでです。
0224デフォルトの名無しさん
2008/01/29(火) 22:33:260225デフォルトの名無しさん
2008/01/29(火) 22:39:55いいえ、正確には、このケースで必要とされる理解力と背景知識がなかった、です。
それで、背景知識としてどういったものが必要なのかが分からないので手がかりが欲しくて
上記の質問をしたのです。
理解力なんて測定できなくて曖昧なものを頼りにしていても仕方ないので、
まず背景知識を摂取する、そこがスタートだと考えました。
0226デフォルトの名無しさん
2008/01/29(火) 22:52:57>>222が分からないので調査中です。
0227デフォルトの名無しさん
2008/01/29(火) 23:01:51理屈ばっかりこねて行動力の無いタイプだな
0228デフォルトの名無しさん
2008/01/29(火) 23:11:30yes入力してみればどうなるか分かるだろうに。
0229デフォルトの名無しさん
2008/01/29(火) 23:59:27手がかり? 文中にはっきり「libnet」と書いてあるじゃないか。
ググって最初に出てくるのがこのページだ。
http://perldoc.jp/docs/modules/libnet-1.12/Net/libnetFAQ.pod
> libnetって何?
> libnetperl5モジュールの集合体で、それらは全てネットワーク
> プログラムに関連します。
ネットワーク関係のモジュール名を挙げて設定をするか否か
尋ねてきているんだから、ネットワーク周りの設定を改めて行うか
どうか問われている事ぐらい容易に想像できるだろ?
>まず背景知識を摂取する
それを自力で行う能力が致命的に欠けているだけだろ。
0230デフォルトの名無しさん
2008/01/30(水) 00:39:16理屈をこねたかどうかが大事なのではなくて、理屈が正しいか、
そして理屈が有効かが大事なんですよ。
正しくないor無効な理屈をこねていて、なおかつ行動もしていないのなら
あなたは私を批判する権利があります。
しかし、残念ながらこのケースではそれに該当しません。
それに、私は>>224に対して>>225を言ったということを忘れないでください。
>>224で想像力がないと断定されたのに対して>>225はその反論です。
決して無駄なおしゃべりをしたのではありません。
>>228
yes入力してみましたよ。noも。3回くらいはやって何が起きたかを観察しましたが
違いが分かりませんでした。
0231デフォルトの名無しさん
2008/01/30(水) 00:39:53>ネットワーク周りの設定を改めて行うか
>どうか問われている事ぐらい容易に想像できるだろ?
もちろんです。ですがそれ以上は想像できません。つまり、それ以上は「背景知識」を
摂取することで補完する必要がありました。
なぜ補完の必要があったか、それは以下のことが分からなかったからです。
1. たしかにlibnetと書かれているし調査の結果libnetがネットワーク関連だということも
分かったが、聞かれているのが本当にlibnetについてなのか、つまり、
do you want to modify/update your configuration(y|n)? [no]
というのは「configuration of libnet」の意味なのか
2. my configurationをmodifyとあるが私はこれまでにlibnetの設定をした記憶がない。
なのに、my configurationとはどういうことか。
3. configurationをなぜ今する必要があるのか
4. 今configurationの各項目をいい加減に決めてもconfigurationをあとで修正できるのか
5. もしそうなら知る必要があるconfigurationの保管場所はどこか
0232デフォルトの名無しさん
2008/01/30(水) 00:44:020233デフォルトの名無しさん
2008/01/30(水) 02:18:43この"configuration"は「設定」というより、「構成」なんだろうよ。
0234デフォルトの名無しさん
2008/01/30(水) 02:56:38ここは自分の思想を押し付けるスレじゃない。
0235デフォルトの名無しさん
2008/01/30(水) 05:11:37聞けばいいんじゃねえの?
0236デフォルトの名無しさん
2008/01/30(水) 05:27:59あぼーんする手間が面倒だよ
0237デフォルトの名無しさん
2008/01/30(水) 05:50:31ドラゴンボールの中でフリーザが一番好きです まで読んだ
0238デフォルトの名無しさん
2008/01/30(水) 08:52:31そうなのですか。参考にします。
>>232>>234
とんだ誤解ですね。私は決めつけられた誤解に対して答えただけですよ。
うらむ相手が間違っています。
それに私は私の哲学をどこで語っているんでしょうか。
Perlに関する質問のやりとりのなかで、致命的な誤解が生じてしまったので、
事情説明をしてコミュニケーションの修復を図っただけですよ。
どこにも私の主観・思想が語られておらず、ただ私に関する事実が述べられているのみです。
(もう一度お読みになってみることをお勧めします。)
それなのにその部分だけとりあげて哲学を語っているからスレ違いだとするのは
あまりに早計ではないでしょうか。
>>235
それだけの英語力があるかはやや不安です。
やはり、日本人だから日本語のほうが話しやすいものです。
0239デフォルトの名無しさん
2008/01/30(水) 09:00:21つうかもっと完結に書く能力はないの?
どうせ「誤解のない詳しく書いてどうのこうの」ってくどくど書くんだろ?
その妙な書き方 前に見たような気がするが…
0240デフォルトの名無しさん
2008/01/30(水) 09:10:20> うらむ相手が間違っています。
>>232 >>234がお前さんを「うらんでいる」という解釈こそ、この場で最も大きい「とんだ誤解」では。
どこから「うらむ」という発想が出てきたのか、まるで見えてこない。
0241デフォルトの名無しさん
2008/01/30(水) 10:03:470242デフォルトの名無しさん
2008/01/30(水) 10:28:450243デフォルトの名無しさん
2008/01/30(水) 10:34:40確かに簡潔に書くことは大切ですが、私が簡潔に書く能力がないとするのは論理の飛躍です。
それに、私の文章が簡潔でないというのも偏見ではないでしょうか。
文字数が特別多いわけでもないでしょう。
あと、簡潔に書けるのになぜ簡潔に書かなかったかというと、その必要を感じたからです。
つまり、あらぬ誤解をかけられて、それがために質問者としての目的の遂行に障害が発生したので、
必要なだけの対策を講じたまでです。
そうした些末なことはまさにスレ本題ではないので、>>241の言うように放置をお勧めします。
それから、2chは私は数年前から定期的に利用しているので、私の文章をあなたが見た可能性は否定
できませんが、私の今回の文章を見ただけで、あなたが過去に見た特定の文章の書き手と同一視して
しまうのは早計ではないでしょうか。
そもそも、仮にあなたが過去に見たような気がするというその文章が私のものだったとしても、
だからどうしたというんですか?
発言の意図が見えてこないし、スレ違いもはなはだしいので自重お願いします。
>>240
うらむという表現は「敵対的な言い方をされる」という表現に置換することも可能です。
要するに、表現方法の問題です。
そもそも、仮に、私が>>238で「とんだ誤解」といったときに最大な過ちが私の表現方法
にあったのだとしても、>>232>>234が誤解をしていることには何ら変わりがありません。
>>241
具体的にどんな点で私が注意されるべきなのでしょうか。
もっとも、>>241が私に向けた発言でないことは明白ですが。
0244デフォルトの名無しさん
2008/01/30(水) 10:39:180245デフォルトの名無しさん
2008/01/30(水) 10:42:170246デフォルトの名無しさん
2008/01/30(水) 10:54:080247デフォルトの名無しさん
2008/01/30(水) 12:47:150248デフォルトの名無しさん
2008/01/30(水) 12:52:09895 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/07(月) 02:32:27
頭が悪いのに口だけは達者な馬鹿の典型だなw
0249デフォルトの名無しさん
2008/01/30(水) 13:13:010250デフォルトの名無しさん
2008/01/30(水) 13:15:37早くインストールしろよw
0251デフォルトの名無しさん
2008/01/30(水) 13:18:17> そうした些末なことはまさにスレ本題ではないので、>>241の言うように放置をお勧めします。
オマエガナ
0252デフォルトの名無しさん
2008/01/30(水) 13:23:420253デフォルトの名無しさん
2008/01/30(水) 13:32:310254デフォルトの名無しさん
2008/01/30(水) 13:39:220255デフォルトの名無しさん
2008/01/30(水) 13:50:440256デフォルトの名無しさん
2008/01/30(水) 16:52:120257デフォルトの名無しさん
2008/01/30(水) 21:53:12…珍しくもないか
0258デフォルトの名無しさん
2008/01/30(水) 22:51:58こんな接続詞が多用されている時点で
簡潔に書けてない事がよく分かるな。
0259デフォルトの名無しさん
2008/01/30(水) 23:22:350260デフォルトの名無しさん
2008/01/31(木) 00:11:09精神病の人が医者に「これこれで私は精神病じゃないです」って言ってるのにそっくりなんだわ
たとえばこれとか
ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1331.html
0261デフォルトの名無しさん
2008/01/31(木) 00:16:370262デフォルトの名無しさん
2008/01/31(木) 00:43:52レ
違い
0263デフォルトの名無しさん
2008/01/31(木) 02:25:460264デフォルトの名無しさん
2008/01/31(木) 11:37:300265デフォルトの名無しさん
2008/01/31(木) 20:03:28一字だけ入力を受け付けたいときはどうすればいいでしょうか?
0266デフォルトの名無しさん
2008/01/31(木) 20:08:05っ[Term::ReadKey]
0267デフォルトの名無しさん
2008/01/31(木) 20:19:170268デフォルトの名無しさん
2008/01/31(木) 22:23:46で数字の桁数を数えられるようですが、どういう仕組みなのか分かりません・・・
くだ質の類だと思いますが、よろしくお願いします。
0269デフォルトの名無しさん
2008/01/31(木) 22:47:500270デフォルトの名無しさん
2008/01/31(木) 22:48:16$xが数字だけなら桁数と一致するわな.
0271デフォルトの名無しさん
2008/01/31(木) 23:32:10でもなんか違う気がする。
0272デフォルトの名無しさん
2008/01/31(木) 23:46:350273デフォルトの名無しさん
2008/02/01(金) 00:59:15それが保証されてるならlengthでもいい気はする。
0274デフォルトの名無しさん
2008/02/01(金) 03:09:51my $num = '-123,456';
print $num =~ tr/0-9//, "\n"; # 6
print length $num; # 8
0275デフォルトの名無しさん
2008/02/01(金) 08:49:130276デフォルトの名無しさん
2008/02/01(金) 10:18:250277デフォルトの名無しさん
2008/02/01(金) 11:53:200278デフォルトの名無しさん
2008/02/01(金) 11:54:25いや数字だけの列と保証されてる場合よ。
0279デフォルトの名無しさん
2008/02/01(金) 12:08:24・・・文字数だけじゃあんまり意味ないか
0280268
2008/02/01(金) 14:12:06処理の順番も勘違いしてました。↓の順番なんですね
$count = ( $x =~ tr/0-9/0-9/ );
ありがとうございました。
0281デフォルトの名無しさん
2008/02/01(金) 14:25:00置換もしくは削除した文字数を返す。
0282デフォルトの名無しさん
2008/02/01(金) 14:32:450284デフォルトの名無しさん
2008/02/01(金) 15:47:47tr/a/a/
ってのは置換したことになるの?
0285デフォルトの名無しさん
2008/02/01(金) 16:05:170286デフォルトの名無しさん
2008/02/01(金) 17:08:30の hoge にマッチした回数でいいんじゃね?
0287デフォルトの名無しさん
2008/02/01(金) 18:12:45文法上は置換する(したことになる)が、実際の置換は行われない。
tr/X// や tr/X/X/ は対象に含まれるXを数える為の記述で、この場合には対象が
左辺値である必要もない。
perl -le "print q/123,456/ =~ tr/0-9a/0-9a/" # エラーにならない
perl -le "print q/124,456/ =~ tr/0-9a/0-9b/" # エラーになる
perl -le "print int(1234.56) =~ tr/0-9a//" # エラーにならない
0288デフォルトの名無しさん
2008/02/01(金) 21:17:49なんで試さないのかなぁ。
もしかして、ナイコン?
0289デフォルトの名無しさん
2008/02/02(土) 13:24:32レスを書くよりキーを叩く回数が少ないのに。
0290デフォルトの名無しさん
2008/02/02(土) 13:55:000291デフォルトの名無しさん
2008/02/02(土) 15:24:02print 'aaaaa' =~ tr/a//;
-e syntax OK
% perl -MO=Deparse -e 'print q/aaaaa/ =~ tr/a/a/'
print 'aaaaa' =~ tr/a//;
-e syntax OK
0292デフォルトの名無しさん
2008/02/02(土) 17:10:44Can't modify constant item in character translation
と怒られてdieした。5.6.1なら置換回数が返された。
0293デフォルトの名無しさん
2008/02/03(日) 23:24:30だいぶ前に書かれたライブラリ(*.pl)が現役で動いているとします。
色々な箇所で使われているため、(動いている限りは)できるだけこれを修正したくありません。
このライブラリの中に、以下のようなサブルーチンがあります。
sub Func
{
local *data = $_[0];
#ハッシュにいろいろ詰め込む
}
このサブルーチンは、以下のように呼び出すようにとサンプルコードが示されています。
local %hash;
&Func(*hash);
これを呼び出し側だけでもlocalを排除しようと、以下のように書き換えました。
実行してみた結果、ちゃんと動いているように見えます。
my %hash;
Func(\%hash);
この場合、
1.呼び出し元だけを書き換えることに意味はあるのか?
2.あるとしたら正しい書き方は?(cron、CGI、mod_perlで動かすことを想定)
よろしくお願いします。
0294デフォルトの名無しさん
2008/02/04(月) 02:17:530295デフォルトの名無しさん
2008/02/04(月) 02:25:32一般論としては、その修正で得られるのが自己満足だけなら、さわらないことをお勧めする。
0296デフォルトの名無しさん
2008/02/04(月) 10:16:16あ、バージョン書き忘れてました。
Perl 5.005
Apache/1.3.28 (Unix)
mod_perl/1.29
※下2つはCGIやmod_perl動作時のもの。
>295
自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので
なるべくmyで統一したいと考えています。
それに、そのサブルーチンを呼ぶときだけlocalなのも変かなーと。
0297デフォルトの名無しさん
2008/02/04(月) 10:21:10> 自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので
> なるべくmyで統一したいと考えています。
そんな変質的行為に突入する前に、localの挙動をきちんと理解しろ。
0298デフォルトの名無しさん
2008/02/04(月) 10:41:310299デフォルトの名無しさん
2008/02/04(月) 11:08:20ただ、1.2.の問いがあるから「書き換える必要はないんじゃないの?」って言われてるわけで。
0300デフォルトの名無しさん
2008/02/04(月) 11:38:30ライブラリの方を修正したいけど……中途半端に手を出したら悲惨なことになりそう……
0301デフォルトの名無しさん
2008/02/04(月) 11:52:290302デフォルトの名無しさん
2008/02/04(月) 12:18:11古いライブラリがmod_perlで動いてるんです……
0303デフォルトの名無しさん
2008/02/04(月) 12:22:08なんかラッパー関数作ってそっち使うようにしてけば
そのうち古い関数は淘汰されるんでは?
0304デフォルトの名無しさん
2008/02/04(月) 12:51:200305デフォルトの名無しさん
2008/02/04(月) 13:53:56書き換えるよりも書きなおしたほうが早いことさえある
0306デフォルトの名無しさん
2008/02/04(月) 14:38:28以前、「どう見てもPrologです。本当にありがとうございました」な
プログラムをもらったことがある。
0307デフォルトの名無しさん
2008/02/04(月) 18:33:33localが気になるならコメント添えてここはこういう理由って記述しときゃ後で見たときにもわかるし。
せめてそのライブラリの流れ把握できるくらいになってからでないと。
0308デフォルトの名無しさん
2008/02/04(月) 19:53:070309デフォルトの名無しさん
2008/02/05(火) 00:06:020310デフォルトの名無しさん
2008/02/05(火) 05:09:260311デフォルトの名無しさん
2008/02/05(火) 18:09:00上でも言われてるがいじるメリットが自己満足だけなら俺もそのままのがいいとは思う。
0312デフォルトの名無しさん
2008/02/05(火) 20:11:35仕様変更はいつから?
実装変更は、perl 5.9から?
0313デフォルトの名無しさん
2008/02/06(水) 00:30:23できなくて質問CGIが動かないんだけど、以下エラー
Wed Feb 06 00:22:09 2008 Client Abort 2-- detected during CGI/SSI process
Wed Feb 06 00:22:10 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:11 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:12 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:14 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:15 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:16 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:18 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:19 2008 Warning: Connection closed and CGI process ID=400 ・・・・・・
以下の文法あやしい?
sub sub_lock {
# 1分以上古いロックは削除する
if (-e $lock_path) {
local($mtime) = (stat($lock_path))[9];
if ($mtime < time - 60) { &sub_unlock; }
}
local($retry) = 5;
# mkdir関数式ロック
while (!mkdir($lock_path, 0755)) {
if (--$retry <= 0) { &error('LOCK','LOCK is BUSY'); }
sleep(1);
}
$sys_lockflag=1;
}
ニフティで設置してる人いたからできるとは思うんだけども誰か助けて(;;)。。。
0314デフォルトの名無しさん
2008/02/06(水) 01:18:290315デフォルトの名無しさん
2008/02/06(水) 03:27:35ここはプログラムの板でってCGIの板じゃないよ。はい移動。
http://pc11.2ch.net/test/read.cgi/php/1176143582/
0316デフォルトの名無しさん
2008/02/06(水) 16:20:24おまいらPerlは毎日のように書いてるの?
俺のような記憶力弱いやつはPythonに替えるべき?
0317デフォルトの名無しさん
2008/02/06(水) 16:22:52として小文字を大文字に変換しようとしてますが、
Bareword found where operator expected〜
とか言ってエラーになります。
何度ググってもこれであってるぽいんですが…。わけがわかりません助けて。
0318デフォルトの名無しさん
2008/02/06(水) 16:26:310319デフォルトの名無しさん
2008/02/06(水) 16:29:44gをなくしたら通りました。g使えないの?
ぐぐってでてきた複数の例で使われてるんだけど。
試したVerは5.8.2と5.8.8。
0320デフォルトの名無しさん
2008/02/06(水) 16:31:360321デフォルトの名無しさん
2008/02/06(水) 17:01:290322デフォルトの名無しさん
2008/02/06(水) 17:26:53そんな毎日やるわけないけど
忘れたらリファレンスのページとか参考にすりゃいんじゃないの?
>>319
gはm s // だけのはず。
tr y は>>320
似てるけど一応動作は別もんだからね。
0323デフォルトの名無しさん
2008/02/06(水) 18:47:07Pythonでも、クラスのメソッドとか多くて覚えられないけどね。
ただ、Pythonに乗り換えたらPerlには戻れないと思う。
0324デフォルトの名無しさん
2008/02/06(水) 20:38:28使うときはWebサイトか昔書いたソースを見ながらやってる
0325デフォルトの名無しさん
2008/02/06(水) 22:47:26毎日とは言わないが、けっこう頻繁に使ってるな。
1回しか使わないような使い捨てスクリプトは perl で書いてる。
何度も使うのはCやjavaやVBやVBScriptや・・・・
perl って便利ですよ。
バッチファイルみたいに手軽にかけて、バッチファイルよりも遥に高度な処理ができるからね。
perl が嫌われてる理由を俺なりに考えてみた。
・漢字(ShiftJIS)に対応していない
・サーバアプリに向かない(CGI は負荷が重い)
・ソース丸見えだから業務アプリに向かない(納品できない)
でも使いようによっては超強力だよ。
0326デフォルトの名無しさん
2008/02/06(水) 22:56:53ところでperlで自分で書いたものって一月も前に書いたものは修正したくてならなくなるんだがwww
0327デフォルトの名無しさん
2008/02/06(水) 22:58:19Encode.pmがあるじゃない
> サーバアプリに向かない(CGI は負荷が重い)
Hatena, Mixi, その他探せば色々あると思うんだけど
Perlが糞な理由はOOPやリファレンス回りの小汚い記法と
省略の美学(笑)によって解読不能なコードが書けるからだろう
きちんと書けば(『Perlベストプラクティス』みたいに)大分ましだが
Perlの特長を削いでる感じがするね
0328デフォルトの名無しさん
2008/02/07(木) 00:21:34>ソース丸見えだから業務アプリに向かない
暗号化する仕組みがあるよ。
0329デフォルトの名無しさん
2008/02/07(木) 00:33:040330デフォルトの名無しさん
2008/02/07(木) 00:46:13個人で使うだけなら、迷わずPerl。
まぁ、好き好きだけどね。
0331デフォルトの名無しさん
2008/02/07(木) 00:57:31後発の言語のほうが練られてそうなんですが。
初学者なんでこのままマスターしようか乗り換えようか迷ってるのですわ。
0332デフォルトの名無しさん
2008/02/07(木) 01:02:24マスターした!って達成感を味わいたいなら別の言語にしたほうがいいよ。
0333デフォルトの名無しさん
2008/02/07(木) 01:05:360334デフォルトの名無しさん
2008/02/07(木) 01:08:19一通り文法覚えて書けるようになるだけなら、RubyもPythonも大して変わらんね
0335デフォルトの名無しさん
2008/02/07(木) 01:24:51そんな人生の選択みたいに迷うほどのことちゃいまっせ
0336331
2008/02/07(木) 01:43:10レスありがとうございました。とりあえずPerl覚えときます。
0337デフォルトの名無しさん
2008/02/07(木) 01:50:17横入りだけどJcode使ってた身としてはEncodeはかゆいとこに手が届かないなぁ。
あと、今はPHPとかエディタの機能とかで知れてるけど正規表現に腰が引けてる人もいたかもね。
使いこなせば強い味方だけどいきなりだとさっぱりわからんだろうし。
記述の簡略化はあるねー即興で組んだやつはファイルのクローズせずに終わらせたりかなり乱暴なことしてる。
0338デフォルトの名無しさん
2008/02/07(木) 02:12:190339デフォルトの名無しさん
2008/02/07(木) 09:46:44→後日、意味もなく省略化を施す
→さらに後日、自分の書いたものが理解できず解読作業
ひとつのコードで3回も楽しめるPerlサイコー\(^o^)/
0340デフォルトの名無しさん
2008/02/07(木) 10:38:16あるあるwwwありすぎて困るwww
0341デフォルトの名無しさん
2008/02/07(木) 11:22:360342デフォルトの名無しさん
2008/02/07(木) 12:13:33激しくスレ違いかもしれませんが、質問です。
PCゲームを多重起動しようと試みたのですがダメでした。
大抵のゲームはWindowsのアカウントを2つ作成し、別々のアカウントで起動すれば問題ありません。
現在、Vistaを使っているのでXPではどうなるかはわかりませんが(XPは右クリックから別ユーザーで起動が可能)、
Vistaでその手法をとる場合、runasコマンドを使用することになります。
しかしこのコマンドで別々に起動しても、後から起動したほうが無効になってしまいました。
で、ここからがわけわかめなのですが、同一のデスクトップからの起動はダメでも、
Windowメニュー→ユーザー切り替えをし、別々に起動すればうまくいきました。
この違いはいったいなんなのでしょうか?
0343デフォルトの名無しさん
2008/02/07(木) 12:17:360344デフォルトの名無しさん
2008/02/07(木) 12:27:320345デフォルトの名無しさん
2008/02/07(木) 15:02:53use Encode;
use WWW::Mechanize;
my $start = "http://***.com/***html";
my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->get( $start );
my $phrase = 'こんにちは';
$mech->follow_link( text_regex => qr/$phrase/);
.....
見たいなコードを書いて日本語のページ(shiftjis)をとりに行ってるんだけど、
getのときの文字コードの判別がうまくいかないので、
text_regexがうまく動かないんですが、いい方法ないですか?
0346デフォルトの名無しさん
2008/02/07(木) 17:29:33裏2chにあります
●裏2chの入り方
1・”名前欄”に「ura2ch.czfusianasana.net」と入力します。
裏2chへ飛ぶためのコマンドです、間違えないように”「」”の内側の文字をコピーペーストして下さい。
2・メール欄に閲覧したい板の関連キーワードを入力してください。
例:ロリ、グロ、無修正など
3・”本文欄”にIDとパスワードを入力します。
ID/パスワード=「guest/guest」
4・書き込みが終了すると2chのTOPに戻るのでもう一度入場
5・背景が暗転していたら成功、裏2chに侵入出来ています。
ちなみに裏2chに既存の板は勿論存在します、それにサーバーは外国のサーバーなので日本のややこしい法律に抵触する事も無いです
週末や2ちゃんねるで話題の事件があるときはアクセス数が増えサーバーに負荷がかかる為、つながりについ場合があります
スポーツ選手のコラや無臭性画像も多数UPされている板も存在します
それに完全な匿名性を誇るので違法行為を繰り返しても逮捕される事はまずありません
0347デフォルトの名無しさん
2008/02/07(木) 18:01:320348デフォルトの名無しさん
2008/02/07(木) 18:07:56名前が長すぎるようです♪
0350デフォルトの名無しさん
2008/02/07(木) 21:41:57exitと打ち込んでもコマンドプロンプトが終了できなくなってしまいます・・・
0351デフォルトの名無しさん
2008/02/07(木) 22:03:100352デフォルトの名無しさん
2008/02/07(木) 22:08:090353デフォルトの名無しさん
2008/02/07(木) 22:10:530354デフォルトの名無しさん
2008/02/07(木) 23:16:05エンター
0355デフォルトの名無しさん
2008/02/08(金) 01:33:020356デフォルトの名無しさん
2008/02/08(金) 09:05:11あるある。リンクが切れたのかと思っちまう。
#ちなみに、Ctrl+Qでぬける。
0357345
2008/02/08(金) 11:45:09裏2ちゃんねるにはいけませんでした、残念w
0358デフォルトの名無しさん
2008/02/09(土) 00:38:06>perlなんて簡単なバッチ処理を書いて使い捨てにするようなのに向いてる言語だから、
したり顔でそんな放言出来るなんて、おまいはまだまだだな。
perlでも信頼性と保守性を担った、アプリケーションと呼べるレベルのものまで書けるわさ。
0359デフォルトの名無しさん
2008/02/09(土) 00:57:310360デフォルトの名無しさん
2008/02/09(土) 01:14:050361デフォルトの名無しさん
2008/02/09(土) 01:32:18就職にはなんの役にも立たない。
それどころか、履歴書や職務経歴書に「Perl」などと書こうものなら
面接のその場で不採用決定。
C言語とか覚えとけば、java やその他の言語にも生かせるが
Perlじゃ「つぶしが利かない」からねぇ。
0362デフォルトの名無しさん
2008/02/09(土) 01:38:340363デフォルトの名無しさん
2008/02/09(土) 01:52:55(他の履歴とか面接でダメになる可能性はるけど)
0364デフォルトの名無しさん
2008/02/09(土) 01:54:14まあ、会社の分野というか方向性によって違うんだろうけど。
0365デフォルトの名無しさん
2008/02/09(土) 06:17:510366デフォルトの名無しさん
2008/02/09(土) 06:38:44$a = 'aa';
$b = \$a;
print $$b;
のデリファレンスを
print $b;
この形で行いたいんですが、良い代入方法は無いでしょうか?
*b = *a;は配列とかも同じになるので無しで。
PHPの
$b = &$a;
みたなのを希望。
0367デフォルトの名無しさん
2008/02/09(土) 07:02:56http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html#Symbol_Tables
$b = \$a;
0368デフォルトの名無しさん
2008/02/09(土) 07:07:50ありがとうございます。
読んで来ます。
0369デフォルトの名無しさん
2008/02/09(土) 09:14:46がみそ?
$a = 5.5;
$b = 4.5;
for($i = 0; $i< 11 ; $i++)
{
if($a == $b)
{
printf("match :");
}
else
{
printf("unmatch :");
}
printf( "%2.2f %2.2f \n",$b,$a);
$b = $b+0.1;
}
結果
unmatch :5.40 5.50
unmatch :5.50 5.50 (- 一致しない
0370デフォルトの名無しさん
2008/02/09(土) 09:24:45異なる値が一致しないのは当然。
0371デフォルトの名無しさん
2008/02/09(土) 09:50:000372デフォルトの名無しさん
2008/02/09(土) 09:51:090373デフォルトの名無しさん
2008/02/09(土) 09:58:13369じゃないけど勉強になったわ。
0374デフォルトの名無しさん
2008/02/09(土) 10:12:53perl -e '$A=5.5;$B=5.500000000000001;print "match\n"if $A eq $B'
これがイコールになっちゃうみたいですね
0375デフォルトの名無しさん
2008/02/09(土) 11:18:45(だからお金の計算に浮動小数点使っちゃだめ)
0376デフォルトの名無しさん
2008/02/09(土) 12:02:59eqの意味知っていて意図的に使ってるの?
0377デフォルトの名無しさん
2008/02/09(土) 14:08:21こりゃ便利だな。
0378デフォルトの名無しさん
2008/02/09(土) 17:17:17FAQのようですね。確かに今回初めて浮動小数点の比較を使ったんだけど、知らなかった。
0379デフォルトの名無しさん
2008/02/09(土) 17:29:41> FAQのようですね。
ちゃう。ちゃんとした教育を受けた人なら、質問を出す前に教わるくらいの事柄。
0380デフォルトの名無しさん
2008/02/09(土) 17:32:41じゃあ、お金の計算には何使えばいいんだ?
利息計算とかでいやでも小数使うと思うんだが。
0381デフォルトの名無しさん
2008/02/09(土) 17:40:170382デフォルトの名無しさん
2008/02/09(土) 17:45:35スマソ。
教育は受けてない。
0383デフォルトの名無しさん
2008/02/09(土) 17:49:140384デフォルトの名無しさん
2008/02/09(土) 18:20:08例えば消費税なら価格に5かけてから100で割る。
要するに細かい計算は整数で計算する。
0385デフォルトの名無しさん
2008/02/09(土) 18:50:44↓↓↓↓↓↓↓↓↓↓↓↓↓↓
0386デフォルトの名無しさん
2008/02/09(土) 18:52:560387デフォルトの名無しさん
2008/02/09(土) 19:02:220388デフォルトの名無しさん
2008/02/09(土) 20:29:27それを受け取りたいんですが、画面表示すると丸め誤差ってヤツ?が出てしまうんです。
ためしにやってみたこと
$x=pack('f', 123456 ); $y=unpack('f', $x); print $y,"\n";
$x=pack('f', 0.05 ); $y=unpack('f', $x); print $y,"\n";
$x=pack('f', 0.0000001); $y=unpack('f', $x); print $y,"\n";
結果
123456
0.0500000007450581
1.0000000116861e-007
元の数字に戻すには、どうしたらいいですか?
0389デフォルトの名無しさん
2008/02/09(土) 20:32:19「固定少数点」でググれ
0390デフォルトの名無しさん
2008/02/09(土) 20:34:52精度を指定すれば?
0391386
2008/02/09(土) 20:36:48すまん、>384への補足のつもりだったんだ
0392デフォルトの名無しさん
2008/02/09(土) 20:52:05精度の指定の仕方を教えてください。
0393デフォルトの名無しさん
2008/02/10(日) 00:44:37$x=pack('f', 0.0000001 ); $y=unpack('f', $x); ($z = sprintf("%.7f\n", $y)) =~ s/\.?0*$//;print $z;
0394デフォルトの名無しさん
2008/02/10(日) 16:23:05何がまずいのでしょうか。ActivePerl5.8です。
use IO::Select;
$sel = IO::Select->new;
$sel->add(\*STDIN);
while(1){
print "can_read\n";
@a = $sel->can_read;
foreach $fh (@a){
if($fh == STDIN){
print "STDIN\n";
}
exit;
}
}
0395デフォルトの名無しさん
2008/02/10(日) 16:51:18perlport より
>select
>Only implemented on sockets. (Win32, VMS)
0396394
2008/02/10(日) 18:23:33そう言う事かー。納得しました。ありがとうございました。
0397デフォルトの名無しさん
2008/02/11(月) 02:25:54与えられた文字列の中に特定のキーワードを見つけると、それをリンクに変換するようにしたいと考えています。
例:
[google:hoge] → <a href="http://www.google.co.jp/search?q=hoge">Googleでhogeを検索</a>
[mixi:xxxxx] → <a href="http://mixi.jp/show_friend.pl?id=xxxxx">mixi</a>
http://xxx.xx → <a href="http://xxx.xx">http://xxx.xx</a>
こういった置換を行うコードを1つずつ書くのではなく、
例えば、以下のような置換パターンをセットしたハッシュを用意しておき
%hash = (
'\[google:\w+\]' => '<a href="http://www.google.co.jp/search?q=$1">Googleで$1を検索</a>',
)
forやforeachで回しながら自動的に置換したいのですが、どのようにすればよいでしょうか。
(エンコードとかは考えない方向で)
foreach my $key (keys %hash)
{
$input_str =~ s/$key/$hash{$key}/g;
}
とやった場合、変換後の文字列の中に「$1」そのものが入ってしまいます。
0398デフォルトの名無しさん
2008/02/11(月) 02:29:35できるかは知らん
0399デフォルトの名無しさん
2008/02/11(月) 10:43:55クロスサイトスクリプティングって知ってるか?
素人のCGI作成は法律で禁止して欲しい。
0400デフォルトの名無しさん
2008/02/11(月) 11:28:03答えそのものは書かないけど、以下のことが必要。
'\[google:\w+\]'の部分は'\[google:(\w+)\]'でしょうね。そうしないと
$1で受け取れないから。
置換をするなら、
$input_str =~ s/$key/conv($1, $hash{$key})/eg;
などとしておいて、
sub conv {
my ($word, $str) = @_;
$str =~ s/\$1/$word/g;
$str;
}
などとでもしておくとか。
で、
URLのクエリー部分に仕込む文字列はURIエスケープが必要。
そんで、マルチバイトの場合、どの文字コードにしてからエスケープするかも
考える必要あり。
さらに、<a>と</a>の間の文字列に使用するときはサニタイズ処理が必要(XSS対策)。
>>398 の方法だと、perlコードをそのまま解釈してしまうので、別の危険あり。
「与えられた文字列」は誰が与えるのかがとても大きな問題です。
URLにリンクを張るのは、大崎氏のPerlメモが使えると思います。
0401デフォルトの名無しさん
2008/02/11(月) 11:57:26もちろん知ってます。
置換条件と置換パターンを配列などに保持しておく(または外部から読み込む)という考え方自体が
セキュアではないということでしょうか?
>400
( )で括って無かったのは書き込み時のミスです、すみません。
手元のソースでは書かれてたんですが、適当な条件に直すときに忘れてしまったようです。
0402デフォルトの名無しさん
2008/02/11(月) 12:22:23'<a href="http://www.google.co.jp/search?q=${1:urlencode(utf8)}">Googleで${1:htmlsafe}を検索</a>'
とかして、これを解釈するようにすればよい。
0403デフォルトの名無しさん
2008/02/11(月) 17:27:17自分用のツールをさくっと作るつもりだったけど、そこまでやろうとすると手間かなあ。
誰かモジュール作ってるかもしれないけど。
0404デフォルトの名無しさん
2008/02/11(月) 18:12:59'おまんこ'も'おちんこ'もマッチしないのですが、どこか間違いあるのでしょうか?
use strict;
use warnings;
use utf8;
binmode STDOUT, ':utf8';
while (my $str = <STDIN>) {
chomp($str);
last if ($str eq 'end');
if ($str =~ /お.んこ/) {
print "$& --- マッチしたお\n";
} else {
print "マッチしないお\n";
}
}
0405デフォルトの名無しさん
2008/02/11(月) 18:16:55追加したらマッチしますた。
0406デフォルトの名無しさん
2008/02/12(火) 05:34:25use Encode;
binmode STDOUT, ':iso-8859-1';
open READ , '<:encoding(utf8)', "$ARGV[0]" ;
while (my $data = <READ>){
print "$data";
}
close READ;
exit;
でutf8でencodeされたファイルをiso-8859-1に変換しようとしたら、
標準出力ではうまくいって、リダイレクトすると文字化けしました。
おわかりになる方、いらっしゃるでしょうか。
0407デフォルトの名無しさん
2008/02/12(火) 05:45:100408デフォルトの名無しさん
2008/02/12(火) 09:07:43lvのほうがlessより優秀ってイメージなんだけど、lvが文字コードを誤判定しちゃったのかな。
0409デフォルトの名無しさん
2008/02/12(火) 12:12:12my $delimiter = "\t";
my $q = new CGI;
my $save = $q->param('name') . $delimiter . $q->param('mail');
my ($name, $mail) = split /$delimiter/, $save;
入力はHTMLフォームからを想定しています。
こういった場合に適切なデリミタは何でしょうか。
たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし
\tは入力が可能、\0は良い方法だと思いますがCGI.pmと衝突します。
\a等が良いのでしょうか。
0410デフォルトの名無しさん
2008/02/12(火) 12:14:45○ たまに<>を見かけますが<>を<>に変換してる場合じゃないと有効で無いですし
ミスりました汗
0411デフォルトの名無しさん
2008/02/12(火) 12:52:410412デフォルトの名無しさん
2008/02/12(火) 13:13:530413デフォルトの名無しさん
2008/02/12(火) 14:12:21my $save = join("&&", map { my $i = $q->param($_); $i =~ s/&/&/g; $i } ("name","mail"));
my($name,$mail) =~ map { s/&/&/g; $_ }(split("&&",$save));
0414デフォルトの名無しさん
2008/02/12(火) 18:08:01<SOME_UNPREDICTABLE_STRING_XXX> でおk
0415デフォルトの名無しさん
2008/02/13(水) 11:16:04初心者が多く、下記コードについて評価できません
プロの目から見た下記コードの評価を教えて下さいませ
http://live27.2ch.net/test/read.cgi/market/1202806626/454
$vict++;
$vict100++;
print $_ ."$riekiプラス!持ち越し成功!\n";
}
if($end < $start2){
$loss=$start2-$end;
$loss=~s/\-//;
$totall =$loss + $totall;
$totall100 =$loss + $totall100;
$lost++;
$lost100++;
print $_ ."$loss マイナス!持ち越し失敗!\n";
}
}
0416デフォルトの名無しさん
2008/02/13(水) 11:16:34if(($cost < 1000)&&($cost > 300 )){
if($end > $start2){
$rieki=$end -$start2;
$rieki=~s/\-//;
$totalr =$rieki+$totalr;
$totalr1000 =$rieki+$totalr1000;
$vict++;
$vict1000++;
print $_ . "$riekiプラス!持ち越し成功!\n";
}
if($end < $start2){
$loss=$end-$start2;
$loss=~s/\-//;
$totall =$loss + $totall;
$totall1000 =$loss + $totall1000;
$lost++;
$lost1000++;
print $_ . "$lossマイナス!持ち越し失敗!\n";
}
0417デフォルトの名無しさん
2008/02/13(水) 11:22:13前の部分が欠けてて途中からになってるけど…?
0418デフォルトの名無しさん
2008/02/13(水) 11:35:29処理内容としては
1.コストで場合分け(ここで見えてるのは300から1000まで)
2.スタートとエンドの差をとって,スタートがエンドより低ければ利益,逆なら損害として出力
3.利益または損害をトータルに加算
4.利益の出た回数と損害の出た回数をカウント.コストの範囲ごとにもカウント
なんつうか小学生でも計算できる内容だ
0419デフォルトの名無しさん
2008/02/13(水) 11:43:46合ってりゃいいと思うよ
0420デフォルトの名無しさん
2008/02/13(水) 11:54:35軽くスレ読んだが名高いプログラマじゃなくて単に周りに避けられてる面倒くさい人じゃん。
コードは上で言われてるように初心者でも書ける程度のもん。
プログラム書かない人にけん制になると思ったのかもしれんが
こんなの書いて自慢する人より電卓持ってる事務員のがずっとマシ。
0421デフォルトの名無しさん
2008/02/13(水) 12:08:22それ以外に評価しようが無い。
0422デフォルトの名無しさん
2008/02/13(水) 12:11:020423デフォルトの名無しさん
2008/02/13(水) 12:17:130424デフォルトの名無しさん
2008/02/13(水) 12:25:14プロの料理人と比較しちゃいけない。
0425デフォルトの名無しさん
2008/02/13(水) 12:27:120426デフォルトの名無しさん
2008/02/13(水) 12:31:07あ、ごめん。機能満たすだけなら充分。
でも向こうのでの使い方が目的あって出してるコードじゃなく
素人にコード見せて牽制してるだけだからこんなの自慢にならんなぁって。
0427デフォルトの名無しさん
2008/02/13(水) 12:36:310428デフォルトの名無しさん
2008/02/13(水) 12:40:320429415のスレ住人
2008/02/13(水) 12:41:56年収3000万だったそうです。
ですからプログラムの内容というよりは
アイデアで儲けている方なのかもしれませんね。
真実が定かでは無いのですが彼がIT企業の社長という点はどう思われますか?
0430デフォルトの名無しさん
2008/02/13(水) 12:42:37だが余った食材をそのまま食べたほうが味も見た目も栄養も手間も優れていたというパターン
ただの自己満足にしかなってないという…
0431デフォルトの名無しさん
2008/02/13(水) 12:43:040432デフォルトの名無しさん
2008/02/13(水) 12:44:33という内容のことを言っていたのですが、株板では判断できる人が少なかったので参考になりました。
0433デフォルトの名無しさん
2008/02/13(水) 12:45:27ヨホホ♪ \ \ ♪
\/ `' ==‐‐-- 、 ♪
ξミミミミミ ./\ .ヽ,
. |´_`| / .\ ,l
/.__) ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄|
〜l└‐L、 _,==.,―――=,==r′
l~~`ゝつ.l l |||/ | l´ l |
. ´|| ̄||´ |.|≠ || ||
0434デフォルトの名無しさん
2008/02/13(水) 12:46:12とりあえず
2chに入りびたってコテハンつけてる
そんなIT社長はイヤだ
0435デフォルトの名無しさん
2008/02/13(水) 12:46:21どうぞ全部読んであげてください
http://live27.2ch.net/test/read.cgi/market/1188339064/l50
0436デフォルトの名無しさん
2008/02/13(水) 12:46:32,,-''", ―‐―イ―ュ---、,,,,,,,,,,_ 三\
/ ∠ ム_ゝ三i二二(山山アヲ -= 二)
γ √ イ,, -" .三/
.ん、_(γ7''"  ̄
r�_,ノ''こ!、,,┴.
.| ‘''く′ ,/ │
.r'ヘ,、 `'イ゙>'"
.厂|,`'-,, .|'ヽ、
.〜へ-―‐^''ー"
0437デフォルトの名無しさん
2008/02/13(水) 12:47:22ここは2chだぞ
0438デフォルトの名無しさん
2008/02/13(水) 12:48:360439デフォルトの名無しさん
2008/02/13(水) 12:50:03投資板はcisっていうイレギュラーの塊のような人が住んでるから
うそつきが住みやすいんですよ
0440デフォルトの名無しさん
2008/02/13(水) 12:51:27>>435
いりません。お引き取りください。
0441デフォルトの名無しさん
2008/02/13(水) 12:51:27Results 1 - 10 of about 1,040 Japanese pages for 金拝主義. (0.21 seconds)
Results 1 - 10 of about 5,450 Japanese pages for ボラリティ. (0.14 seconds)
Results 1 - 10 of about 3,130,000 Japanese pages for シュミレーション. (0.10 seconds)
Results 1 - 7 of 7 Japanese pages for イートレイドワラッパー. (0.35 seconds)
プロフィールをていぞう
愚かの骨頂
個性的な語彙を持ってることはわかった
0442デフォルトの名無しさん
2008/02/13(水) 12:51:45信じたいんですがやっぱり嘘なのでしょうか。
客観的に見てあのくらいのプログラムが書ければ年収二千万はいけるのでしょうか
0443デフォルトの名無しさん
2008/02/13(水) 12:53:43すでに必要な情報は提示されてる。あとは自分で考えれ。
ここは2chだぞ。
0444デフォルトの名無しさん
2008/02/13(水) 12:55:09でどこの幼稚園の子供よ?
0445デフォルトの名無しさん
2008/02/13(水) 12:55:130446デフォルトの名無しさん
2008/02/13(水) 12:57:500447デフォルトの名無しさん
2008/02/13(水) 12:59:57200万円くらいのお金と60万円の証券会社の口座と
ゴールドカード4枚ですね。
プログラムのスキルでよく株のツールなどを作ろうかなどと言ったりします
0448デフォルトの名無しさん
2008/02/13(水) 13:12:34なんだかんだで君も彼にぞっこんっぽいなw
0449デフォルトの名無しさん
2008/02/13(水) 13:14:022ch語を適当に組み合わせるしか脳のない「普通の厨」なら、
似たようなクオリティの人工無能も書けるかもしれないけど、
天然素材は模しようがないなw
0450デフォルトの名無しさん
2008/02/13(水) 13:19:08実は本人はスーパーハカーで,2chに書き込んでるのはサイタマンに作られた人工知能なんじゃないか…
そしてあのコードも学習して自動生成されたんじゃないかと妄想してみたwww
0451デフォルトの名無しさん
2008/02/13(水) 13:29:30ゴールドポイントカードならぼくも持ってるよ。
0452デフォルトの名無しさん
2008/02/13(水) 13:33:070453デフォルトの名無しさん
2008/02/13(水) 15:54:58通番どおりに結合して1つの出力にする上手い方法ありませんでしょうか?
0454デフォルトの名無しさん
2008/02/13(水) 15:59:000456デフォルトの名無しさん
2008/02/13(水) 18:31:44それらをうまく結合する手段ってないでしょうか?
具体的には以下のような感じです
@array[1] = {aaa, bbb}
@array[2] = {ccc, ddd}
@array[3] = {eee, fff}
このとき、一つの変数にまとめて
{aaa, bbb, ccc, ddd, eee, fff}
となるようにしたいです。
申し訳ないのですが、知恵を貸してください。
0457デフォルトの名無しさん
2008/02/13(水) 18:46:13深さのある配列を左から順番に呼んでフラットな配列を作りたいんですが、
よい方法ご存知の方いませんか
@a = ([1,2,3], [4,5,6], [[7,8],[9,0]]);
@b = flatten(@a); # 1,2,3,4,5,6,7,8,9,0
546 :デフォルトの名無しさん:2007/05/12(土) 03:16:52
>>544
sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }
こんなんどうよ。
0458デフォルトの名無しさん
2008/02/13(水) 19:26:12456です、回答ありがとうございます。
しかしながら、私が挙げた例の場合にはどのように用いればよいか分からず困っています。
ヒントだけでもいただけないでしょうか?
0459デフォルトの名無しさん
2008/02/13(水) 19:29:200460デフォルトの名無しさん
2008/02/13(水) 19:31:12理解できました、ありがとうございます!
0461デフォルトの名無しさん
2008/02/14(木) 00:42:53DBへの接続は各スレッドで行います。
Perl自体はスレッドに対応していても、関連モジュールとかの対応状況がわかりません。
バージョンは以下の通りです。
Perl 5.8.8
libpg 2.1.1
PostgreSQL 8.1
ディストリビューションは、Debian etchです。
スレッドの方が子供の面倒が見やすそうなので、できればスレッドにしたいのです。
0462デフォルトの名無しさん
2008/02/14(木) 01:19:43オレは家でゴロゴロしてアニメ観るのに忙しいから。
・・・とか?
0463デフォルトの名無しさん
2008/02/14(木) 01:27:230464デフォルトの名無しさん
2008/02/14(木) 21:24:49せっかくぼけてくれたところをマジレスすると、試して問題なかったからと言って、スレッドに対応しているとは限らないから困ってるんです。
たまたま動いているだけってことがあるし。
0465デフォルトの名無しさん
2008/02/15(金) 09:03:330466デフォルトの名無しさん
2008/02/15(金) 22:25:02その当たりの情報は、ソースやリリースノートを追うしかないと思う。
やたら古くてあまり参考にならないけど
tp://homepage3.nifty.com/hippo2000/perltips/DBI/FAQ.htm#5_1_Can_I_do_multi_threading_wit
0467デフォルトの名無しさん
2008/02/16(土) 02:06:19ppm search (モジュール名)
でモジュールをネットから探してくれないのですが、
何か指定が必要でしょうか。
0468デフォルトの名無しさん
2008/02/16(土) 02:59:345.8 と5.10ではバイナリ互換性がないので、単に5.10向けにビルドしたのがないと思われる。
0469デフォルトの名無しさん
2008/02/17(日) 01:17:31insert into a(a) value("あ");
コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。
0470デフォルトの名無しさん
2008/02/17(日) 03:10:36向こうの(mysql)スレでも言われているように、mysqldのdefault-charsetは確認したか?
0471デフォルトの名無しさん
2008/02/17(日) 09:58:050472デフォルトの名無しさん
2008/02/17(日) 11:02:29ほんじゃ、unpack()つかって、バイナリの並びを表示して確認してみるとか?
0473デフォルトの名無しさん
2008/02/17(日) 11:04:16最近の Perl は内部 UTF-8 だべ。
0474デフォルトの名無しさん
2008/02/17(日) 12:00:13>>470で聞いたのは、mysqldの’connect’と’client’のcharsetのこと。
mysqldのversionを明記してないけど、多分4.1か5.0だと仮定して、
perl-DBD-mysqlで接続したときの、default-charsetがちゃんと’sjis’なり’cp932’になってない。
(mysqldとDBD-mysqlを自前でコンパイルしてない限り)
つうことでそこを確認、変更しましょう。
ちなみに>>469で書いてるみたいに、コマンドラインのmysql.exeからLoginして確認した
’charset’関係は、あくまでもコマンドラインのmysqlからの接続時のみに効いてる状態なんでそれとは別。
0475デフォルトの名無しさん
2008/02/17(日) 13:47:20insert 以前にさ、select はうまくいくの?
初心者なら、簡単な事からはじめてみよう。
use utf8;
use DBI;
my $db = DBI->connect("DBI:mysql:以下省略・・・
$db->do('SET NAMES UTF8');
$id = 1;
my $sql = "SELECT name,address FROM members WHERE id=$id;";
my $sth = $db->prepare($sql);
$sth->execute or die DBI::errstr;
$sth->bind_columns(undef, \(my($M_name,$M_address))) or die DBI::errstr;
my $rc = $sth->fetch();
utf8::decode($M_name);
utf8::decode($M_address);
insert はこの逆をすればいいだけ。
0476デフォルトの名無しさん
2008/02/17(日) 16:29:46f-e-d-c-b-a-0-a-b-c-d-e-f
0477デフォルトの名無しさん
2008/02/17(日) 16:31:009-8-7-6-5-4-3-2-1-X-1-2-3-4-5-6-7-8-9
0478デフォルトの名無しさん
2008/02/17(日) 17:13:021{"f" = "-f == f" && "+f == f"}
2{"9" = "-9 == 9" && "+9 == 9"}
3{構成文省略}
"9" は "f" に等しく、また "-9" は "-f" に等しい
"0" は "X" に等しいので "0" == "X" = "n" とする
先ず此の構成を "x,y,z && n" を成型にしなさい
また "n" は "y" で在り "9…0…9" まで存在する
しかし "n = y" の配列は"次の"配列 "9…0…9" を使用する事!
残された "9…0…9" は "1/3" の後の "1/4" で使うが?
"n" == "0 = X" && "x,y,z" = "x,y,z" == "n/4" に為りますが構成は入り組んで居りますね?
0479デフォルトの名無しさん
2008/02/17(日) 17:17:150480デフォルトの名無しさん
2008/02/17(日) 17:19:520481デフォルトの名無しさん
2008/02/17(日) 17:26:210482デフォルトの名無しさん
2008/02/17(日) 17:26:350483デフォルトの名無しさん
2008/02/17(日) 17:28:26誰か和訳たのむ
0484デフォルトの名無しさん
2008/02/17(日) 18:52:46くだらねぇ問題はここへ書け ver.3.14(57桁略)4592
http://science6.2ch.net/test/read.cgi/math/1197828000/
0485デフォルトの名無しさん
2008/02/17(日) 20:29:46ん?
>>477
え?
>>478
パルプンテ
0486デフォルトの名無しさん
2008/02/17(日) 21:40:18居りますよ
0487デフォルトの名無しさん
2008/02/17(日) 22:24:11医者に見せたほうがいいですか?
0488デフォルトの名無しさん
2008/02/17(日) 22:28:07このスレ的には大きなツブツブのほうが好まれますね
死ね
0489デフォルトの名無しさん
2008/02/18(月) 21:53:13http://www.activestate.com/
にいったのですが
久々に訪れてみたら、
ずいぶん様子が違いダウンロードする場所がわかりません
どこにあるのでしょうか
0490デフォルトの名無しさん
2008/02/18(月) 21:55:360491デフォルトの名無しさん
2008/02/18(月) 21:58:52即答ありがとうございます 助かりました
0492デフォルトの名無しさん
2008/02/18(月) 23:48:34http://homepage3.nifty.com/hippo2000/perltips/xml/xmlenc.htm
作成したマッピングファイルは、規定のディレクトリに置けば良いのですが、
ローカルディレクトリに置いたまま使用したいと考えています。
任意のディレクトリをマッピングファイル検索パスに追加する方法はあるのでしょうか?
0493デフォルトの名無しさん
2008/02/19(火) 10:39:350494デフォルトの名無しさん
2008/02/20(水) 18:14:270495デフォルトの名無しさん
2008/02/20(水) 18:15:38$moji = 'a<>b<>c<>';があって
2番目だけを切り取るいい方法ってありますか?
配列ならspliceみたいな
0496デフォルトの名無しさん
2008/02/20(水) 18:20:220497デフォルトの名無しさん
2008/02/20(水) 18:52:370498デフォルトの名無しさん
2008/02/20(水) 18:54:530499デフォルトの名無しさん
2008/02/20(水) 18:59:540500デフォルトの名無しさん
2008/02/20(水) 22:39:18「切り取る」とは
除去なのか
$moji =~ s/(?<=<>).*?(?=<>)//; # a<><>c<>
$moji =~ s/(?<=<>).*?<>//; # a<>c<>
取得なのか
$value = (split /<>/, $moji, 3)[1]; # $value = 'b';
0501デフォルトの名無しさん
2008/02/21(木) 19:15:50目的は Perlスクリプトに GUIラッパーをかぶせることです。
処理結果を Excel に渡してグラフ表示することなども考えてますので、
その意味でも Excel から一貫して操作できれば、と考えています。
具体的には Web サーバからダウンロードした Apache の access log を
見やすく解析したいと思っています。
業者さんの設置してくれた アクセスログ解析CGI では得たい情報が得られないので、自分でなんとかしようと思いました。
実行するのは会社のパソコン上です。Perl の実行環境は用意しようと思っていますが、
それ以外のローカルサーバでの CGI とか PHP とかは今のところ考えていません。
環境は WindowsXP、Excel 2003 です。
どうぞよろしくお願いします。
0502デフォルトの名無しさん
2008/02/21(木) 20:21:420503デフォルトの名無しさん
2008/02/21(木) 20:45:24Excelのマクロでグラフにすればいいんじゃないかな
0504デフォルトの名無しさん
2008/02/21(木) 20:46:100505>>501
2008/02/21(木) 22:11:59>>502
やはりスレ違いでしたか…Excel VBAスレのテンプレ読んでこちらに来てしまったのですが、
書き込んでからやっぱりこっちのスレは違うかもと思いました。申し訳ありませんでした。
>>503
Perlを実行するのを、DOS窓からコマンドを打ち込むのではなく、例えば
Excel の マクロの中から実行できないかと思いまして…。
>>504
Excel の VBAでスクリプトを作りかけたんですけど、簡単な置換をさせただけでも
結果が帰ってくるまでに5分ぐらいかかってしまいました。それでPerlに変えたんです。
もっとも実行させたのがPPCのMac上だったので、Windowsだったらもっと早いとは思うのですが…。
ではExcelのスレに移動することにします。
レスいただきどうもありがとうございました。
0506デフォルトの名無しさん
2008/02/22(金) 09:29:51IPアドレスだと毎回変わるんだが
0507デフォルトの名無しさん
2008/02/22(金) 14:50:54----------------------------------------------------
extended device statistics
device r/s w/s kr/s kw/s wait svc_t %b
twed0 6.3 35.9 81.1 565.8 0 9.8 7
----------------------------------------------------
の中の、「81.1」と「565.8」だけ標準出力したいのですが、
試行錯誤したのですが、うまくいきません。
最後に試したのが、以下のスクリプトですが、
何も表示されずにちょっとお手上げです。
どなたかご指摘頂けないでしょうか?
どうぞお願いします。
----------------------------------------------
#!/usr/bin/perl
open(FILE, "iostat -x");
while (<FILE>) {
if (/^twed0?\s+?[0-9\.]+?\s+?[0-9\.]+?\s+?([0-9\.]+)?\s+?([0-9\.]+)?\s+?[0-9]+?\s+?[0-9\.]+?\s+?[0-
9]+$/) {
print "$1\n";
print "$2\n\n\n";
}
}
close(FILE);
----------------------------------------------
0508デフォルトの名無しさん
2008/02/22(金) 14:55:330509デフォルトの名無しさん
2008/02/22(金) 15:01:39アドバイスありがとうございます。
>>508さんの方法でもやってみたのですが、やはり何も表示されませんでした。
何がまずいんだろう・・・
0510デフォルトの名無しさん
2008/02/22(金) 15:11:340511デフォルトの名無しさん
2008/02/22(金) 15:15:43最後の改行コードは大丈夫?
0512デフォルトの名無しさん
2008/02/22(金) 15:25:300513デフォルトの名無しさん
2008/02/22(金) 15:35:15もうちょっと見てみるわ
0514507
2008/02/22(金) 18:56:36お手数お掛けしてすみません。
私は、いつもphpを使っているので、phpのperl互換の正規表現で色々と試行して、
phpでは正規表現の部分で正常にできました。
どこが動かないのかデバックコードを書いてみました。
----------------------------
#!/usr/bin/perl
open(FILE, "iostat -x |");
print"-";
while (<FILE>) {
if ("/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i") {
print "$2\n";
print "$4\n\n\n";
}
print "*";
}
close(FILE);
-------------------------------------
上のスクリプトで実行すると、出力結果が
「-
*
*」(改行つめました)が出力されます。
シェルから、「iostat -x」とたたくと、前述ようにきちんと出力します。
たぶん、if文の使い方が悪いと思うのですが、
どのようにやるのが正しいのでしょうか?多分、初歩的なことかも?
引き続き、宜しくお願いします。お手数お掛けします。
0515507
2008/02/22(金) 18:58:41でも、そこからどう解決できるのかが分かりません。う〜ん。
0516デフォルトの名無しさん
2008/02/22(金) 19:16:33if(〜)は何でdouble quoteしてるの?
0517507
2008/02/22(金) 19:21:21これは初めてつけていなかったのですが、試行錯誤していて試しにつけてみたら、
if文の中を実行ができるようになりました。(複数改行が出力されます)
本来はつけないのが正しい記法なのでしょうか?
そうだとしますと、ますます混乱してきました。
0518デフォルトの名無しさん
2008/02/22(金) 19:27:11"で括った文字列は空文字列でなければ必ず真と判断される。だから意図した条件を満たさない行も出力されてるでしょ
付けちゃだめだよ
今iostatが使えない環境なので>>507のデータをファイルに入れているんだが、これはきっと期待通りの動作だろう
#!/usr/bin/perl
open(FILE, "iostatdata.dat");
print"-\n";
while (<FILE>) {
chomp;
if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) {
print "\$2 = $2\n";
print "\$4 = $4\n";
}
print "*\n";
}
close(FILE);
0519507
2008/02/22(金) 19:44:14わざわざコードまで書いて下さって、本当に親切にどうもありがとうございました。
早速試してみたのですが、う〜ん...結果はうまくいきませんでした。
●iostatの実行結果
------------------------------------------------------------------------------
www# iostat -x
extended device statistics
device r/s w/s kr/s kw/s wait svc_t %b
twed0 5.1 37.6 78.3 598.9 0 10.5 7
------------------------------------------------------------------------------
0520507
2008/02/22(金) 19:44:38----------------------------------------------------------------------------
#!/usr/bin/perl
open(FILE, "iostat -x |");
print"-";
while (<FILE>) {
# if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) {
# print $1 . "\n";
# print $4 . "\n\n\n";
# }
chomp;
if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) {
print "\$2 = $2\n";
print "\$4 = $4\n";
print "*";
}
print "*\n";
}
close(FILE);
------------------------------------------------------------------------------
# /home/test/test.pl
-*
*
*
------------------------------------------------------------------------------
0521507
2008/02/22(金) 19:45:41●【参考】phpの参考結果
----------------------------------------------------------------------------
$word = "twed0 5.1 37.6 78.3 598.9 0 10.5 7";
$word = preg_replace("/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/", "$2--$4", $word);
echo "->". $word . "<-";
----------------------------------------------------------------------------
->37.6--598.9<-
0522デフォルトの名無しさん
2008/02/22(金) 20:29:58各社の携帯電話が使うIPアドレスの範囲は公式ページに載っているので、それで制限することはできる。
特定の携帯電話をはじくのは無理かな。同じ機種使ってれば、区別のしようがないし。端末IDを送信してれば区別できるけど。
0523デフォルトの名無しさん
2008/02/22(金) 20:35:23●>>521 のphpをそのままperlの文法に書き換えただけでの結果
------------------------------------------
$word = "twed0 5.1 37.6 78.3 598.9 0 10.5 7";
$word =~ s/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/$2--$4/;
print "->". $word . "<-";
------------------------------------------
->37.6--598.9<-
ほらちゃんと>>521と同じ結果が出たぞ。
何が違うのか、よ〜く見てみろ。
「問題の切り分け」 って習わなかったのか?
phpだろうがperlだろうがjavaだろうが、
どんな言語でもデバッグの手法は同じだよ。
もういちど基本に帰れ。
0525デフォルトの名無しさん
2008/02/22(金) 22:58:53やっぱ端末情報を拾うのが一番じゃないか?
0526デフォルトの名無しさん
2008/02/23(土) 03:38:59x フラグつけてくれ。読みにくくてかなわんw
0527デフォルトの名無しさん
2008/02/23(土) 11:25:03#!/usr/bin/perl -w
use strict;
# open IOSTAT, 'iostat -x |' or die $!;
*IOSTAT = *DATA;
scalar <IOSTAT>; # extended device statistics
my @col = split /\s+/, <IOSTAT>;
my %v;
$v{'device'} eq 'twed0'
and print "$v{'kr/s'}\n$v{'kw/s'}\n\n\n"
while @v{@col} = split /\s+/, <IOSTAT>;
close IOSTAT or die $!;
__DATA__
extended device statistics
device r/s w/s kr/s kw/s wait svc_t %b
twed0 6.3 35.9 81.1 565.8 0 9.8 7
twed1 5.1 37.6 78.3 598.9 0 10.5 7
0528デフォルトの名無しさん
2008/02/23(土) 15:19:230529デフォルトの名無しさん
2008/02/23(土) 21:35:32function GetNextData(){
if( $line = fgets($this->m_file_hd, 1024) ){
$line2 = split($this->m_pause_chr, $line);
$ans = new Line();
$ans->SetData($line2[0], $line2[1]);
}else{
$ans = "";
}
return $ans;
}
変数名の最後に数字使うのは初心者だろ?
もしコード拡張で数値計算が入ったら紛らわしい
0530デフォルトの名無しさん
2008/02/23(土) 22:04:210531デフォルトの名無しさん
2008/02/24(日) 00:22:52考え込んでしまった
0532デフォルトの名無しさん
2008/02/24(日) 01:25:43evalのリターンはエラーがあった場合、undefであることが保証されますか?
definedな戻り値と$@が両立するケースはありますか?
0533デフォルトの名無しさん
2008/02/24(日) 10:18:31<q cite="http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_eval_BLOCK">
構文エラーや実行エラーが発生するか、die 文が実行されると、
eval の値として未定義値が返され、$@ にエラーメッセージが設定されます。
エラーがなければ、$@ は、空文字列であることが保証されます。
</q>
0535デフォルトの名無しさん
2008/02/24(日) 11:42:40どうもです!構文エラーと実行エラー以外に$@が設定されるエラーはないと
考えていいんですよね??素人丸出しな質問ですが。
0536デフォルトの名無しさん
2008/02/24(日) 13:15:54http://search.cpan.org/dist/perl-5.10.0/pod/perlvar.pod#EVAL_ERROR
<q cite="http://perldoc.jp/docs/perl/5.6.1/perlvar.pod">
最後の eval() 操作子による Perl の構文エラーメッセージです。
</q>
0537デフォルトの名無しさん
2008/02/24(日) 20:02:29いやまあ、あなたのことじゃないんで気にしないで
0538デフォルトの名無しさん
2008/02/26(火) 02:30:35サブルーチンの名前には大文字を使わないと聞いたことがあるのですが本当でしょうか?
また実際に区別できないことがあるのは、どういった使い方をした場合でしょうか?
0539デフォルトの名無しさん
2008/02/26(火) 11:05:25コンパイラが大文字小文字でパッケージ名と関数名の
区別を付ける事はないので嘘。
http://perldoc.jp/docs/perl/5.8.0/perlstyle.pod
> 実際に区別できないことがある
人間が区別を付けにくいという意味では
func_or_method FuncOrClassOrFh @arg;
0540デフォルトの名無しさん
2008/02/26(火) 15:03:130541デフォルトの名無しさん
2008/02/26(火) 16:07:27回答ありがとうございます。
一般的にパッケージ名に大文字を使うため、サブルーチンの名前にも大文字を使うと、
パッケージ名とサブルーチン名が重複する可能性があり、
重複するとコンパイラが区別ができないことがあるのかと、
疑問に思ってるのですが、これについてはどうでしょうか?
0542デフォルトの名無しさん
2008/02/26(火) 16:50:130543デフォルトの名無しさん
2008/02/26(火) 17:11:440544デフォルトの名無しさん
2008/02/26(火) 18:01:02#!/usr/bin/perl -w
use strict;
package Foo; sub Foo { join '', @_ }
package Bar; sub Bar { print 'Bar!' }
package main;
# これはOK
# print Foo Foo Foo => "\n", Foo->Foo("Foo!\n"); # FooFoo\nFooFoo!\n
# Bar Bar; __END__ Bar!
# パッケージ名と同名のファイルハンドル
# open Foo, '>./Foo.txt' or die $!;
# Foo->Foo('Foo!'); # ここで混乱して実行時エラー
# close Foo; __END__
# goto EXPR を goto LABEL で解釈してコンパイルエラー
# for (1..5) { $_ > 2 ? goto Foo Foo 'Foo' : print "$_, " }
# FooFoo: print 'foo!'; __END__
# 優先順位の明確化で解決
# for (1..5) { $_ > 3 ? goto(Foo Foo 'Foo') : print "$_, " }
# FooFoo: print 'foo!'; __END__ 1, 2, 3, foo!
0545デフォルトの名無しさん
2008/02/26(火) 18:45:04非常に分かりやすく解説してくださってありがとうございます。
http://perl.g.hatena.ne.jp/bosh/20060409
こちらで書いてあるのは間違いということで、理解しました。
0546デフォルトの名無しさん
2008/02/26(火) 21:59:270547デフォルトの名無しさん
2008/02/26(火) 23:18:460548デフォルトの名無しさん
2008/02/27(水) 10:27:010549デフォルトの名無しさん
2008/02/27(水) 10:28:240550デフォルトの名無しさん
2008/02/27(水) 11:18:380551デフォルトの名無しさん
2008/02/27(水) 16:12:38馬鹿だなーって思われるだけだけど。
0552デフォルトの名無しさん
2008/02/27(水) 16:23:090553デフォルトの名無しさん
2008/02/27(水) 16:42:13まぁ鵜呑みにするな、っていうのは真理だな
0554デフォルトの名無しさん
2008/02/27(水) 22:22:22何もわかりません。動きません。
絶対プログラムは正しいので、Perlのバグだと思うのです。
・・・・。
0555デフォルトの名無しさん
2008/02/27(水) 22:32:580556デフォルトの名無しさん
2008/02/28(木) 09:41:09func_hoge() というサブルーチンがあります。
このサブルーチンは、内部でエラーが起こった場合のみ、エラー番号やエラーメッセージを返してきます。
何も問題なければ 0 やら空文字列が返ってくるとします。
func_hoge()を呼び出すときは、
my $err = func_hoge();
if ($err) { die "Error func_hoge [$err]"; }
というように返り値を保持しておき、
エラーがあれば、その時のエラー番号(可能であればサブルーチン名などの目印も)を表示したい。
これはこれで全く問題ないのですが、func_hoge()の呼び出し箇所が増えると
エラー格納用の一時的な変数が増えてしまいますし、何より面倒です。
何か楽できる方法ありませんか?
0557デフォルトの名無しさん
2008/02/28(木) 11:00:530558デフォルトの名無しさん
2008/02/28(木) 11:13:37die させないときはeval{}で囲えばいいし。
0559デフォルトの名無しさん
2008/02/28(木) 11:46:45呼び出し側だけで何とか小手先の変更で出来ないかなとか考えてた。ありがとう。
0560デフォルトの名無しさん
2008/02/28(木) 12:41:38push @err, func_hoge();
みたいなもんでいいのかな。
0561デフォルトの名無しさん
2008/02/28(木) 12:53:340562デフォルトの名無しさん
2008/02/28(木) 14:44:000563デフォルトの名無しさん
2008/02/28(木) 22:13:15状況にもよるけど、サブルーチンを呼ぶたびにエラー判定しなきゃならないような類だと
結局手間は変わんないかも。
>561
最終的には多分そうなると思う。
>562
やっぱそれが一番スマートなのかなあ。
0564デフォルトの名無しさん
2008/02/29(金) 00:37:040565デフォルトの名無しさん
2008/02/29(金) 03:20:560566デフォルトの名無しさん
2008/02/29(金) 09:02:53目的は?
0567デフォルトの名無しさん
2008/02/29(金) 10:51:40分解してくれますね。これとは逆に、ローカル時刻の年月日を
エポックからの秒数に変換するにはどうしたらよろしいでしょうか?
0568デフォルトの名無しさん
2008/02/29(金) 11:05:270569デフォルトの名無しさん
2008/02/29(金) 13:23:58出来上がったらそれ以降は>>568を使っておけばいいな。
0570デフォルトの名無しさん
2008/02/29(金) 14:22:22受け取ることはできますか?
$ar = split(/,/, $str);
$ar_ref = \@ar;
じゃなくて
$ar_ref = split(/,/, $str);
のようにしたい。
↓こんなのじゃうまくいかなかった。
$ar_ref = \split(/,/, $str);
0571デフォルトの名無しさん
2008/02/29(金) 14:38:520572デフォルトの名無しさん
2008/02/29(金) 14:43:44つまり、こういうことですか?
$ar_ref = [ split(/,/, $str) ];
でも、これだと、配列の要素をコピーすることになりそうで (なりますよね?)
無駄ではありませんか?
0573デフォルトの名無しさん
2008/02/29(金) 14:45:55実際の動作がどうなるのかはソースを読む。
読みたくないなら、明らかにコピーしそうなperlコードとBenchmarkで比較。
0574デフォルトの名無しさん
2008/02/29(金) 15:05:51最適化されるよ。
0575デフォルトの名無しさん
2008/02/29(金) 16:29:22証拠はある?
0576デフォルトの名無しさん
2008/02/29(金) 16:39:170577デフォルトの名無しさん
2008/02/29(金) 16:47:30パフォーマンスが気になるなら、ちょっと確かめてみればいい。
こんなコード断片が書けないのなら、パフォーマンスなど気にするだけ無駄。
use Benchmark qw(timethese);
my $source = join(',', ('abcdefg')x80000);
my $result_ref;
timethese(100, {
temp => sub { my @temp_array = split(/,/, $source); $result_ref = \@temp_array; },
bracket => sub { $result_ref = [ split(/,/, $source) ]; },
none => sub { split(/,/, $source); },
});
Benchmark: timing 100 iterations of bracket, copy, none, temp...
bracket: 9 wallclock secs ( 8.94 usr + 0.00 sys = 8.94 CPU) @ 11.19/s (n=100)
none: 6 wallclock secs ( 6.76 usr + 0.00 sys = 6.76 CPU) @ 14.80/s (n=100)
temp: 15 wallclock secs (14.27 usr + 0.00 sys = 14.27 CPU) @ 7.01/s (n=100)
0578デフォルトの名無しさん
2008/02/29(金) 17:00:25証拠は俺の脳内。
信じられないなら自分でソース読もう。
0579デフォルトの名無しさん
2008/02/29(金) 17:54:31void コンテキストで split 使うと @_ に入るので注意な。
0580デフォルトの名無しさん
2008/02/29(金) 19:05:260581ジミー
2008/02/29(金) 21:41:12@ar = split(/,\n/, $str);
print join(',', @ar);
これを実行すると a,b と表示されます。
つまり、split は末尾の空文字列を取り出してくれないようです。
末尾の空文字列を取り出して、このコードが a,b, と表示させるように
するための簡単な方法ってありませんかね。
(もちろん愚直に工夫すれば何とでもなるが、スマートな解がほしい)
0582ジミー
2008/02/29(金) 21:41:59コード間違えた。(実験してたコードにしてもた。)
× @ar = split(/,\n/, $str);
○ @ar = split(/,/, $str);
0583ジミー
2008/02/29(金) 21:46:48@ar = split(/,/, $str, -1);
ですね。
0584デフォルトの名無しさん
2008/02/29(金) 21:48:120585デフォルトの名無しさん
2008/03/01(土) 00:44:11特にないけど、Perlならそういう面白いインターフェイスが用意されてそうだなと思ったまでで
0586デフォルトの名無しさん
2008/03/01(土) 01:06:48乞食は想像を絶するなw
0587デフォルトの名無しさん
2008/03/01(土) 01:07:140588デフォルトの名無しさん
2008/03/01(土) 09:16:39世の中には「義妹が最強だろ」という誤爆レスが元になって作られたゲームとかあるからな。
人間の妄想力ってのは凄いもんだぜ。
0589デフォルトの名無しさん
2008/03/02(日) 10:27:480590デフォルトの名無しさん
2008/03/02(日) 10:48:550591デフォルトの名無しさん
2008/03/02(日) 11:09:570592デフォルトの名無しさん
2008/03/02(日) 11:48:26エロゲじゃねーよw
0593デフォルトの名無しさん
2008/03/02(日) 14:23:27http://cpan.uwinnipeg.ca/PPMPackages/10xx/
0594591
2008/03/02(日) 21:46:50ありがとう。無事インストできたよん。
0595デフォルトの名無しさん
2008/03/03(月) 09:11:400596デフォルトの名無しさん
2008/03/03(月) 09:43:340597デフォルトの名無しさん
2008/03/03(月) 16:28:09改行含めた長い文章が $i に入ってます。
文章中のリンクアンカーに相当する部分はWikipediaなどでお馴染みの
[[テキスト]]
という感じで書かれています。
これを
$i =~ s/\[\[(.+?)\]\]/<a href="$1">$1<\/a>/g;
で変換しているのですが、できれば <a href="$1"> の中のほうの$1をURLエンコードして収めたいのです。
URLエンコードのサブスクリプトはこんな感じです。
sub url_enc {
local($_) = @_;
s/(\W)/'%' . unpack('H2', $1)/eg;
s/\s/+/g;
$_;
}
よろしくお願いします。
0598デフォルトの名無しさん
2008/03/03(月) 16:49:12CGIにはインフォパスか引数で渡します。
<a href="hoge.cgi?$1">
こんな感じで。
0599デフォルトの名無しさん
2008/03/03(月) 17:31:00$i =~ s/\[\[(.+?)\]\]/&url_enc($1)/eg;
0600デフォルトの名無しさん
2008/03/03(月) 17:58:47$i =~ s/\[\[(.+?)\]\]/<a href="&url_enc($1)">$1<\/a>/eg;
だとエラーが出るんで何でだろうとずっと思ってたんです。
ありがとうございます。勉強になりました。
0601デフォルトの名無しさん
2008/03/03(月) 18:25:15自分で '%' . unpack('H2', $1) なんてのを入れてるじゃん。
sub html_escape {
my $str = $_[0];
$str =~ s/&(?!(?:\w+|#(?:[Xx][0-9A-Fa-f]+|[0-9]+));)/&/g;
$str =~ s/([\x00-\x09\x0B\x0C\x0E-\x1F"'<>\x7F])/${ \ ord $1 };/g;
$str;
}
sub uri_escape {
my $str = $_[0];
$str =~ s/%(?![0-9A-Fa-f][0-9A-Fa-f])/%25/g;
$str =~ s/([\x00-\x20"'<>\\^`{|}\x7F-\xFF])/ sprintf '%%%02X', ord $1 /eg;
$str;
}
$i =~ s{ \[\[ (.+?) \]\] } {
my($url, $face) = ($1, $1);
$url = uri_escape($url);
$face = html_escape($face);
qq|<a href="$url">$face</a>|;
}egx;
0602デフォルトの名無しさん
2008/03/03(月) 18:40:50すみません、
実はurl_encは誰かから教えてもらったもので丸写しなんです ^_^
でも今回のことでやっともろもろ判りました。
コード、参考になります(というかありがたくいただきます)。
ありがとうございます。
0603デフォルトの名無しさん
2008/03/05(水) 05:49:41何故なんでしょうか?
0604デフォルトの名無しさん
2008/03/05(水) 10:21:39302 はエラーじゃないし Perl の話でもない。
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec10.3
CGI: Common Gateway Interface part 13
http://pc11.2ch.net/test/read.cgi/php/1126436361/
0605デフォルトの名無しさん
2008/03/05(水) 10:22:390606デフォルトの名無しさん
2008/03/05(水) 13:38:15パーミッションの設定をしたら動きました;;
お騒がせしました
0607デフォルトの名無しさん
2008/03/05(水) 15:23:380608デフォルトの名無しさん
2008/03/05(水) 16:30:420609デフォルトの名無しさん
2008/03/05(水) 17:00:16とくに後置したときに英文っぽくておさまりがいいような
0610デフォルトの名無しさん
2008/03/05(水) 17:23:51とかになったらさすがに使うw
0611デフォルトの名無しさん
2008/03/05(水) 17:26:43成功したらとにかく実行って時とかに == 0 とかやらなくて済むとか。
0612デフォルトの名無しさん
2008/03/05(水) 18:07:48なるほど。参考になりました。
untilも使い道はいろいろあるんですね。
0613デフォルトの名無しさん
2008/03/05(水) 18:32:270614デフォルトの名無しさん
2008/03/05(水) 18:37:39確かに。これは考えたことなかったな。
0615デフォルトの名無しさん
2008/03/06(木) 02:27:57それが$HOME/local/libのライブラリを使っていて
CGIにLD_LIBRARY_PATHが設定できないのでモジュールで使っている.soが読めない。
$ENVとuse Envでやったが、無視されるみたいだし
共有サーバでhttpdがsuExecで動いているので.htaccessでSetEnvすることもできない。
DynaLoaderがロードする.soがリンクしているsoのパスを指定できる方法ある?
0616デフォルトの名無しさん
2008/03/06(木) 12:16:11ldの-Rオプションでバイナリに埋め込むのはどう?
0617デフォルトの名無しさん
2008/03/06(木) 19:32:32前スレの570〜580あたりで書き込みした者ですが、
DynaLoader.pmがLoadするだけならば、
use DynaLoader;
@DynaLoader::dl_library_path に、対象のPATHを放り込んでやればLoad出来ます。
その{perl_module}.soがよその(/use/lib,/lib以外の)ライブラリをロードするようにコンパイルされていたら、
多分 use した時点でエラーになります。
0618デフォルトの名無しさん
2008/03/07(金) 00:29:37>>615だけど、
Makefile.PLのLDDLFLAGSに-rpath ${HOME}/local/libを追加してコンパイルしたらできた
0619デフォルトの名無しさん
2008/03/07(金) 23:14:49CPANにあるSVGモジュールってSVGを書き出すことはできるのですが、
読み込んで解析するにはイマイチなようです。
SVGファイルを解析するには、どのモジュールを使えば良いでしょうか?
XML関係は充実しているようですが、数が多くてよくわかりません。
0620デフォルトの名無しさん
2008/03/07(金) 23:47:51%pp -V
で
Perl Packager, version 0.12 (PAR version 0.90)
と出るので、PARのインストールはできていると思うのですが、
%pp test.pl
などとしても、
数秒固まった後、「parl.exe」が
問題が発生したため終了しました、というXPのよくあるエラーが出て、
Can't spawn "C:\Perl\PAR\script\parl.exe": Bad file descriptor at C:\Perl\PAR\li
b/PAR/Packer.pm line 1234.
となってうまくいきません
parl.exeが落ちる原因について調べても情報を見つけることができなかったので、
どなたか助けていただけませんでしょうか・・・
0621デフォルトの名無しさん
2008/03/08(土) 01:12:00PAR-Packerを入れてませんでした
0622デフォルトの名無しさん
2008/03/09(日) 19:55:44宣言とか必要ないですか?
ぐぐってもsprintfに関する項目しか出てこないので
0623デフォルトの名無しさん
2008/03/09(日) 20:55:28Perl でバイナリファイルについて 1byte ずつファイルから読み込んだり書き込んだりするにはどうすれば良いのでしょうか?
getc で一文字読み込むのはわかります。
一文字分のデータを記録した変数を print すれば良いのだろうとも思います。
しかし確実にバイト単位の入出力であることを明示する方法などないものかと疑問に思っています。
よろしくお願いします。
0624デフォルトの名無しさん
2008/03/09(日) 21:41:02この箇所は、つまりどういう行為を指しているんだろう。
0625デフォルトの名無しさん
2008/03/09(日) 21:58:09志村ー、逆!逆!
0626623
2008/03/09(日) 22:54:21> どういう行為を
C 言語の fputc() は int 型のデータを与えても unsigned char として書き込んでくれます。
$c = getc FH; で最初は 1byte だった $c がいつの間にか int や long の大きさになっても char として書き込むことを保障してほしいのです。
「いつの間にか」とは << や * や + などで 256 以上の値になることを想定しています。
Perl の print は何バイトでもまとめて書き込んでくれるので心配なのです。
>>625
すみません、何が逆なのかわかりませんので、お教えください。
0627デフォルトの名無しさん
2008/03/09(日) 23:12:29Perl には符号無しは特にないはず。
0628623
2008/03/09(日) 23:39:28$c = 255;
$c <<= 1;
open OUT, ">./test.txt";
print OUT pack("C", $c);
close OUT;
__END__
>>622
pack 関数で unsigned char も指定できるようです。
たったいま知ったのですが。
お騒がせしました。レスくださった方々どうもありがとうございました。
0629デフォルトの名無しさん
2008/03/10(月) 13:08:00配列の要素のリファレンスを使って別の要素にアクセスしたいのですが。
0630デフォルトの名無しさん
2008/03/10(月) 13:17:27演算子オーバーロードしたラッパを提供するライブラリがあった気がするけど忘れた
0631デフォルトの名無しさん
2008/03/10(月) 13:25:590632マイク ◆yrBrqfF1Ew
2008/03/10(月) 16:01:39ありゃ勝てない
ある意味超絶ハッカー
0633デフォルトの名無しさん
2008/03/10(月) 20:16:37eval 'case $# in 0) exec /usr/bin/perl -S "$0";; *) exec /usr/bin/perl -S "$0" "$@";; esac'
if 0;
autoscanというのを読もうと思ったら、これがわかりません。evalは中の文字列を
shellとして実行して、その結果をperlとして実行する。でいいのでしょうか?
これは何がしたいのでしょうか?
それとif 0;というのはなんなんでしょうか?
おねがいします。
0634デフォルトの名無しさん
2008/03/10(月) 21:40:53とりあえず if 0; がついているので、その文は実行されない。
おそらくデバッグ中か何かでつけっぱなしになってる。
雰囲気からすると、その実行ファイルと同名のものを環境変数PATHから再検索して、
perl で実行しているようだが、実際に書いてあるコードが間違っているので、詳細は不明。
そもそも eval の引数にあたる文字列はおそらくshellスクリプトだが、それをperlでevalしても
文法エラーにしかならんわな。
0635デフォルトの名無しさん
2008/03/10(月) 22:29:40if 0;で実行されないんですね。とりあえずここはスルーしようと思います。
0636デフォルトの名無しさん
2008/03/11(火) 00:19:35http://search.cpan.org/dist/perl-5.10.0/pod/perlrun.pod#-S_
0637デフォルトの名無しさん
2008/03/11(火) 03:37:45使おうとすると
Undefined subroutine &main:piyo called at ./unko.pl line 37
といって怒られる。Hoge::piyoとすれば動くので支障はないけど
Hoge内のほかの関数fuga,funiはfuga() funi()で動くのに
なぜなんだ〜。というわけでエロイ人教えて!
0638デフォルトの名無しさん
2008/03/11(火) 06:38:240639デフォルトの名無しさん
2008/03/11(火) 07:21:23なるほど。shellスクリプトとして実行されたとき、perlで実行しなおしてるんですえん。
0640デフォルトの名無しさん
2008/03/12(水) 00:06:09これはどういう意味でしょうか?つかググれないよ
0641デフォルトの名無しさん
2008/03/12(水) 00:49:19print ${$_};
0642デフォルトの名無しさん
2008/03/12(水) 02:35:18シンボルテーブル上で$_をmy $aのエイリアスにしている。
型グロブでぐぐれ
0643デフォルトの名無しさん
2008/03/12(水) 11:17:370644デフォルトの名無しさん
2008/03/12(水) 12:09:00トン。いまから具ぐるよ
0645デフォルトの名無しさん
2008/03/13(木) 21:34:03組み込み関数のソースコードをどうしたら見られますか?
0646デフォルトの名無しさん
2008/03/14(金) 03:17:49このへんからソース落として嫁
http://aspn.activestate.com/ASPN/Downloads/ActivePerl/Source
0647デフォルトの名無しさん
2008/03/14(金) 13:22:28ありがとうございます!
0648デフォルトの名無しさん
2008/03/14(金) 22:49:36use bigint;
my $n = 7581835939574005820377;
print rand $n;
とかやっても浮動小数点数になるし。
0649デフォルトの名無しさん
2008/03/14(金) 23:07:13http://search.cpan.org/search?q=Math+random&n=100
my $rand = '';
$rand .= (0..9)[rand 10] for 1..32;
print $rand, "\n";
($rand = rand(1) . rand(1)) =~ tr/.//d;
print $rand, "\n";
0650デフォルトの名無しさん
2008/03/15(土) 22:11:55せっかく複数つなげるのなら、それぞれの先頭と末尾を数桁
切り落とすと凄く乱れちゃうわ
0651デフォルトの名無しさん
2008/03/18(火) 01:50:43入れればいいでしょうか。
0652デフォルトの名無しさん
2008/03/18(火) 12:00:550653デフォルトの名無しさん
2008/03/18(火) 15:07:28Perlで日本語を扱う際の注意点や対策方法は理解し、特にトラブルなく作成、動作させることはできました。が、突っ込んだ説明を求められ、確信できないところだらけで困ってしまいました。どうか助けてください。
※input.datには、Shift-JISで ソ 1文字だけ入っています。
---------------
$literal = 'ソ\';
open(FILE, "< input");
$from_file = <FILE>;
close(FILE);
print "ファイル:$from_fileンナ〜\n";
print "リテラル:$literalンナ〜\n";
if($literal eq $from_file)
{
print "match\n";
}
--------------
上記ソースで、下記の3行が正しく表示されます。シフトJISでの文字コードに0x5Cが含まれる場合、¥を後ろに付加してエスケープ対策をすればよい、ということは理解できました。が、ファイルから読み込んだ場合は、なぜそのままでよいのでしょうか?
自分なりに考えたのは、Perlの構文解析かなにかがエスケープと間違えて、実行以前にソースが正しく読まれていないのでは?と考えたのですが、出力する際の”$from_fileンナ〜”では、なぜ文字化けしないのか、等が説明できません。
リテラルでは書かない、日本語を正規表現で切り抜かない、この2点さえ守っていれば、カタカナ同士の比較は大丈夫!と言えれば、なんとか納得してもらえそうなのですが・・・。
それから、シフトJISの文字列を「,」でsplitするのは危険でしょうか?
どなたかご教授していただければ幸いです。
何卒よろしくお願いいたします。
0654デフォルトの名無しさん
2008/03/18(火) 15:12:010655デフォルトの名無しさん
2008/03/18(火) 15:20:500656デフォルトの名無しさん
2008/03/18(火) 15:28:58おまえは一体いつの時代のperlを使ってるんだ。
encodingプラグマつかえよ。
0657デフォルトの名無しさん
2008/03/18(火) 23:13:29しかし、少なくともeucで書こうぜ
0658デフォルトの名無しさん
2008/03/19(水) 00:21:220659デフォルトの名無しさん
2008/03/19(水) 00:32:01何年も前から運用されているシステムで、変えたくても変えれないという気が。
商売する気ないのかもしれんけど。
0660デフォルトの名無しさん
2008/03/19(水) 00:46:235.00なんぼとか言ってたのはWindows3.1とかの時代じゃなかったか。
0661デフォルトの名無しさん
2008/03/19(水) 02:42:56encoding プラグマは別の問題があるだろ。
0662デフォルトの名無しさん
2008/03/19(水) 06:01:310663デフォルトの名無しさん
2008/03/19(水) 08:03:21フォルダの扱いが変なのは治ってないの?
0664デフォルトの名無しさん
2008/03/19(水) 13:14:05「シフトJISでの文字コードに0x5Cが含まれる場合、¥を後ろに付加してエスケープ対策をすればよい」
というのは正確ではありません。中身を展開するクォート(""など)の中にある場合に限ります。シングルクォート
など展開しない場合は、\x5cが含まれていても評価されません。ただし、その文字が末尾に来ていると、
閉じる方のクォートがエスケープされてしまうので、\を足す必要があります。
なお、
chomp($literal = <<'STR');
ソ
STR
とかすれば、\を付ける必要ありません。
ファイルハンドルから取り出したデータは、評価されずにそのまま変数に代入されます。
"リテラル:$literalンナ〜\n"; でなぜ文字化けしないかについてですが、
my $var3 = "おわり";
my $var2 = "$var3";
my $var1 = '$var2';
としたとき、
print "$var1$var2$var3";
はどう出力されるかを考えればわかります。
0665デフォルトの名無しさん
2008/03/20(木) 21:03:59print文で画面に表示などは出来ましたが
ファイルの操作が全くうまくいきません。。
下記でtest.logの中身を"test"に書き換えたいのですが、うまくいかず
どこが悪いのかわかりません。
お助け願えないでしょうか?
(くだ質がないのでコチラに書き込んでいます)
$datam = "/log/test.log";
open (TE,">$datam");
print TE "test";
close TE;
0666デフォルトの名無しさん
2008/03/20(木) 21:06:19/log に書き込み権限はあるのかい?
0667デフォルトの名無しさん
2008/03/20(木) 21:12:35> どこが悪いのかわかりません。
どう「うまくいかず」なのかとか、エラーメッセージとかを書かないところ。
あと、open() の後ろに or die $! と書いてしまう癖をつけてもいいかも。
0668665
2008/03/20(木) 21:44:28まだこんなレベルなので、winにANHTTPdいれてやってます。
ので、書き込み権限は関係ないかと思っています。。
>667
ファイルが書き変わらないのです。
あと、この4行をコメントアウトすると、他のprint文の出力結果が返ってくるのですが、
コメントアウトしないとhttp 500が返ってきます。。
0669デフォルトの名無しさん
2008/03/20(木) 21:59:22ファイルが書き換わらんですか。つーか、そこでエラー吐いて死んでそうですね。
ファイルの2〜3行め辺りに
use CGI::Carp qw(fatalsToBrowser);
と書いてみると「500 Internal Server Error」よりまともなエラーメッセージが返って来るよ。
板違いなこともわかったことだし続きはあちらでどうぞ。
くだすれPerl(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1204488452/
0670665
2008/03/21(金) 00:08:14あぁ。。初心スレあったんですね。
誘導ありがとうございます。
ご迷惑おかけしました。
0671デフォルトの名無しさん
2008/03/21(金) 11:50:09直ってないはず。dankogaiにでも聞いてみれば?
0672デフォルトの名無しさん
2008/03/21(金) 18:18:55それはともかく初心者なら、自分のディレクトリで読み書き実験
して成功してからパスを目的の場所に変更して完成させる手順を
オススメするぞ
0673デフォルトの名無しさん
2008/03/22(土) 04:07:27・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる
糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。
・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
バグレポートなどしてはいけません。改善要求などもってのほかです。
あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
なんて話が出たら力強く机を叩き、会議室を出ましょう。
あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。
糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
0674デフォルトの名無しさん
2008/03/22(土) 06:28:26どこのコピペか知らんが、これ会社で浮いてる奴だろ。
ツールなんて所詮道具。どうでもええわ。
0675デフォルトの名無しさん
2008/03/22(土) 10:01:14「あいつは浮いてる奴だから」
と言われる
チベット人が中国を批判した時ににてるな
0676デフォルトの名無しさん
2008/03/22(土) 10:47:10> ツールなんて所詮道具。どうでもええわ。
こういうことを言う奴は、本当のクソツールを見たことがないやつ。
0677デフォルトの名無しさん
2008/03/22(土) 11:10:59糞開発ツールの批判っていうより、
こんなにまで必至に批判してることにだよ。
これ該当ツールの枠越えて、会社や人の批判に走ってんじゃん。
0678デフォルトの名無しさん
2008/03/22(土) 11:13:090679デフォルトの名無しさん
2008/03/22(土) 11:18:110680デフォルトの名無しさん
2008/03/22(土) 12:35:43>これ該当ツールの枠越えて、会社や人の批判に走ってんじゃん。
それが正しいと思うぞ
糞開発ツールも問題だが、それを無理矢理マンセーする会社や人は
厳しく批判されるべきだろ
0681デフォルトの名無しさん
2008/03/22(土) 13:41:30「ボクは空気読める子なので、胸の内にためこんで良い子ちゃんでいまーす」
ってなもんだろ?
0682デフォルトの名無しさん
2008/03/22(土) 13:47:53>>675流に言えばそういう組織はチベッド弾圧も批判できないんだろうね
0683デフォルトの名無しさん
2008/03/22(土) 15:50:28何故そうなってるかも知らずに、1つのツールだけ見て
批判ばかりしてるってのも現場特有の無知さだねー。
ドラマごっこはいいが、あんなの格好だけで嘘ばっかりだよ。
0684デフォルトの名無しさん
2008/03/22(土) 16:33:11そんなもんを無理矢理使い続ける人間だろ
0685デフォルトの名無しさん
2008/03/22(土) 16:53:31君は鉛筆消しゴム始め、全てベストツールで身をかためてるのか?w
0686デフォルトの名無しさん
2008/03/22(土) 17:28:260687デフォルトの名無しさん
2008/03/22(土) 18:37:14おまえん家の近所のシューズマニアの良夫くんが、
おまえの履いてるシューズは衝撃吸収も中途半端だし
運動効率も悪いから履き替えた方がいいって言ってたぞ。
0688デフォルトの名無しさん
2008/03/22(土) 19:36:470689デフォルトの名無しさん
2008/03/22(土) 19:54:37ここは質問スレだ。
0690デフォルトの名無しさん
2008/03/22(土) 19:59:460691デフォルトの名無しさん
2008/03/22(土) 20:29:13それは今さら聞くまでもない。糞です。
0692デフォルトの名無しさん
2008/03/23(日) 11:16:37おまえ尻からなんか出てるぞ
0693デフォルトの名無しさん
2008/03/23(日) 11:31:36結果を吐き出す糞開発ツールはいっぱいあるよねw
Perlは「尻拭きツール」だからねw
0694デフォルトの名無しさん
2008/03/23(日) 11:38:49それがなけなしの存在価値だった。今はそれらも追いつかれて、本当の糞になったけどね。
0695デフォルトの名無しさん
2008/03/23(日) 11:51:50尻拭きツール
ワラタ
0696デフォルトの名無しさん
2008/03/23(日) 15:32:45のがしんどいコードを書くことも良くある。
触れ込みどおりかと。
尻拭きwwwww
0697デフォルトの名無しさん
2008/03/23(日) 19:51:26クソだと思うならこのスレ来ない方がいいお(;^ω^)
0698デフォルトの名無しさん
2008/03/24(月) 00:43:01引数でオブジェクトを渡す方法がわかりません。。どなたかよろしくお願いします。
my $unko = new Unko();
$unko->set(1,20080331,"黄色","悪臭","ゆるゆる");
print "排泄日:" . $unko->{dropDate};
# データベースへの登録
my $db = new Dao();
$db->insertUnkoTable($unko);
(以下省略)
{
package Dao;
sub insertUnkoTable {
# データ挿入用のSQL文
my $sql = "INSERT INTO unko VALUES(?,?,?,?,?)";
# 以下でオブジェクト参照を受け取りたいがNULLになっている模様。
my $info = $_;
my $hst = $hDB->prepare($sql);
if ($hst) {
my $ret = $hst->execute(
$info->{dropDate},
$info->{color},
(以下省略)
}
0699デフォルトの名無しさん
2008/03/24(月) 00:44:580700デフォルトの名無しさん
2008/03/24(月) 00:51:00>my $info = $_;
これが変
0701698
2008/03/24(月) 00:54:28レスありがとうございますだ。
my $info = $_[0];
にしてもダメでした。。
リファレンスを渡す必要があるのか?とおもい、
$db->insertUnkoTable(\$unko);
$$info->{dropDate},
とかやってみたけどダメでした。
間違っているのはここではないですか?
0702デフォルトの名無しさん
2008/03/24(月) 01:01:56少なくともPerlにNULLはないが。
0703デフォルトの名無しさん
2008/03/24(月) 01:08:19それでよくね?
何か基本が全然分かってないみたいだけど…
0704デフォルトの名無しさん
2008/03/24(月) 01:08:37my $info = $_[0];
print "確認用:" . $info->{dropDate};
上記のようにして、Sub側で値を表示させてみたのですが、
Use of uninitialized value in concatenation (.) or string at C:/Projects/eclipse/unko/unko.pl line 69.
というエラーが出て、コンソールには「確認用:」しか表示されません。。。
これをもって、$infoがNULLであると判断してしまいました。
コンソールの出力↓
確認用:
0705デフォルトの名無しさん
2008/03/24(月) 01:10:450706デフォルトの名無しさん
2008/03/24(月) 01:19:56あれですね、この場合も最初に自己リファが渡されるのですね。わかりづら。
my $info = $_[1];
print "確認用:" . $info->{dropDate};
ご迷惑をおかけしますた。
0707デフォルトの名無しさん
2008/03/24(月) 10:50:190708デフォルトの名無しさん
2008/03/24(月) 11:16:03CPAN で directory とか IO とかサーチしても、見当たらないんですが。
0709デフォルトの名無しさん
2008/03/24(月) 11:46:24File::Path
0710708
2008/03/24(月) 11:53:120711デフォルトの名無しさん
2008/03/24(月) 22:34:44なにかperlで簡潔にスクリプトを記述できないでしょうか?
コメントの始まり
$start = "<!--"
コメントの終わり
$end = "-->"
として
next ifとかで
start - end間をスキップ
という流れを考えています。
他に何か違うアプローチの仕方ってないでしょうか?
0712デフォルトの名無しさん
2008/03/24(月) 22:38:320713デフォルトの名無しさん
2008/03/24(月) 22:47:36712の意見に一票。だが、
while(<>){
next if /<!-/ .. /->/ ;
print ;
}
十分に簡潔じゃね?
0714デフォルトの名無しさん
2008/03/24(月) 22:52:20迅速なレスthxです。
そうですね、パーサ使うのが一番手っとり早いですね。
ありがとうございました。
0715デフォルトの名無しさん
2008/03/24(月) 23:01:32追記です。
実際にやってみたところ、できました。
ホント簡潔ですね。
ありがとです。
0716デフォルトの名無しさん
2008/03/24(月) 23:15:000717デフォルトの名無しさん
2008/03/25(火) 21:13:41@files=<hoge[0-9]{2}>;とやっても駄目なのですが、どうしてですか?
m回繰り返しの{m}は<>内では使えないのですかl?
0718デフォルトの名無しさん
2008/03/25(火) 21:41:36<...>の中は正規表現じゃなくてワイルドカードだ。
詳細は perldoc File::Glob を見ろ。
・・・かしら?
0721デフォルトの名無しさん
2008/03/25(火) 22:36:01ワイルドカードと正規表現は別物
ワイルドカードでは{}は繰り返しではない
[0-9][0-9]にするかreaddirとかで読んで正規表現を使う
0723デフォルトの名無しさん
2008/03/26(水) 00:07:37だから File::Glob を見ろってば。
> META CHARACTERS
>
> \ Quote the next metacharacter
> [] Character class
> {} Multiple pattern
> * Match any string of characters
> ? Match any single character
> ~ User name home directory
0724デフォルトの名無しさん
2008/03/26(水) 00:33:46あんた、優しいな。
0725デフォルトの名無しさん
2008/03/26(水) 00:56:210726デフォルトの名無しさん
2008/03/26(水) 10:26:13POST送信する際にURLエスケープをしなければならない、と書いてあるんですがURLエスケープとは何なんですか?URLエンコードとは違うんですかね?
またクッキー情報をPOSTしなければいけないそうですがどのようにクッキー情報を取得するのでしょうか
おねがいします
0727デフォルトの名無しさん
2008/03/26(水) 13:24:51っ http://xn--lckja1b6r.jp/%55%52%4C%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97
0728デフォルトの名無しさん
2008/03/26(水) 13:52:070729デフォルトの名無しさん
2008/03/26(水) 14:04:260730デフォルトの名無しさん
2008/03/26(水) 14:06:300731デフォルトの名無しさん
2008/03/26(水) 14:16:020732デフォルトの名無しさん
2008/03/26(水) 14:19:38(1) URLエンコードと同じ
(2) http://www.studyinghttp.net/cookies.shtml
0733デフォルトの名無しさん
2008/03/26(水) 14:33:54あんた、優しいな。
0734デフォルトの名無しさん
2008/03/26(水) 14:36:49Perlの疑問はググる前に>>2-3
http://www.din.or.jp/~ohzaki/perl.htm#JP_Escape
monazilla Part 5
http://pc11.2ch.net/test/read.cgi/tech/1057329161/
0735デフォルトの名無しさん
2008/03/26(水) 14:46:21ツンデレキター
0736デフォルトの名無しさん
2008/03/26(水) 14:47:540737デフォルトの名無しさん
2008/03/26(水) 15:19:03my $ponn = "dhcp-1945.nava21.ne.jp";
my $honbun = "テスト";
$kakiko =~ s/(\W)/'%' . unpack('H2', $1)/eg;
$ponn =~ s/(\W)/'%' . unpack('H2', $1)/eg;
$honbun =~ s/(\W)/'%' . unpack('H2', $1)/eg;
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "POST /test/bbs.cgi HTTP/1.0\r\n";
print SOCKET "Referer: http://pc11.2ch.net/tech/\r\n";
print SOCKET "Cookie: NAME=; MAIL=; SPID(PON)=$ponn; expires=; path=/\r\n";
print SOCKET "Host: ${host}\r\n";
print SOCKET "Content-length: 101\r\n";
print SOCKET "\r\n";
print SOCKET "bbs=tech&key=1199977642&time=&submit=$kakiko&FROM=&mail=&MESSAGE=$honbun\r\n";
これでやったら書き込み確認になる(´・ω・`)
何がだめなんだろう
0738デフォルトの名無しさん
2008/03/26(水) 15:29:49ここかよ。
0739デフォルトの名無しさん
2008/03/26(水) 15:34:13うん
0740デフォルトの名無しさん
2008/03/26(水) 15:36:090741デフォルトの名無しさん
2008/03/26(水) 15:40:37SOCKETが良いって言われたんだ(´・ω・`)
0742デフォルトの名無しさん
2008/03/26(水) 16:03:45HAPは?
0743デフォルトの名無しさん
2008/03/26(水) 16:07:44関係ないけどジャンプのSKET DANCEは面白い
0744デフォルトの名無しさん
2008/03/26(水) 16:41:56基本はLWPと一緒だけど、form絡みがはるかに楽になる
0745デフォルトの名無しさん
2008/03/26(水) 19:23:58PON、HAP、hana=mogera 入れろ
0746デフォルトの名無しさん
2008/03/26(水) 19:25:560747デフォルトの名無しさん
2008/03/26(水) 19:51:530748デフォルトの名無しさん
2008/03/26(水) 22:19:43PONとHAPは当然あるものとして。
0749デフォルトの名無しさん
2008/03/27(木) 09:34:230750デフォルトの名無しさん
2008/03/27(木) 09:34:570751デフォルトの名無しさん
2008/03/27(木) 09:35:530752デフォルトの名無しさん
2008/03/27(木) 09:55:280753デフォルトの名無しさん
2008/03/27(木) 10:30:400754デフォルトの名無しさん
2008/03/27(木) 10:56:48use strict;
my $host="pc11.2ch.net";
my $pon='IPアドレス';
my $HAP='1978965';
my $addr = (gethostbyname($host))[4];
my $name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(stdout);
print S "POST /test/bbs.cgi HTTP/1.0\r\n";
print S "Referer: http://pc11.2ch.net\r\n";
print S "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) \r\n";
print S "Cookie: PON=$pon; HAP=$HAP; hana=mogera;\r\n";
print S "Content-length: 65\r\n";
print S "\r\n";
print S "bbs=tech&key=1199977642&time=1&mail=sage&MESSAGE=test&hana=mogera\r\n";
while (<S>) { print; } close(S);
これを実行すると、
HTTP/1.1 302 Found
Date: Thu, 27 Mar 2008 01:40:28 GMT
Server: Apache/2.0.59 (Unix) PHP/4.4.2 mod_ssl/2.0.59 OpenSSL/0.9.7e-p1
Location: http://server.maido3.com/
......
Locationで他逝けって言われるんだけど、この後どうすればいいの?
0755デフォルトの名無しさん
2008/03/27(木) 11:31:20○○しています..........
△△しています..........
□□しています....
ってな感じに、「...」でちょっとしたプログレスバー的なものを標準出力で表示したくて、
print "." でぽちぽち表示してってるんだけど、改行するまで画面に現れなくて困った。
とりあえずは、
1/10 done.
2/10 done.
って改行しながら表示してみたらちゃんと動いてるからロジックは大丈夫なんだけどなぁ。
ひょっとして改行入れるまで画面は更新されない?
もしくは、TeraTermで接続して動かしてるんだけど、TeraTerm側の仕様??
タスケテー
0756デフォルトの名無しさん
2008/03/27(木) 11:33:53$| = 1
とか?
0757デフォルトの名無しさん
2008/03/27(木) 13:30:51まさにそれだ!!ありがと〜(*´Д`)b
0758デフォルトの名無しさん
2008/03/27(木) 22:24:360759デフォルトの名無しさん
2008/03/27(木) 23:55:07送信するフォームを作成しているんだけど、クリック時に一度確認画面を
はさみたいのです。そこでinput type="text"の入力値から一度通常のHTML
テキストを生成し直して確認画面を生成したのですが、その画面から次にメール送信
するときそのテキストの値をCGIが読み取るにはどうしたらいいのでしょうか?
確認画面生成時のように<form method="POST">の中の<input name>の値を
引っ張ってこれたらいいのですが。。
0760デフォルトの名無しさん
2008/03/28(金) 00:16:320761デフォルトの名無しさん
2008/03/28(金) 00:19:580762デフォルトの名無しさん
2008/03/28(金) 00:23:28ありがとうございます!
で、変なデータを送られる可能性があるという事ですかね。
まぁがんばってみます、。
0763デフォルトの名無しさん
2008/03/28(金) 00:41:48確認画面を表示するときと同じバリデーションかければ無問題。
確認済みだからと思い込んでノーチェックで通すからセキュリティホールになる。
あと、ユーザが送ってくるデータ以外の情報をhiddenに格納するのも禁止。
0764デフォルトの名無しさん
2008/03/28(金) 01:18:04Loftを知ってる漢に「ぐぐれカス!」と言える快感かな
http://www.darserman.com/Perl/Loft/
0765デフォルトの名無しさん
2008/03/28(金) 21:41:17ファイル名でもintitleでもぐぐったのに
つうか一度そのサイト行ったのに繋がらなかった 今回は落とせたけど
超�d愛してる
0766デフォルトの名無しさん
2008/03/28(金) 22:44:45perlというかCGIなんですが教えてください。
下記ソースでtxtファイル(csvでちゃんと読み込めてるとする)を表示しようとしてます。
#!usr/bin/perl
my $no=$ENV{"QUERY_STRING"};
print "Content-Type: text/html¥n¥n";
print "<html>¥n<head>¥n</head>¥n<body>¥n";
open (NF,"Test.txt");
while(<NF>){
$data=$_;
chomp $data;
my ($datano) = split(/,/,$data);
$hantei = "NF" .$no;
if ( $no == $hantei){print "$no<br>";}else{print "error number<br>";}
print "</body>¥n</html>";
}
close(NF);
これで$no,$hanteiと関係なしに全部のデータを表示してしまいます。
原因がわからないです。
ご教授いただければ幸いです。
0768デフォルトの名無しさん
2008/03/28(金) 23:02:42条件式で、==は数値同士の判定ってのはしってるかい?
数字かどうか判断したいのなら、正規表現がいいんじゃない?
0769766
2008/03/28(金) 23:14:25ありがとうございます。eqで比較したら希望の$noがヒットしました。
が、ヒット以外、whileですべてのデータをelse表示します。
whileの条件がまずいのでしょうか?
あと今気づいたのですが
$hantei="NF".$no; ×
$hantei="no".$datano; ○
でした。
0770766
2008/03/28(金) 23:16:53else表示は当然ですね。もう一回見直します。
ありがとうございました。
いい勉強になりました。
0771デフォルトの名無しさん
2008/03/29(土) 01:48:05「whileの条件がまずいのでしょうか?」
と聞かれても・・・
while ・・・ 条件が真のあいだ繰り返す。これは分かってるよね?
<NF> ・・・ NF から1行読み込む。
じゃぁ、
while (<NF>) ・・・ NF から1行読み込んだ結果が真のあいだ繰り返す。
(つまり偽になったら終了)
あと、知っておくと幸せになるかもしれないもの
break ・・・ while などのループから強制的に抜け出す
0772デフォルトの名無しさん
2008/03/29(土) 06:20:59No documentation for perl function 'break' found
0773デフォルトの名無しさん
2008/03/29(土) 10:14:40つ sub break {last}
0774デフォルトの名無しさん
2008/03/29(土) 12:57:39あと、これもおすすめしたい。
sub continue {next}
0775デフォルトの名無しさん
2008/03/29(土) 23:31:17perl だけやってれば済んじゃうキミたちがうらやましいよ。
0776デフォルトの名無しさん
2008/03/29(土) 23:34:15http://u.aniota.info/?fayuwz
0777デフォルトの名無しさん
2008/03/30(日) 11:16:13continueってCoreにあるでしょ
使ったことないけど
0778デフォルトの名無しさん
2008/03/30(日) 12:31:020779デフォルトの名無しさん
2008/03/30(日) 14:04:49その continue はおすすめソリューションが必要な人には向いてないから。
use Switch も要るのかな。
0780デフォルトの名無しさん
2008/03/30(日) 15:12:11そのおすすめメソリューションとやらは動くのかよ
0781デフォルトの名無しさん
2008/03/30(日) 15:25:350782デフォルトの名無しさん
2008/03/30(日) 16:20:410783デフォルトの名無しさん
2008/03/30(日) 16:21:55Coreにcontinueあるの知らなかったの?動かないもの教えちゃ駄目よ
use strict;
use warnings;
BEGIN {
*CORE::GLOBAL::continue = sub { no warnings 'exiting'; next }
}
LOOP:
for my $n (0..9) {
no strict 'subs';
continue LOOP if $n % 2;
print "$n\n"
}
0784デフォルトの名無しさん
2008/03/30(日) 22:09:160785デフォルトの名無しさん
2008/03/31(月) 04:32:31CentOS5.0 perl-5.8.8です。
CPANでBerkeleyDBをインストールしようとすると
エラーを吐きます。
ここ読んで対処しましたが、それでもダメでした。
ttp://k2top.jpn.org/diary/?date=20031206
install Net::Server、install Net::Serverは問題なく
できました。
何がいけないんでしょうか?
スレチだったらごめんなさい。
厚かましくも、どこか誘導していただけると幸いです。
0786デフォルトの名無しさん
2008/03/31(月) 05:05:18笑
0787デフォルトの名無しさん
2008/03/31(月) 06:03:010788デフォルトの名無しさん
2008/03/31(月) 07:49:450789デフォルトの名無しさん
2008/03/31(月) 08:44:36|;;;/::::::::::::::::::::::::::::::/ |
// ̄,'' ̄ ̄\:::::::'''',,,丿
/-=・=- -=・=- _|:::::::::::::\ え?
/ゝ ▼ <:::::::::::::::<:::: ̄--_
---┼/ 、 -─-\--<::::::::::::::::::::-_
--─\ ⌒  ̄ ̄ ̄ゝ::::::::::::::::::::::::::::::::::::::::-_
\__ ゝ/::::::::::::::::::::::::::::::;;;;;;;;;;;::::::::::::\
,,ノ 丿:::::::::::::::::::::::::/:::::::::::::::::::::::::::::::::::|
> /:::::::::::::::::|::/::::::::::::::::::::::::::::::::::::::::::::|
>.,. /::::::::::::::::::ノ;;/:::::::::::::::::::::::::::::::::::::::::::::::::| ____________
/:::::::::::::::::::ノ;;;;|::::::::::::::::::::::::::::::::::::::::::::::::::::|__-||||||::::||||||::::||||\
/::::::::::::::::::/;;;;;;;|:::::::::::::::::::::::::::::::::::::::::::::::::::::|::::|||||||:::||||||:::||||||::::::
(!!!!!!(:::::::::::::::/ ;;;;;;;;;;;;|::::::::::::::::::::::::::::::::::::::::::::::::::::/::::|||||||:::||||||:::|||||||::ノ
(!!!!!!!!!!!!!ノ (lllllllllllゝ:::::::::::::::::::::::::::::::::::::::/-- ̄  ̄
,,,,ヽ::::::::-ゝ:::::::::::/
(!!!!!!!!!!!!!!!!!!!!ノ
0790デフォルトの名無しさん
2008/03/31(月) 10:46:42>よろしくお願いしてもいいでしょうか?
はぁ?なんでてめぇごときにお願いされないといけないんだよカスが!
さっさとケツの穴とエラーメッセージの内容を出せよクズ
0791デフォルトの名無しさん
2008/03/31(月) 10:55:48あんた、掲示板で質問する能力が欠如している。
このスレだけでも最初から読んで、質問の仕方をマスター
してから出直しなさい。
0792デフォルトの名無しさん
2008/03/31(月) 11:13:30trを使うのかと思いましたがよくわかりません。
レベルが低くてすいません。
0793デフォルトの名無しさん
2008/03/31(月) 11:21:25超初心者とはなんですか?レベルが低いとはどういうことですか?
要求をもっと抽象的に書いてください.
置換対象が"aiueo"だけなのか50音全部なのかもわかりません.
0794デフォルトの名無しさん
2008/03/31(月) 11:26:28言い訳にもできないけど。
「エラー吐きます」と言ってエラーメッセージ書かないのがよくない。
>>793
> 要求をもっと抽象的に書いてください.
逆ですよ、逆。
0795デフォルトの名無しさん
2008/03/31(月) 12:08:040797デフォルトの名無しさん
2008/03/31(月) 12:34:07もう少し分かりやすいようにガンダムで例えてください
0798デフォルトの名無しさん
2008/03/31(月) 12:48:06けっきょくさ、肝心の質問には、誰一人答えられないの?
解答する知識が無いから、グダグダ言ってるだけだろ?
分からないなら分かりませんと素直に言えよ。
知らないんなら出しゃばるな。
>>792 安心しろ、オレが解答してやるから。
>aiueoと入力してもらったテキストをあいうえお
簡単簡単。こうすればいいよ。
$s = "aiueo";
$s =~ s/aiueo/あいうえお/;
print $s;
初心者を煽るバカがいるが気にすんな。
オレみたいに親切でやさしいヤツもいるからさ。
また聞きたいことがあれば遠慮せずに聞いてくれ。
0799デフォルトの名無しさん
2008/03/31(月) 13:05:02if ($s eq 'aiueo'){$s = 'あいうえお';}
が正しいと思う
0800デフォルトの名無しさん
2008/03/31(月) 14:44:43「もう言っている人がおれは言わなくていいか」
という考え方を身に着けようじゃないか、諸君。
0801デフォルトの名無しさん
2008/03/31(月) 15:08:13日本語でおk
0802デフォルトの名無しさん
2008/03/31(月) 21:29:06$s =~ s/a/あ/;
$s =~ s/i/い/;
$s =~ s/u/う/;
$s =~ s/e/え/;
$s =~ s/o/お/;
0803デフォルトの名無しさん
2008/03/31(月) 21:43:300804デフォルトの名無しさん
2008/03/31(月) 21:43:39とかできればいいんだけどなあ。
マルチバイト文字め。
0805デフォルトの名無しさん
2008/03/31(月) 22:47:390806デフォルトの名無しさん
2008/03/31(月) 23:46:370807デフォルトの名無しさん
2008/04/01(火) 00:49:01正規表現でも文字が文字として使えて快適だぜ
0808785
2008/04/01(火) 02:40:39こんな感じのエラーです。
0809785
2008/04/01(火) 02:41:45http://pigmon.ddo.jp/cpan.txt
こんな感じのエラーです。
0810デフォルトの名無しさん
2008/04/01(火) 04:36:190811デフォルトの名無しさん
2008/04/01(火) 15:16:24こちらの2ショットチャットが、tok2やinfoseekに設置をしても
Internal500エラーで動きません。
パーミッションをreadme通りや、tok2標準にしてもだめでした。
家の環境のhttpd + activeperlの環境ではすんなり動きますので、
sendmailのパスが記述してあることが原因ではなさそうです。
何が考えられますでしょうか?
0812デフォルトの名無しさん
2008/04/01(火) 15:30:11>>1嫁あほ
0813デフォルトの名無しさん
2008/04/01(火) 20:23:26ならないのですが、SQL ServerとOracleどちらの方がやり
やすいのでしょうか。
ご意見いただけますと幸いです。
0814デフォルトの名無しさん
2008/04/01(火) 21:12:060815デフォルトの名無しさん
2008/04/01(火) 21:15:57構いませんのでお聞きしたかった次第です。
0816デフォルトの名無しさん
2008/04/01(火) 22:32:110817デフォルトの名無しさん
2008/04/01(火) 23:20:140818デフォルトの名無しさん
2008/04/01(火) 23:33:32根拠はないけどなんとなく。
0819デフォルトの名無しさん
2008/04/01(火) 23:42:070820デフォルトの名無しさん
2008/04/02(水) 00:15:290821デフォルトの名無しさん
2008/04/02(水) 04:41:46sub abc{ 適当な処理 }
ghq( \&abc );
などととしたときに、関数 ghq の中で引数の関数名 abc を取り出すことはできるのでしょうか?
呪文のような何かをつけるとできそうな感じがしますが、、、どうなんでしょう?
0822デフォルトの名無しさん
2008/04/02(水) 09:02:31ghq()をその方法で呼ぶ限りは無理じゃないかな。
どういう目的があってそうしたいかを書けば、適切な答えが返ってくるかもね。
0823デフォルトの名無しさん
2008/04/02(水) 13:41:04あとはdumpvar.pl参考に自分でやってくれ。
sub abc { }
ghq(\&abc);
sub ghq {
local *stub = *{"main::"};
while (my ($key,$value) = each(%stub)) {
if (\&$key == \&{$_[0]}) {
print $value,"\n";
}
}
}
0824デフォルトの名無しさん
2008/04/02(水) 18:51:53ほう。関数を片っ端から調べて見つける方法があるのか。
0825デフォルトの名無しさん
2008/04/02(水) 22:23:42use strict;
use warnings;
sub test {print "test1\n"}
sub test2 {
my $glob = shift;
my $name = *{$glob}{NAME};
my $code = *{$glob}{CODE};
print "$name:$name\n";
$code->();
}
test2( *test );
0826デフォルトの名無しさん
2008/04/03(木) 01:11:00$url = 'http://unko.com/contents/index.html'; # カレント
$href = '../img/sumbnail.gif'; # リンク先
みたいな変数から
'http://unko.com/img/sumbnail.gif'
のような正規化されたアドレスを得る方法です。
perlモジュールとかあれば、それでも結構です。
いちおう念のために書いておきますが、じぶんで調べる努力はしました。
でも見つけきれませんでした。
0827デフォルトの名無しさん
2008/04/03(木) 01:31:22$ perl -MURI -le 'print URI->new_abs( "../img/thumbnail.gif", "http://unko.com/contents/index.html" )'
http://unko.com/img/thumbnail.gif
URI っていうモジュールの new_abs っていうメソッド。
ttp://search.cpan.org/~gaas/URI-1.35/URI.pm
0828821
2008/04/03(木) 04:12:42やりたかったことは、ghqの中で関数名とその実行時出力を得ること、です。
関数名を文字列で渡すか、\&参照で渡すか、ぐらいだったので参考になりました。
glob 渡しも試してみます。
0829デフォルトの名無しさん
2008/04/03(木) 19:10:26ありがとです
0830デフォルトの名無しさん
2008/04/03(木) 19:47:06あるソフトが、@INCの関係でうまく動かないようなので、どのファイルが
インクルードされてどのシンボルが定義されたか調べたいのです。
0831デフォルトの名無しさん
2008/04/04(金) 04:18:090832デフォルトの名無しさん
2008/04/04(金) 18:02:30utf-8 のテキストの中に、混ざっている shift-jis の文字を置換するために、
s/\xe2\x80\x94/−/g;
とします。このとき、
use utf8;
や
use encoding ("utf-8");
を使用していると、上記の置換ができませんので、コメントアウトしています。
このように、utf8フラグは立てないで処理してもよいのでしょうか?
他にもっといい方法があるのでしょうか?
よろしくお願いします。
0833デフォルトの名無しさん
2008/04/04(金) 20:06:50まず、なんでutf8とsjisが混ざってるの?
混ざっている状態から、確実にsjisの部分だけが取り出せるの?
あと、コード変換ならモジュール使えばいいんじゃない?
どうしても自前でやりたいというなら、Perlにバイナリだと認識させてから置換すればよいと思う。
0834デフォルトの名無しさん
2008/04/04(金) 21:10:04Devel::Symdumpってのがそれじゃないの
0835832
2008/04/04(金) 21:58:01元々、sjisのhtmlファイルを、w3mというテキストブラウザで dump したテキストなんです。
それを nkf でチェックすると utf8 で通るのですが、
emacs でいじると sjis にコード変更されてしまう状態です。
今のところ、混ざっているキャラクターは一つなので、
>>832で書いたように、 use utf8; をコメントアウトして s/\xe2\x80\x94/−/g; で、
置換できています。
この方法は、Perlにバイナリと認識させていることになるでしょうか?
0836デフォルトの名無しさん
2008/04/04(金) 23:18:46> 元々、sjisのhtmlファイルを、w3mというテキストブラウザで dump したテキストなんです。
w3mでdumpする段階でコード系を制御できるし。
> それを nkf でチェックすると utf8 で通るのですが、
> emacs でいじると sjis にコード変更されてしまう状態です。
emacsでいじる段階でもコード系を制御できるし。
0837832
2008/04/05(土) 01:17:40どうもありがとうございます。
w3m[mee]でコードを指定するオプションは、euc と jis と sjis で、utf8がないのですが、
具体的にはどうやったらいいのでしょうか。
よかったら教えてください。
現状では、 ja_JP.utf8 の環境で、文字コードにはなにも指定せずに dump させると、
sjis 混じりの utf8 のテキストになります。
それとも、一旦、euc で出力させてから、utf8 に変換すればいいのかな。
emacsでいじる手間をかけないように、
w3m で dumpしたものをそのまま perlスクリプトに渡した結果のテキストが
きちんと utf8 になるのが理想なのですが。
use utf8; を設定する必要が特にないのなら、このままでいいのでしょうか。
0838デフォルトの名無しさん
2008/04/05(土) 01:50:520839デフォルトの名無しさん
2008/04/05(土) 10:44:43文字コードを意識する処理がない(日本語を一切扱わない)なら、use utf8やuse Encodeを付けなければ、昔のようにバイナリのままになるね。
今後も同じようなことをするなら、手順を見直した方がよいと思う。
0840デフォルトの名無しさん
2008/04/05(土) 10:53:31テキストファイルの状態でほしいコードは何?
use utf8をつけてるってことは、何か日本語の処理をするためじゃないの?
あと、-dumpだと桁数の制御など余計な処理が入るみたいだけどそれは問題なし?
さらに、perlでhtmlをとるところからやった方がいいんじゃない?
use LWP::UserAgentとかで調べるべし。
use Encodeで文字コードも簡単に変換できるし、Jcodeになれてるなら、pm版もあるし。
何をしたいかを書いた方が、簡単な答えが返ってきそう。
0841デフォルトの名無しさん
2008/04/05(土) 11:09:20デバッグ等行う際に内部変数の状態を参照したいんで
Eclipse+EPIC+PadWalkerの環境を作りたい思っています。
(Windowsです。ActivePerl 5.10、5.8で試しています。)
Eclipseの最新バージョンを落として、EPICのサイトのURLを
設定して最新版をインストールまでは問題なくできました。
PadWalkerをインストールしようと思い
ppm install PadWalkerとしても、パッケージが見つからず
インストールされないので、
http://e-p-i-c.sourceforge.net/downloads/padwalker_010_Perl5_8_1.zip
のファイルをperlディレクトリのsiteに上書きして、とりあえずインストールしました。
この状態で簡単な加算プログラムを作って実行でコンソール上に
計算結果が正常に表示されることは確認。
ブレークポイント付けてデバッグモードで起動してステップ実行できることも確認。
でも、変数を表示する領域になにも表示されません。
$var1 = 1;
$var2 = 2;
$var3 = $var1 + $var2 ;
みたいなもので、$var1〜3の値をデバッグで確認したいんですが、
どうすれば表示されるようになるでしょうか。
それともEclipse+EPICで実施するのが古いやり方なのでしょうか。
※もし板違いの場合、誘導していただけると助かります。
0842デフォルトの名無しさん
2008/04/05(土) 12:38:36ActivePerl 5.10.0.1002とActivePerl 5.8.8.822のどちらを落とせばいいのかが分かりません。
2つ並んでいるところを見るとそんなに大差は無いのでしょうか?
0843デフォルトの名無しさん
2008/04/05(土) 14:51:060844デフォルトの名無しさん
2008/04/05(土) 14:54:50バージョンが違うんだよ。
自分にあったほうを選べ
0845デフォルトの名無しさん
2008/04/05(土) 15:08:44自分も最近始めたばかりで先日ダウンロードしました
私もそれで悩んだんです
初心者が挫折しないで継続させれるのはどっちなんだろうか?ってね
私は5.8を選びました
今のところ快適ですよ・・・サンプルを動かすのにはねw
早く自分でバリバリ書いてみたいです
お互いガンガレ^^
0846デフォルトの名無しさん
2008/04/05(土) 15:12:32http://fleur.hio.jp/perldoc/perl/5.10.0/pod/perl5100delta.mix.html
のIncompatible Changes読んで、困るなら5.8、困らないなら5.10、わからないなら5.10
0847842
2008/04/05(土) 15:24:34ありがとうございました。
0848デフォルトの名無しさん
2008/04/05(土) 18:44:51死亡フラグ
0849デフォルトの名無しさん
2008/04/05(土) 22:19:46{
int i = 5;
return &i;
}
int main(void)
{
int *a = hoge();
printf("%d\n", *a);
return 0;
}
Cでこういうのって、関数hogeのローカル変数のアドレスを返して
いるわけで、あきらかに問題ありですよね?(これだと普通に動いちゃう場合が多いけど)
perlの場合の下記のようなコードって、これも一見普通に問題なく動いてるように
見えるのですが、やはり問題ありなのでしょうか? それともperl的にはこのような
コードはOKなのでしょうか?
my $a = hoge();
print "$$a\n";
sub hoge
{
my $i = 5; # 数値でも文字列でも何でもいいのですが
return \$i;
}
0850デフォルトの名無しさん
2008/04/05(土) 22:20:310851デフォルトの名無しさん
2008/04/05(土) 22:22:27おk
0852デフォルトの名無しさん
2008/04/05(土) 23:44:05perlのアドバンテージの一つ。
0853デフォルトの名無しさん
2008/04/05(土) 23:56:17どのこC使ってるか知らんけど。M$的にはOKなんでないの?知らんけど。
M$はANSI規格を待たずに勝手に、Cに //コメント を追加しやがった無法者だから知ったこっちゃない。
Perlのそれは「レファレンス・カウンタ」でググりなさい。
0854デフォルトの名無しさん
2008/04/06(日) 00:00:230855デフォルトの名無しさん
2008/04/06(日) 00:26:16……
0856デフォルトの名無しさん
2008/04/06(日) 00:30:25my $buf = "\x00" x 256; # malloc
my $pointer = pack ('P', $buf);
こんな感じでポインタ取得して
DdeQuerystringにそのポインタ渡して
DDEサーバーから送られてきたXTYP_ADVDATAデータのDDEcreateStringで作ったhsz1とhsz2のタイトルを取ってるんだけど、
他のマルチスレッドで走ってるプログラムと何故か競合して
たまに落ちる事があるんだけど何が原因なんだろう??
0857832
2008/04/06(日) 02:29:08どうもありがとうございます。
>>839
日本語を置換する必要もありますので、
s/テスト//g;
のような処理もしています。
すると、自分には理屈がわからないのですが、
usr utf8; を付けていないのに、ちゃんと処理されているのです。
処理するテキスト、perl スクリプトとも utf8 なので、バイナリとして扱っていても大丈夫なのでしょうか
>>840
欲しいのは、utf8 コードのテキストです。
日本語の処理は上記の通り、use utf8; なしで出来ています。
「utf8コードのテキストに混ざる、sjisキャラクターをutf8コードに変換する処理」をしたいです。
教えていただいた、perl で html をとる方法も勉強してみます。
余談ですが、w3m の -dump 処理についてアレコレ試したところ、
Locale utf8 では、w3m の出力に、euc-jp や jis を指定しても、出力は utf8、 sjis の文字がのこる
Locale euc-jp では、 euc-jp を指定しても、出力は jis 、 sjis の文字はなし
でした。
0858デフォルトの名無しさん
2008/04/06(日) 10:56:04use utf8を付けなくても日本語が置換できるのは、ただのバイナリ列としての比較をしているから。
スクリプトのコードと、変数のコードが同じだからでできているだけ。
全部utf8なら、半角と同じコードが日本語で使われることもないし、日本語1文字を構成している数バイトの途中から別の文字に見えることもないから、特に問題は起きないと思う。
sjisやeuc-jpではこの条件を満たさないから、変な置換が行われることがある。
>utf8コードのテキストに混ざる、sjisキャラクターをutf8コードに変換する処理」
これをしたいのであれば、utf8を付けて、文字コードを意識する必要はある。
読みたいhtmlのソースはsjisみたいだから、Perlでソースから読んだ場合はコード変換がいる。
処理回数が少なければ、nkfやiconvを呼んで済ませるのもありかも。
ただし、「〜」などの一部文字は、コード変換の処理によってはうまく変換されないことがあるからその辺はチェックしておいた方がよい。
w3mの出力で問題ないのであれば、system()で内部から呼び出すやり方でもいいと思う。呼び出すコストが無視できるレベルであれば。環境変数を指定して呼び出せばいいんだし。
ただし、w3mが勝手に整形する部分で問題がなければ。
0859デフォルトの名無しさん
2008/04/06(日) 11:45:54動いてるは運が良いだけ。そのうち困る。
困る前に、よく勉強しておくことだな。
ユニコードとutf8の違いとか、最初はワケわからん頭がパニくるけど
分かると use utf8 すべきか、しないか、判断できるようになるよ。
シフトJIS だって、マイクロソフトのシフトJIS、IBMのシフトJIS、NECのシフトJIS など
何種類もある。
「〜」 が正しく変換できないのは、Shift_JIS と CP932 の違いが分かってないからだね。
":encoding(shift_jis)" で化けるときは ":encoding(cp932)" にするといい。
0860デフォルトの名無しさん
2008/04/06(日) 19:24:40っていう処理をしたいんだが
if ($i =~ /\D/){
print "error\n";
}
とすると$iが3.5などの時もエラーになってしまいます
どうすれば$iがAやあ、1aなどの時だけエラーが出るようになりますか
教えてください
0861デフォルトの名無しさん
2008/04/06(日) 19:56:55use Scalar::Util qw(looks_like_number);
if (looks_like_number($i)) {
0862856
2008/04/06(日) 19:57:540863デフォルトの名無しさん
2008/04/06(日) 19:57:55unless (looks_like_number($i)) {
0864856
2008/04/06(日) 20:00:26何が原因なのか分かりません。。。
0865856
2008/04/06(日) 20:06:30他のThreadと競合する理由が分かりません。
ポインタやmalloc渡して、同じような服愛があった人はどうやって解決しましたか??
0866856
2008/04/06(日) 20:16:250867821
2008/04/06(日) 22:57:42package TestX;
my %TR = ();
my @TC = ();
sub before_class { } sub after_class { }
sub before_test { } sub after_test { }
sub before_method { } sub after_method { }
sub set_testsuite;
my $_initialize = sub { my $self = shift; $self->set_testsuite(); $self->before_class(); };
my $_run = sub { my $self = shift;
$self->before_test();
while( $Glob = shift(@TC) ) {
$self->before_method(); $TR{ *{$Glob}{NAME} } = (*{$Glob}->()); $self->after_method(); }
$self->after_test(); };
my $_show_results = sub { my $self = shift;
my $ok = 0; my $ng = 0; print "== Test Results ==\n";
foreach my $k ( keys(%TR) ) { print "$k ---> $TR{$k}\n"; ($TR{$k}) ? ($ok++) : ($ng++); }
print "pass : $ok / fail : $ng \n"; };
sub new { my $class = shift;
my $self = {}; $self = bless $self, $class;
$self->$_initialize; return $self; }
sub add_testcase { my $self = shift;
push( @TC, shift ); }
sub run { my $self = shift;
$self->$_run; $self->$_show_results(); }
sub DESTROY { my $self = shift;
$self->after_class(); }
1;
0868821
2008/04/06(日) 22:58:56# test の書き方。
package TestZZZ;
use base qw(TestX);
sub abc { print "a-c\n"; return 1; }
sub bcd { print "b-d\n"; return 1; }
sub cde { print "c-e\n"; return 0; }
sub set_testsuite {
my $self = shift;
$self->add_testcase(*abc);
$self->add_testcase(*bcd);
$self->add_testcase(*cde);
}
1;
# 呼び方。
package main;
#use TestZZZ;
TestZZZ->new->run;
>>856
perl でそこまでやらせること自体が間違ってるような気が、、、
だいたい、perl で OOP とか実は間違ってる気がするしなぁ。
0869デフォルトの名無しさん
2008/04/06(日) 23:51:37#!/usr/bin/perl
sub testSub {
my @aa = ( 1 , 2 , 3 );
my %bb = ( aa => "aa" , bb => "bb" ) ;
return (\@aa , \%bb);
}
#Main
my @a1;
my %b1;
my ($a2 , $b2) = testSub() ;
@a1=@$a2 ;
%b1=%$b2 ;
かんたんにかくとこんな感じのスクリプトだったのですが、そもそも関数内でmyしている変数のリファレンスを呼び出し側に渡すことってありなんでしょうか?
かなり気持ちが悪い気がして直そうか悩んでいます。ご意見をお願いします。
0870デフォルトの名無しさん
2008/04/07(月) 00:01:260871856
2008/04/07(月) 00:05:530872デフォルトの名無しさん
2008/04/07(月) 00:16:46何の気持ちが悪いのか分からんが、どうしてもきになるなら、
return ([@aa] , {%bb});
とでもしとけ。
0873デフォルトの名無しさん
2008/04/07(月) 00:35:58> そもそも関数内でmyしている変数のリファレンスを呼び出し側に渡すことってありなんでしょうか?
全然問題ない。↓こういう(man perlobj参照)のもなおしまくる?
sub new {
my $self = {};
bless $self;
return $self;
}
0874デフォルトの名無しさん
2008/04/07(月) 00:50:05Cの自動ローカル変数は、関数を抜けたらいつ破壊されるかわからないので、ローカル変数へのポインタを返しちゃいかん
っていう事実との対比で気持ち悪いんじゃね?
0875デフォルトの名無しさん
2008/04/07(月) 02:03:49int *hoge(int v) {
int *p;
p = malloc(sizeof(int));
*p = v;
return p;
}
みたいなもんだと思えばおk。
実際、perlの中ではそんな感じで動いてるわけだし。
0876デフォルトの名無しさん
2008/04/07(月) 03:32:43> かなり気持ちが悪い気がして直そうか悩んでいます。ご意見をお願いします。
なあ、その気持ち悪さは、はじめてバイクに乗った時にしばしば感じる人がいるという、
「何これ! ペダル押してないのに加速してる!!」という気持ち悪さと同じだぞ。
0877デフォルトの名無しさん
2008/04/07(月) 06:38:13オレは車乗るより前に単車乗ったから、その気持ちわからん。
でも、はじめてオートマ車乗った時は「なにこれ、クラッチ切らんでギアチェンジしてる!」っとは思った。
0878デフォルトの名無しさん
2008/04/07(月) 07:43:32俺、未だに気持ち悪い(笑)
0879デフォルトの名無しさん
2008/04/07(月) 07:52:50こんなのは?
if ($i !~ /^\d+$/){
0880デフォルトの名無しさん
2008/04/07(月) 09:02:03>>860の
> とすると$iが3.5などの時もエラーになってしまいます
の意味がわかってないのか?
0881デフォルトの名無しさん
2008/04/07(月) 13:20:54ってやると"ABCD"が返るみたいですけどエラーでる…。
なにか分かる人いますか?
Software error:
Can't modify constant item in scalar assignment at C:\index.cgi line 36, near ""A";"
Execution of C:\index.cgi aborted due to compilation errors.
AN HTTP Daemon v1.42pを使ってActivePerl 5.10.0 Build 1002を入れた環境でやってます。
0882デフォルトの名無しさん
2008/04/07(月) 13:27:340883デフォルトの名無しさん
2008/04/07(月) 13:29:58「スカラの課題で一定の項目を変更することができません。」
って出たけど、何が原因なのかさっぱり…。
もうすこし調べてきます!
0884デフォルトの名無しさん
2008/04/07(月) 13:35:09'X' = 'A'
とかしているのと同じ。
0885デフォルトの名無しさん
2008/04/07(月) 13:50:28いあ、オレも変なことしてるなとは思ってたんだけど
http://cocohome.hp.infoseek.co.jp/perl_ref/substr.html
このサイトとか他サイトでできるできるって書いてあるから
やってんだけど、やっぱエラー起こるんよ。
0886デフォルトの名無しさん
2008/04/07(月) 13:51:47打ち間違えてたのかな??
0887デフォルトの名無しさん
2008/04/07(月) 13:52:19substr($s, 0, 0) = "A";
これならちゃんと動くよ
0888デフォルトの名無しさん
2008/04/07(月) 13:53:04変数渡さないとダメなのか!戻り値がそうなるのかと勘違いしました。
失礼しました。
0889デフォルトの名無しさん
2008/04/07(月) 13:57:130890デフォルトの名無しさん
2008/04/07(月) 14:07:450891デフォルトの名無しさん
2008/04/07(月) 15:03:03> いや、この場合、perl側の紛らわしさがアホだろう。
今回のケースは、>>881の心の方が2000万倍は異常。
0892デフォルトの名無しさん
2008/04/07(月) 18:55:07ごめんよ。わかってなかった。
0893832
2008/04/07(月) 21:44:59どうもありがとうございました。
use utf8; なしで日本語が置換できる仕組みを理解することができました。
w3m出力を nkf で utf8 に変換しても残った sjis 文字なので、
sjis のままの html を直接、処理する方が、汎用性のある方法なのですね。
system() や、コードについてももっと勉強したいと思います。
ありがとうございました。
0894デフォルトの名無しさん
2008/04/07(月) 23:35:43EPIC入れたのだけど、コード補完できない上に挙動不安定。
かつ、UTF-8で使用しようとするとEclipseの文字コードを変えてやる必要があり、
変更したら既存のjavaプロジェクトがメチャクチャになったので、勘弁。
0895デフォルトの名無しさん
2008/04/08(火) 02:28:37というか他に思いつかない
足りない機能は自分で書く
0896デフォルトの名無しさん
2008/04/08(火) 11:06:220897デフォルトの名無しさん
2008/04/08(火) 16:19:09遅れてすいませんがありがとうございました
0898デフォルトの名無しさん
2008/04/08(火) 23:46:15#! /usr/bin/perl
print "Content-type: text/html\n\n";
print require hoge.pm;
print require hoge.pm;
[hoge.pm]-------------
return "hoge";
----------------------
ってやったときに、index.cgiの2回目のrequireが
重複読み込みとみなされて"hoge"が返ってこなくて困ってます。
なにかいい方法ありますか?
0899デフォルトの名無しさん
2008/04/09(水) 01:18:020900デフォルトの名無しさん
2008/04/09(水) 01:35:290901デフォルトの名無しさん
2008/04/09(水) 02:15:18外部のplファイルに関数とか書いて
その関数の戻り値をprintしたいんだけども…
0902デフォルトの名無しさん
2008/04/09(水) 02:18:140903デフォルトの名無しさん
2008/04/09(水) 02:25:40みんなありがとん(チュッ
0904デフォルトの名無しさん
2008/04/09(水) 02:29:550905デフォルトの名無しさん
2008/04/09(水) 02:34:320906デフォルトの名無しさん
2008/04/09(水) 02:36:120907デフォルトの名無しさん
2008/04/09(水) 19:14:29気のせいだよね。
0908デフォルトの名無しさん
2008/04/09(水) 19:25:16|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \
|┃ | (__人__) |
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
0909デフォルトの名無しさん
2008/04/09(水) 19:48:45http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_do_EXPR_do
0910デフォルトの名無しさん
2008/04/09(水) 22:44:39お前は呼んでねぇ!
0911デフォルトの名無しさん
2008/04/10(木) 00:06:44for($i=0;$i<100;$i++){
if($i==50){system('C:\WINDOWS\system32\notepad.exe');}
print "$i\n";
}
これだとメモ帳を開いた時点で止まってしまいメモ帳を閉じるまで処理を続けてくれません
これをメモ帳を開いたまま処理を継続するにはどうすればいいんですか?
0912デフォルトの名無しさん
2008/04/10(木) 00:15:45use Win32::FileOp qw(ShellExecute);
for(my $i=0; $i<100; $i++){
if ($ i== 50){ ShellExecute('open', 'notepad.exe'); }
print "$i\n";
}
0914デフォルトの名無しさん
2008/04/13(日) 13:43:54foreach (split(//, $counter)) {
print qq|<img src="$_.gif">|;
}
このコードの中の
qq|<img src="$_.gif">|;
はどういう意味でしょうか?
qq|...| がわかりません。ググッたところqqは"のことらしいのですが。
0915デフォルトの名無しさん
2008/04/13(日) 14:06:060916デフォルトの名無しさん
2008/04/13(日) 14:07:34q, qq のミソは、// として任意の記号を使えること。(括弧の類は開閉対応が必要)
中身で使われていない記号を指定すればエスケープの手間が省けます。
0917デフォルトの名無しさん
2008/04/13(日) 14:09:35q{ほげ} ---> 'ほげ'
qq/げほほ/ ---> "げほほ"
0918デフォルトの名無しさん
2008/04/13(日) 14:20:47>>916
>>917
レスありがとうございます。
>>(括弧の類は開閉対応が必要)
ここでの括弧は < と > のことでしょうか?
また、
>>qq/げほほ/ ---> "げほほ"
をあてはめて考えると
qq|<img src="$_.gif">| には //が出てこないのですが、
どう考えたらよいでしょうか?
結果は"<img src=\"$_.gif\">"となるようですが、
ピンときません。
0919デフォルトの名無しさん
2008/04/13(日) 14:22:49{}の中にqqがあってその後ろに||が付いているコード貰ったんだけど
{プリント ファイルハンドル qq|プリントしたい文字列|}
qqの外側または内側にを{}や//や||を使い分け方がよくわかんない
{}最強
qq2番手
||3番手
//4番手
って順に内側で使うものデソカ?
0920918
2008/04/13(日) 14:31:08/はデリミタですね。そして、デリミタには | や ( や { や # などが使えるということ。
要は、デリミタと一致しない文字だけで中身を構成すればエスケープの必要なし
ということと理解しました。
・カッコの類は閉じること。qq(で始まれば)で終わらせる。
・#で囲う場合には、直後にスペースを入れないこと。(コメントと解釈される)
ってところかな?
要は、都合の良いのをうまく使い分ければよいかと♪
0922デフォルトの名無しさん
2008/04/13(日) 14:35:13>>920さん
私も参考になったよ
ありがとです^^
0923918
2008/04/13(日) 14:54:53なるほど。
#はイマイチですね。
なるべく、/ ( { | あたりで開閉することにします。
ありがとうございました。
>>922
どういたしまして。
perl始めたばかりの素人なんで。
0924デフォルトの名無しさん
2008/04/13(日) 20:19:47qq(
HTMLのソース
);
とかにしてる。
0925デフォルトの名無しさん
2008/04/13(日) 20:21:450926デフォルトの名無しさん
2008/04/13(日) 22:20:090927デフォルトの名無しさん
2008/04/14(月) 13:47:190928デフォルトの名無しさん
2008/04/14(月) 16:50:51とある住所録データベースを以下のように変換したいと思い、コードを書いてみた。
○○市3条 -> ○○市三条 ○○市10条 -> ○○市十条 ○○市24条 -> ○○市二十四条
#!/usr/bin/perl
use strict;
use utf8; #コードはutf8で記述
use Encode;
my $ptan = qw/(\d+)条/;
my $ten = '十'; my $jou = '条';
binmode(STDIN,":utf8"); binmode(STDOUT,":utf8");
while(my $line=<STDIN>){
$line =~ s/$ptan/&ch_kan_jo($1).$jou/ei; print $line ;
}
sub ch_kan_jo{
my $num = shift();
my $src = $num;
if($src==0){ return() ; # Not Doing }
elsif($src<10){ $num =~ tr/123456789/一二三四五六七八九/; }
elsif($src<20){ $num =~ s/([1])([0-9])/$ten.&ch_kan_jo($2)/ei; }
elsif($src>=20){ $num =~ s/([2-9])([0-9])/&ch_kan_jo($1).$ten.&ch_kan_jo($2)/ei; }
$num =~ tr/0//d;
return( $num );
}
(改行多すぎエラー出たんで、ちょっと見にくいかも・・)
これを実行すると、ActivePerl-5.8.8-build822だと、メモリアクセス違反(0x000000を参照)でperl.exeが落ちてしまう。
Linux(Fedora)上のperl-5.8.8-10.fc6.rpmだと期待した通りに動く。実行時間も一瞬で、メモリも少量しか使用していない。
このコードなんかマズイとこある?(再起使ってるけど、他に思いつかなかった。)
それともActivePerlのバグってことでええんかいな?
0929デフォルトの名無しさん
2008/04/14(月) 19:56:360930918
2008/04/14(月) 20:22:45my %hash;
$hash{"hoge"}++;
のように未初期化のハッシュに対して、インクリメントすると
ハッシュには、(キー、 値) = ("hoge", 1) となっています。
未初期化のハッシュに$hash{"hoge"}++;を実行すると値が1に
なるということは元の値は0だったことになりますが、上記のとおり
明示的に0で初期化はしていません。何故0と判断されるのですか?
また、
$hash{"hoge"} = $hash{"hoge"} + 1;
とすると未初期化の値を使用していると言われます。
これと、先の$hash{"hoge"}++;の違いはなんでしょうか?
0931デフォルトの名無しさん
2008/04/14(月) 20:31:24つperldoc perlop
undef は常に数値として扱われ、特にインクリメントされる前には 0 に変換されます
(従って、undef のポストインクリメント値は undef ではなく 0 になります)。
0932デフォルトの名無しさん
2008/04/14(月) 21:10:12そこだけ引用すると誤解されそうだ。
>>930
未定義値 (undef) を数値コンテキストで評価すると 0 となる。
++ 演算子には 'aa' → 'ab' のように A-Z の範囲でインクリメントする
機能もあるが、undef に対して使った場合は常に数値として評価する為、
ポストインクリメントの場合はまず undef を数値として評価 = 0 を返し、
その後オペランドを +1 する。
故に、
my %hash;
print $hash{'foo'}++, "\n"; # 0
print $hash{'foo'}, "\n"; # 1
print $hash{'bar'} + 1, "\n"; # 1;
0934918
2008/04/14(月) 21:45:21print $hash{'bar'} + 1, "\n"; # 1;
については未初期化の値を使用していると言われますが
確かに1が返っていました。ありがとうございました。
�@ハッシュのキーが存在しない場合はundefが返る
�Aundefは数値コンテキストで評価されると0になる
※++、--は文字列コンテキストでも使用できる。(必要になったら調べます。)
0935デフォルトの名無しさん
2008/04/14(月) 21:55:30WWW::Myspaceというモジュールが見つかりません。
これってやっぱり、ActivePerlだからですかね?
0937デフォルトの名無しさん
2008/04/14(月) 23:01:29まずはこれを読んでおけみたいな。
0938デフォルトの名無しさん
2008/04/14(月) 23:03:47「activeperl ppm "WWW::Myspace"」
上から2番目ぐらい。
0939デフォルトの名無しさん
2008/04/14(月) 23:04:20サンクス、今ようやくインストールできました。
デフォルト以外のレポジトリーを登録できることを知りませんでした。
0940デフォルトの名無しさん
2008/04/14(月) 23:22:49って落ちてる?
それとも場所変わった?
CPANで繋がらないんだが・・・
0941デフォルトの名無しさん
2008/04/15(火) 11:13:49yum install db4-devel
でやって美奈代
0942デフォルトの名無しさん
2008/04/15(火) 11:46:030943デフォルトの名無しさん
2008/04/15(火) 11:59:000944デフォルトの名無しさん
2008/04/15(火) 12:00:190945デフォルトの名無しさん
2008/04/15(火) 12:24:210946デフォルトの名無しさん
2008/04/15(火) 12:55:220947デフォルトの名無しさん
2008/04/15(火) 14:28:05マニュアルをも読まない質問者が増大する。
0948デフォルトの名無しさん
2008/04/15(火) 18:11:240949デフォルトの名無しさん
2008/04/15(火) 18:23:250950デフォルトの名無しさん
2008/04/15(火) 19:03:12Jcode::convert(\$line, 'euc', 'utf8');
とEUCに変換すると「?」になってしまいます。
(Jcode.pm 0.88と2.06)
文字化けせずに簡単に変換する方法はありますでしょうか?
0951デフォルトの名無しさん
2008/04/15(火) 20:43:570952デフォルトの名無しさん
2008/04/15(火) 21:06:10再帰+utf8文字列でのtr///(=S_do_trans_simple_utf8が呼ばれる)で落ちるみたい。
再帰前にtr///が実行されるかどうかは無関係だし、再帰前のtr///も普通に成功した。
手持ちの奴だと
○ ActivePerl 5.8.7.813
○ ActivePerl 5.8.8.816
○ ActivePerl 5.8.8.820 2007/01/23
× ActivePerl 5.8.8.822 2007/07/31
× ActivePerl 5.10.0.1001
という感じ。
use utf8;
sub foo {
&foo(0) if $_[0] == 2;
print STDERR "1\n";
tr/あ/A/; # 要utf8
print STDERR "2\n";
&foo(0) if $_[0] == 1;
}
$_='bar'; # $_ = '' にして実行時にdo_transから直にリターンさせると落ちない。
&foo(1); #
0953デフォルトの名無しさん
2008/04/15(火) 22:05:40use Unicode::Japanese;
0955デフォルトの名無しさん
2008/04/16(水) 10:48:52eucじゃなくてeucjpmsで変換すれば大丈夫。
(sjisじゃなくてcp932使うのと一緒)
dankogaiはJcodeの修正してくれないみたいだしなぁ。
0956928
2008/04/16(水) 20:07:49わざわざご検証いただき、ありがとうございます。
ひょんなことからWebprog板のほうでいくつかレス頂いたのですが、
さすがにperのl内部関数のことまではわかりませんでした。
> $_='bar'; # $_ = '' にして実行時にdo_transから直にリターンさせると落ちない。
この部分ですが、変換対象($_)が未定義ないし空文字の場合には、
tr///自体が呼ばれない(呼ばれてもなにもしない)ので落ちないとゆう理解でよろしいでしょうか?
あと、再帰しない時と再帰した時で呼ばれる内部関数が異なってるとゆうことですね。
向こうにも書き込みましたが、新buildや、5.10などでfixされているとゆうことは、落ちるのが正常で
落ちないほうがなんらかの不具合が生ずる(から修正された)と考えて、
上記のようなコードを書かないようにしないといけませんね。
0957デフォルトの名無しさん
2008/04/16(水) 21:22:45以下のようなHTMLをはき出すcgiで
"a"の部分をxという変数にしたいんですが
cgi内ではどういう風に記述すればよいのでしょうか?
<input value="a">
0958デフォルトの名無しさん
2008/04/16(水) 21:45:460959809
2008/04/17(木) 08:17:31db4-develのrpmが入ってないって事だったんだですね。
やっと今日理解しました。
もう少し詳しく説明してくれるとうれしかった…。
親切なんだか、不親切なんだか。
でもありがとうございました!
ところで、rpmでperlモジュールを入れた場合と、
cpanでモジュールを入れた場合と、何か違いが
出てくるんでしょうか?
0960デフォルトの名無しさん
2008/04/17(木) 13:23:310961デフォルトの名無しさん
2008/04/17(木) 14:23:25rpmなら依存関係チェックしてくれるから必要なものがわかる。
rpmならyum等を使ってれば一緒にinstallしてくれる。
*-develパッケージはコンパイルするときに必要なだけなのでrpmならいらない。
rpmならコンパイルエラーを見なくて済む。
ってことで、>>959見たいにエラーがでても理解しようとしない人は
コンパイルはせずrpmでの解決したほうがいい。
そもそもCentOSやRHEL使うなら、手動でinstallは最終手段。
(開発グループいれないとgccが入らない事からも判るとおり)
0962デフォルトの名無しさん
2008/04/17(木) 14:42:210963809,959
2008/04/17(木) 15:04:56ありがとう。
perlは門外漢だからみなさんを頼ったわけで…。
なんか引っかかるコメントけど。。。
これからはyumでやりますわ。
要はいっしょってことね。
0964デフォルトの名無しさん
2008/04/17(木) 15:13:120965デフォルトの名無しさん
2008/04/17(木) 18:23:10お前の不親切極まりない質問の結果だ。
0966デフォルトの名無しさん
2008/04/17(木) 18:56:48社会の理不尽さと厳しさに順応出来ない奴。
駄目新人より使える場合が多いんだけど扱いにくい
0967デフォルトの名無しさん
2008/04/17(木) 19:49:51君のエラーメッセージの中にウィルス特有のメッセが
出てたんで教えようかとおもったけどもう教えてやらね
0968デフォルトの名無しさん
2008/04/17(木) 21:56:55yum search したら perl-CGI-Ex と perl-CGI-Simple の2つが出てきたんだけど、
cpan で install CGI をした時と同じモノをインストールしたいんだけどさ、
どちらを使えばいいのだろうか???
0969デフォルトの名無しさん
2008/04/17(木) 22:07:070970デフォルトの名無しさん
2008/04/17(木) 22:16:46以下のコードをperl -w でチェックすると、
printMsg()中で使われている$MESSAGEが未初期化と言われてしまいます。
モジュール中で使う変数を持つにはどのようにすればいいんでしょうか?
------------------------------------------
#!/usr/bin/perl
package Module001;
use strict;
# 定数
my $MESSAGE = "Message1";
# メッセージ表示
sub printMsg{
print "printMsg_" . $MESSAGE;
}
# モジュール初期化
BEGIN{
printMsg();
}
------------------------------------------
0971デフォルトの名無しさん
2008/04/17(木) 22:22:430972デフォルトの名無しさん
2008/04/17(木) 22:35:180973デフォルトの名無しさん
2008/04/17(木) 22:42:08いや、CentOS5.1には入ってないよ。
いつも cpan で install CGI してたんだけど、
「サーバの応答にエラーがあるので、接続を終了します」
で cpan に繋がらないのさ。
んで、cpan に愛想尽きて rpm にしようと思ったんだけど。
0974デフォルトの名無しさん
2008/04/17(木) 22:50:00CentOS の事情はよく知らないんだけど(ホントに CGI.pm がない?)
別の CPAN ミラーも試してみた?先々困るでしょ。
0975デフォルトの名無しさん
2008/04/17(木) 22:52:27・参考サイト
http://safe-linux.homeip.net/seo/htmllint-05.html
こんな記載を見っけたんだけどさ。
いつも cpan からインストールできていたのは、
アップデートしてただけかもしれん。
ちょっとプログラム書いて試してくる。
0976デフォルトの名無しさん
2008/04/17(木) 22:56:26% pwd
/usr/lib/perl5/5.8.8
% ll | grep CGI
-rw-r--r-- 1 root root 242240 11月 8 20:59 CGI.pm
大変失礼した^^;
聞く前に、ググル前に、足元みるべきだったな。
大変申し訳ない^^;;;;
でも、ありがとう!
0977970
2008/04/17(木) 23:03:39変数への初期値がBEGIN実行段階では入らないんですね。
どうもありがとうございました。
0978デフォルトの名無しさん
2008/04/18(金) 00:58:02次の考えで問題ないか教えてください。
(perlはこれからはじめるために、今資料を読んでる程度のレベルです。)
localtime関数とtime関数を用い、
localtime(time)関数で、ある程度わかりやすい日付を得ることができると思います。
timeの出力値ですが、一日前の曜日を得たい場合、60秒×60分×24時間の86400を引いた数値を
localtime(time-86400)として設定すると、
出力値には、前日の曜日を示す値があると思いました。
こういった形で、一日前の場合の日付取得など行いたい
(ツイタチの前の日は、何日か不明のため)のですが、考え方は間違えていないでしょうか。
御指摘のほどよろしく願います。
今から、perl環境のために今Linuxインストール中なので、試せるまで少し時間かかります。
その後、試してみます。眠い…。
0979デフォルトの名無しさん
2008/04/18(金) 02:02:11無意味な質問は控えた方がいいよ
0980デフォルトの名無しさん
2008/04/18(金) 02:17:43今の日本だったらそれでOK。サマータイムがある所だとそれではNG。
0981952
2008/04/18(金) 19:15:57現状での対応は危なそうな記述を避ける事だけど、バグレポートは送った方がよさそう。
utf8とtr///が関係している修正に
#41124: Unicode tr/// Fails Inside of ithreads
http://rt.perl.org/rt3/Public/Bug/Display.html?id=41124
というのがあって、今のところ
29765 make tr/// threadsafe by moving swash into pad
29711 allocate op_pv strings from shared mem pool
29731 [PATCH] Change #29711 broke tr//c on Win32.
というPATCHがあり、ActivePerlだとbuild 822以降で取り込まれているから。
一応、ワンライナー化した現象再現用コード
perl -le 'sub foo { $_=q/1/; print; tr/\x{100}/X/; print q/2/; &foo(1) unless @_ }; &foo();'
無名関数内からその関数の外で宣言されたmy変数を使った関数呼び出しの記述があっても落ちた。
perl -le 'my $foo; $a=sub { $_=q/1/; print; tr/\x{100}/X/; print q/2/; &$foo(1) unless @_ }; &$a();'
0982950
2008/04/18(金) 21:01:19チェックもせずに食わせたら処理がミスっていたorz
0983デフォルトの名無しさん
2008/04/19(土) 00:18:33手続きの引数に、それを渡して、呼び出し先で配列の要素のメンバに、
データベースから検索した値を書き込みたいのにな。今はわからんから、
仕方が無いので、メンバ分をそれぞれ別々の配列を用意して代用してる。
他の言語で次の例のようにできればいいのに。
Option Explicit
Type record
number As Integer
name As String
End Type
Sub Main()
Dim rec(2) As record, i As Integer
Example rec()
For i = 0 To 2
Debug.Print i, rec(i).number, rec(i).name
Next i
End Sub
Private Sub Example(rec() As record)
rec(0).number = 1
rec(0).name = "name1"
rec(1).number = 2
rec(1).name = "name2"
rec(2).number = 3
rec(2).name = "name3"
End Sub
0984デフォルトの名無しさん
2008/04/19(土) 00:28:210985デフォルトの名無しさん
2008/04/19(土) 00:31:330986デフォルトの名無しさん
2008/04/19(土) 00:37:480988デフォルトの名無しさん
2008/04/20(日) 00:45:40どんなことがありますか?
0989デフォルトの名無しさん
2008/04/20(日) 00:46:210990デフォルトの名無しさん
2008/04/20(日) 00:52:00・エロの収集
・連番の振り直し
この辺か。
0991デフォルトの名無しさん
2008/04/20(日) 04:47:45テキストファイルの全行を読み込む処理を行ってるんでしょうか。
そうだとしたら、もっと処理の少ない方法はないでしょうか。
use IO::File;
sub getlastline ($) {
my ($filename) = @_;
my $io = IO::File->new( $filename, '<' );
my $last = ($io->getlines)[-1];
$io->close;
$last;
}
ファイルの行が固定長なら $io->seek(-n, 2) すればいいわけですが、
行の長さはわからない場合です。
0992デフォルトの名無しさん
2008/04/20(日) 07:16:30末尾から適当なサイズ毎に読み込んで改行を探せよ。
0993デフォルトの名無しさん
2008/04/20(日) 10:59:45#おれもその目的で使用してる。
0994デフォルトの名無しさん
2008/04/20(日) 11:44:410995デフォルトの名無しさん
2008/04/20(日) 12:27:39こんな感じの掲示板とかでよくあるログファイルがあるんですがこれをnoでソート、idでソートといったようにソートするにはどうすればいいんですか?
例
5<>3<>4<>2<>
1<>2<>5<>4<>
3<>1<>2<>5<>
↓noでソート
1<>2<>5<>4<>
3<>1<>2<>5<>
5<>3<>4<>2<>
0996デフォルトの名無しさん
2008/04/20(日) 13:10:170997デフォルトの名無しさん
2008/04/20(日) 13:10:59っ[シュワルツ変換]
0998デフォルトの名無しさん
2008/04/20(日) 13:12:595<>3<>4<>2<>
1<>2<>5<>4<>
3<>1<>2<>5<>
↓
1<>3<>4<>2<>
3<>2<>5<>4<>
5<>1<>2<>5<>
こんな感じになっちゃうんです
0999デフォルトの名無しさん
2008/04/20(日) 13:15:473引数のsort使えばいいよ。
1000デフォルトの名無しさん
2008/04/20(日) 13:16:2010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。