Perlについての質問箱 35箱目
レス数が1000を超えています。これ以上書き込みはできません。
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 http://pc11.2ch.net/php/ )
CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2008/04/20 現在の最新版: 5.10.0
● 2008/04/20 現在の開発版: 5.9.5
▼ 前スレ
Perlについての質問箱 34箱目
http://pc11.2ch.net/test/read.cgi/tech/1199977642/
[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/books/detail/4-7561-3057-7.shtml (修正)
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi (停止中)
perldoc.jp: ttp://www.perldoc.jp/
perldoc.com: ttp://www.perldoc.com/
[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl 5.8 Unicodeメモ]
http://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
[過去スレ1]
1 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/ (事故により消滅)
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/ (事故により消滅)
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/
[過去スレ2]
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/
34 ttp://pc11.2ch.net/test/read.cgi/tech/1199977642/
テンプレは以上だと思います。
0007デフォルトの名無しさん
2008/04/20(日) 17:37:300008デフォルトの名無しさん
2008/04/20(日) 21:59:210009デフォルトの名無しさん
2008/04/20(日) 22:05:440010デフォルトの名無しさん
2008/04/20(日) 23:21:250011デフォルトの名無しさん
2008/04/21(月) 00:34:060012デフォルトの名無しさん
2008/04/21(月) 01:04:514時間ほどで作りました
0014デフォルトの名無しさん
2008/04/21(月) 07:15:160015デフォルトの名無しさん
2008/04/21(月) 18:03:48perlrunやperlcompile見ても
-MO そのものの説明は全然のってないんですが
0017デフォルトの名無しさん
2008/04/21(月) 18:30:530018デフォルトの名無しさん
2008/04/21(月) 18:35:21perldoc B::Deparse
なんだなこれが。
001917
2008/04/21(月) 18:45:42「-MO=Hoge すると B::Hoge が、だな」とか書かれてたはずだからいいか、と
思い込んでみました。
0020l15
2008/04/21(月) 18:48:58perlccで使えるモジュールみたいなもの(B::x)をperlコマンドから参照するアダプタモジュールが
Oっていう名前でそれを-Mオプションでuseしていると理解しました
=...はOモジュールのオプションですね
道理で-MOで幾ら探してもでてこないわけだ…orz
002118
2008/04/21(月) 18:51:16きちんと読みゃ問題ないんだが、オレはハマったw
0022デフォルトの名無しさん
2008/04/21(月) 18:52:54>>21は>>19へのレス。
use utf8;
sub スイーツ {
my $argument = shift; utf8::encode($argument);
my($package, $routine) = (caller 0)[0, 3];
{
no utf8;
$routine =~ s/\Q$package\E:://;
printf("%s(%s)", $routine, $argument);
}
}
スイーツ(笑)
__END__
http://codepad.org/1jJzeCja
スイーツ関数出来たよー
0024デフォルトの名無しさん
2008/04/25(金) 10:46:58と同等のことをする Perl モジュールはあるでしょうか?
なるべく、
while (<FH>){print;}
の繰り返しを避けたいのですが。
それとも
(open FH, "cat a.txt b.txt c.txt |");
のようにするのでしょうか。
0025デフォルトの名無しさん
2008/04/25(金) 12:35:24perl -ne print a.txt b.txt c.txt > d.txt
0026デフォルトの名無しさん
2008/04/25(金) 12:38:26ttp://search.cpan.org/~dconway/Perl6-Slurp-0.03/Slurp.pm
print slurp $_ for @files;
とかでできるんじゃね?
ってか何がやりたいの? なんで繰り返しを避けたいの?
質問するときはそれを書くようにしましょう。
0027デフォルトの名無しさん
2008/04/25(金) 12:39:13どうもありがとうございます。
言葉が足りなくて申し訳ありません。
実はコマンドラインでなく、スクリプトの中で実行したいのです。
002824
2008/04/25(金) 12:47:18どうもありがとうございます。
ご紹介の Slurp.pm を使用してみます。
while (<FH>){print;} の繰り返しを避けたいのは、何度も同じ作業をする予定なので、
while (<FH>){print;} をファイルの数だけループさせる以外にもっといい方法があればと思いまして。
シェルスクリプトでやっていたことを Perl スクリプトで実行したいところなので
発想がシェルからなのです。
他には、 comm や sort に対応するモジュールを使ってみようかと。
0029デフォルトの名無しさん
2008/04/25(金) 12:50:08cat.pl
---- ここから---
#!/usr/bin/perl -n
print;
---- ここまで---
コマンド行:
cat.pl a.txt b.txt c.txt > d.txt
要するに
while(<>)
と
while(<STDIN>)
は違いますよって事だな
003024
2008/04/25(金) 13:16:10たびたびありがとうございます。
本当に言葉が足りなくて、ごめんなさい。
コマンドラインで a.txt b.txt c.txt を指定するのでなく、
スクリプト内で File:Find を駆使して、a.txt 他を探すつもりでした。
0031デフォルトの名無しさん
2008/04/25(金) 21:43:46print while <ARGV>;
0032デフォルトの名無しさん
2008/04/26(土) 04:06:080033デフォルトの名無しさん
2008/04/26(土) 23:14:27テキストファイル内の特定の文字列を検索して、
1.検索結果の『前』『後』の行に、任意の文字列を『追加』する、
2.検索結果の行を、任意に編集する
ということを行いたいのですが、
openしたファイルを直接書き換えることはできるのでしょうか?
一度、別のファイルを作成して、
元を削除して、
作成したファイルをリネームするのではなく、
直接編集できないのかなと思いました。
あと、上記の『1』について、
ファイル内の先頭から検索して、
はじめにマッチする場所へポインタを移動する関数って標準にはないでしょうか?
今は先頭からゴリ押しで探しているので、格好悪いです…。
0034デフォルトの名無しさん
2008/04/27(日) 01:04:42書き換えは普通にできる。
だが危険だぞ。
0035デフォルトの名無しさん
2008/04/27(日) 12:55:49perl の FillInForm というモジュールを使いたいのだけど
利用しているレンタル鯖(さくら)には入ってないようです。
同じ処理が出来るモジュールなどを教えてもらえないでしょうか。
やりたい事は、
「入力画面からの入力値をチェックし、
不足があれば、入力値を保ったまま入力画面を再表示する」
というものです。この「入力値を保ったまま」というのに
FillInForm を使いたいと考えています。
select や radio の値復帰を
FillInForm で出来るという記事を見かけたので
使おうと思いましたが、
別にこれにこだわっているわけではないので、出来ればなんでもいいです。
管理者権限がなく、インストールなどは出来ないので
.pm の 1 ファイルだけ置いて、require して使えるようなモジュールだとより助かります。
(FillInForm も試してみたのですが上手くいかず……)
0036デフォルトの名無しさん
2008/04/27(日) 12:58:23use lib '.';
とかでいいだろう。
0037デフォルトの名無しさん
2008/04/27(日) 13:01:290038デフォルトの名無しさん
2008/04/27(日) 13:11:49>>36
そういう書き方が出来るんですね、なるほど。
今回は残念ながら、FillInFomr のソースを見たところ、
require 5.005;
なんて記述があり、自分では依存先ファイルの全貌がつかめませんでした…。
>>37
試してみます。
0039デフォルトの名無しさん
2008/04/27(日) 16:03:15そのrequireは単なるバージョン制限だ。5.005未満の環境だと、そこで強制終了。
0040デフォルトの名無しさん
2008/04/27(日) 16:34:19環境変数設定するんですが、パスこれであってますでしょうか?
c:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin\perl.exe
0041デフォルトの名無しさん
2008/04/27(日) 16:56:43C:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin
と打ってみてその中に perl.exe さんがいるのなら、↑こう。
環境変数 PATH の設定なんだから最後の \perl.exe 要らない。
でも、Windows環境だと C:\Perl\bin 辺りに perl.exe さんがいる
状態にする人のほうが多いので、どこに perl.exe さんがいるのか
きちんと確認してください。
0042デフォルトの名無しさん
2008/04/27(日) 17:11:180043デフォルトの名無しさん
2008/04/27(日) 21:01:48すみません、CGI::Ex::Fill を入れようとしたのですが
うまくソースを読み込めていないようで、
関数を呼び出すと
Undefined subroutine &main::form_fill
となります。
やったことは、サイトから落としたソースを Fill.pm として ./lib にアップ、
use lib qw(./lib);
でその読み込み、
form_fill($html, $query);
の呼び出し、の 3 点です。
form_fill の1行をコメントアウトすると、もちろん値は復帰しませんが正常に動きます。
(なので、use lib qw(./lib); も少なくともエラーにはなっていないようです)
問題点の心当たりのある方がいたら教えてください。
0044デフォルトの名無しさん
2008/04/27(日) 21:17:37変数がクソだと思いました
Cをやりたいです
配属先でぱーるなんてやらせるのがイヤです
こんなクソ言語
先の無い言語
rubyやPythonやPHPやSQLみたいなオサレなのをやらせてください
COBOLとかFortlanみたいなもんと同じじゃないんですか?ぱーるって
0045デフォルトの名無しさん
2008/04/27(日) 21:23:45公式サイトの説明での読み込み方が、
use CGI::Ex::Fill qw(form_fill fill);
となっているので、ひょっとしたら use の読み込みの際、
読み込む関数を指定する必要があるのか考えています。
ただ、use lib qw(./lib) で、読み込み方を指定する方法がわからず試せていません。
全く的外れかもしれませんが、自分で思いつく問題点はそれぐらいです。
0046デフォルトの名無しさん
2008/04/27(日) 21:42:33インストールしてない
読み込んでない
0047デフォルトの名無しさん
2008/04/27(日) 21:57:54CGI::Ex::Fill::form_fill($html, $query);
じゃダメなのか?
0048デフォルトの名無しさん
2008/04/27(日) 22:05:40上にも書いている通り、ファイルを置いて use しているだけなので
インストールしてないというのは、その通りだと思います。
>>43に書いた通りには読み込み処理を書いているので
まさにそれで読み込めない理由が知りたいです。
>>47
ダメでした。同様に
Undefined subroutine &CGI::Ex::Fill::form_fill
となりました。
0049デフォルトの名無しさん
2008/04/27(日) 22:13:440050デフォルトの名無しさん
2008/04/27(日) 22:21:090051デフォルトの名無しさん
2008/04/27(日) 22:42:16なるほど! わかりました。
use lib でパスを通した後で、
改めて use CGI::Ex::Fill qw(form_fill fill); を行う必要があったんですね。
Fill.pm の置き場所を ./lib/CGI/Ex/Fill.pm に変更し、use したところ
まだ値は復帰しませんが、とにかく form_fill は通るようになりました。
ありがとうございました。
0052デフォルトの名無しさん
2008/04/27(日) 23:52:550053デフォルトの名無しさん
2008/04/28(月) 03:02:57| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ / コイツ最高のアホ!
彡、 |∪| ,/
/__ ヽノ /´
(___) /
0054デフォルトの名無しさん
2008/05/01(木) 00:19:43| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ / コイツ最高のアホ!
彡、 |∪| ,/
/__ ヽノ /´
(___) /
0055デフォルトの名無しさん
2008/05/01(木) 02:11:38Template Toolkit でファイルの存在判定ってできるんでしょうか?
例えばあるテンプレート内で
[% INCLUDE hoge.tt %]
を使って異なるディレクトリにあるファイルを include させたいのですが、
実際に hoge.tt が存在しない時は、"file not found"にて処理が失敗しています。
今作ってる仕組み上、hoge.tt は時と場合に応じて有ったり無かったりするので、
ファイルが無いときは、include させない制御をテンプレートのみで実装したいのです。
お願いします。
0056デフォルトの名無しさん
2008/05/01(木) 07:35:17ここの「例外処理、フロー制御」の項読めば?
ttp://www.hakoniwa.net/tt/
0057デフォルトの名無しさん
2008/05/01(木) 13:12:30ありがとうございます。
まさにそのままでしたね。
どんだけ視野狭いんだ俺。
0058デフォルトの名無しさん
2008/05/02(金) 03:25:33例えばperlから、
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard51.htm
のサンプルで作成したMyLibrary.dllの関数の"Add","Total"等を
使用する場合、次のような書き方では、Died となってしまいます。
どなたかご教授お願いします。
use Win32::API;
$Add = new Win32::API( "MyLibrary.dll", "Add", [N], "N") || die;
$Total = new Win32::API( "MyLibrary.dll", "Total", [], "N") || die;
<結果>
Died at D:\work\DLL_Access.pl line 27, <DATA> line 164.
0059デフォルトの名無しさん
2008/05/02(金) 14:16:23HTTP/1.0 で通信したい場合どう指定すればいいか分かりますか?
0060デフォルトの名無しさん
2008/05/02(金) 19:07:41環境変数PERL_LWP_USE_HTTP_10をセットする。
0061デフォルトの名無しさん
2008/05/05(月) 12:28:42以下のように記述すると、管理人である自分には登録メールが送られますが、
管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。
#Sendmailによる送信処理
if (open(MAIL,"| $sendmail -t")){
print MAIL "X-Mailer:legend2\n";
print MAIL "To: $administrator\n";
print MAIL "Errors-To: $administrator\n";
print MAIL "From: $administrator\n";
print MAIL "Subject: $subject\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$mail_comment\n";
print MAIL "\n";
close(MAIL);
}
}
以下のどれかを使うのでしょうか?
print SENDMAIL "From: $sender <$from>\n";
print SENDMAIL "To: $to\n";
print SENDMAIL "Cc: $cc\n";
print SENDMAIL "Bcc: $bcc\n";
どうすれば良いか御教授下さい。宜しくお願いします。
0062デフォルトの名無しさん
2008/05/05(月) 13:30:13>>1
0063デフォルトの名無しさん
2008/05/06(火) 12:23:32知らないなら出しゃばるなよ
0064デフォルトの名無しさん
2008/05/06(火) 13:31:21>>1
純粋な Perl の質問なら
標準モジュールの
Net::SMTP 使って質問しろ
0066デフォルトの名無しさん
2008/05/06(火) 13:49:560067デフォルトの名無しさん
2008/05/06(火) 14:41:58webprogはエスパーが多いのか。
0068デフォルトの名無しさん
2008/05/06(火) 15:51:470069デフォルトの名無しさん
2008/05/06(火) 16:00:050070デフォルトの名無しさん
2008/05/06(火) 16:01:24> こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。
その通りなので、最初からあちらへ行ってください。
0071デフォルトの名無しさん
2008/05/06(火) 16:29:08「&jcode'convert(*value, 'sjis', 'euc') の *value って何ですか?」
「&ReadParse(*in) の *in って何ですか?」
「open() or &error("読み込みエラー") で読み込みエラーが表示されて困っています」
「エラーメッセージは 500 Internal Server Error です」
任務が厳しくて鍛えられてしまうんです。
0072デフォルトの名無しさん
2008/05/06(火) 18:18:54それはそうと、未だにjcode.plつかってるのが出回ってるのかね。
0073デフォルトの名無しさん
2008/05/06(火) 18:28:12わざわざ労力をかけてコードを書き直す価値が無いんだよ。
過去の古い資産をそのまま使うのでじゅうぶん。
0074デフォルトの名無しさん
2008/05/06(火) 19:26:17グロブはあまり使わなくなっちまったなあ。
0075デフォルトの名無しさん
2008/05/06(火) 22:59:140076デフォルトの名無しさん
2008/05/07(水) 11:44:340077デフォルトの名無しさん
2008/05/07(水) 20:09:070078デフォルトの名無しさん
2008/05/08(木) 06:57:50動かしたユーザーのidを取得するにはどうしたらいい?
スクリプトの使用制限をはかりたい。
0079デフォルトの名無しさん
2008/05/08(木) 08:26:58$<
manくらい嫁。
0080デフォルトの名無しさん
2008/05/08(木) 13:05:01コピーされて無効化されるぞ。
0081デフォルトの名無しさん
2008/05/08(木) 20:53:48テキストファイルの中から、
hoge
を含む行を検索して、
その行をprintしたいのですけど、
一行一行読み込んで、パターンマッチして、真であれば、printする、
という方法以外に、何か方法ありますか?
(perlはテキスト処理が得意と訊いたのですが、『一行一行読み込んで』のステップがプログラムで必要か気になりました。)
ところで、cygwinでperlをはじめたのですが、何か気をつけることはありますか?
0082デフォルトの名無しさん
2008/05/08(木) 20:54:34全く意味ないけど。
0083デフォルトの名無しさん
2008/05/08(木) 21:51:51perl -ne '/パターン/ && print' <file
008481
2008/05/08(木) 22:37:56さっぱりわからないので、教わったことをキーワードに調べてみます。
また、御願いします。
0085デフォルトの名無しさん
2008/05/09(金) 16:18:45そういう事のためにあるのが、grep
0086デフォルトの名無しさん
2008/05/09(金) 18:25:100087デフォルトの名無しさん
2008/05/09(金) 18:32:04なんて知らないんじゃないのかな。
0088デフォルトの名無しさん
2008/05/10(土) 14:33:02状況:ユーザから入力された検索文字列の正規表現が不正であると、プログラムが
終了してします。 (invalid regular expression at * )
$search_string に格納された文字列が正規表現として有効であるかを、
eval を使って事前に評価したいのですが、どうしたら良いのでしょう?
if (eval (m/$search_string/)) ? これだと常に true が帰ってしまいます。
エロい人、教えてください。
0089デフォルトの名無しさん
2008/05/10(土) 14:49:046.11 パターンが有効かどうか検証する
0090デフォルトの名無しさん
2008/05/10(土) 15:12:190091デフォルトの名無しさん
2008/05/10(土) 15:52:18エロイ人への質問はhttp://venus.bbspink.com/hneta/でしなさい。
009288
2008/05/10(土) 16:16:44ありがとう。正規表現の箇所は全部呼んだつもりだったのに。。。
解法(p.254):
eval { ""=~ /$search_string/ };
warn "パターンが無効 $@" if $@;
>>91
性器表現に困ったときはそうします。ありがとうございました。
0093デフォルトの名無しさん
2008/05/10(土) 19:00:21読み出しはできるのですが、テキスト編集を受け付けてくれません。
下記のようなソースで、「ABC」→「abc」としたいのですが、元の「abc」のまま出力されてしまいます。
どのようにしたらよいでしょうか?
WindowsXP SP2上で、ActivePerl 5.10と、5.8.8で試してみました。
-------------------
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';
$word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit') || die;
$doc = $word->Documents->Open( 'test.doc' ) || die;
$paras = $doc->Paragraphs;
foreach (in $paras){
$_->Range->{'Text'} =~ tr/A-Z/a-z/;
print $_->Range->{'Text'}."\n";
}
$doc->Close( 0 );
-------------------
0094デフォルトの名無しさん
2008/05/10(土) 22:36:57#!/usr/bin/perl
print "Location: http://*****\n\n";
これに転送するまでHTMLの<meta content="x">みたいに
一定時間ウェイトかける事って出来るのでしょうか?
0095デフォルトの名無しさん
2008/05/10(土) 22:55:030096デフォルトの名無しさん
2008/05/10(土) 23:04:42>>1
0097デフォルトの名無しさん
2008/05/11(日) 02:50:29できなくはないがやるな。
それと>>1
0098デフォルトの名無しさん
2008/05/11(日) 12:59:1801 や 11 などの文字列を数値に変換するにはどうすればいいの?
009998
2008/05/11(日) 13:26:41他のスクリプト同様 -0 でよかったのかw
0100デフォルトの名無しさん
2008/05/11(日) 14:17:200101デフォルトの名無しさん
2008/05/12(月) 21:23:54|-foo.pm
|-data/data1
こんな感じのフォルダ構造になってて、foo.pmの中からdata1を相対参照したいのです。
0102デフォルトの名無しさん
2008/05/12(月) 21:31:33最初の一回だけ読み込む方法とかありませんか?
0103デフォルトの名無しさん
2008/05/12(月) 22:57:050104デフォルトの名無しさん
2008/05/12(月) 23:35:050105デフォルトの名無しさん
2008/05/13(火) 00:00:09有難うございました。fastcgiを調べてみます。
0106デフォルトの名無しさん
2008/05/13(火) 00:14:04Speedy-CGI
0107デフォルトの名無しさん
2008/05/13(火) 00:18:380108デフォルトの名無しさん
2008/05/13(火) 00:36:370109デフォルトの名無しさん
2008/05/13(火) 00:37:570110デフォルトの名無しさん
2008/05/13(火) 13:52:10package number;
sub get_codeNumber(){
my $number = 1;
if ($number > 0){
print "0より大です。";
}else{
print "0以下です。";
}
}
このplをローカルで実行しても何もコンソールに表示されません。
これをコンソールに表示するには、どうしたらよいのでしょうか。教えて下さい。
0111デフォルトの名無しさん
2008/05/13(火) 13:56:45そんな断片だけ書かれていては釣りだとしか思えない
0112デフォルトの名無しさん
2008/05/13(火) 14:03:43サブルーチンの中身をデバッグしたいのです。
0113デフォルトの名無しさん
2008/05/13(火) 14:13:19問題がサブルーチン内にあるとわかっているのですか?
0114デフォルトの名無しさん
2008/05/13(火) 14:20:44いいえ。perlの仕事がはじめてなのですが、
渡されたサブルーチンが仕様通りに動いているかを自分で確認したくて書き込みました。
Javaでいうと、
public class hoge1{
System.out.println("0より大です。");
}
public class hoge2{
System.out.println("0以下です。");
}
のような確認をしたかったのですが、おかしいでしょうか。
0115デフォルトの名無しさん
2008/05/13(火) 14:24:250116デフォルトの名無しさん
2008/05/13(火) 14:30:44ごめん,俺に理解力がないせいか何をしたいのかがよくわからない.
もうちょっと詳しく説明してくれたら助かるんだが.
0117デフォルトの名無しさん
2008/05/13(火) 14:42:28お待ち下さい。
0118デフォルトの名無しさん
2008/05/13(火) 14:42:50#sub get_codeNumber(){
my $number = 1;
if ($number > 0){
print "0より大です。";
}else{
print "0以下です。";
}
#}
0119デフォルトの名無しさん
2008/05/13(火) 14:55:04単純に改行が入ってないからとか
stdout が flush されてないからとか
じゃないよね?
0120デフォルトの名無しさん
2008/05/13(火) 14:58:480121デフォルトの名無しさん
2008/05/13(火) 15:05:45package torikomi;
#戻り値:String(分類コード)
sub get_code(){
($organizationcode,$sectioncode,$itemcode) = @_;
$itemcode = "999999";
my $i1cd ="";
my $i2cd ="";
my $i4cd ="";
$i1cd=substr($itemcode,0,1);
$i2cd=substr($itemcode,0,2);
$i4cd=substr($itemcode,0,4);
if($itemcode eq "000000"){
return "A00";
}
if( $itemcode eq "999999" ){
return "Z00";
}
}
このperlが、きちんとA00やZ00を返しているかを確認したいのです。
0122デフォルトの名無しさん
2008/05/13(火) 15:11:54それを呼び出す側とか、実行している環境とかの詳細を書けって話だと思うよ。
0123デフォルトの名無しさん
2008/05/13(火) 15:37:020124デフォルトの名無しさん
2008/05/13(火) 17:03:191つのデータを複数に分割して、それぞれをgnuplotで
表示しようとしているのですが、実行すると
gnuplot> 'plot './X1.txt' using 1:2 w l 1'
^
line 0: invalid command
という風なエラーが分割したデータ全てに対して出ます。
(X1.txtというのが分割したデータの1つです。)
分割まではうまくいっているので、gnuplotの部分で問題があると思うのですが、
わかる方がいましたらよろしくお願いします。
gnuplotの部分のプログラムは以下のような感じです。
for( $j = 0 ; $j < 10 ; $j++ ){
open ( GP "| gnuplot -persist" )
or die "no gnuplot";
print GP "set term postscript color 20\n" ;
print GP "set output './X1.eps\n'" ;
print GP "plot './X1.txt' using 1:2 w l 1\n" ;
close GP;
}
0125デフォルトの名無しさん
2008/05/13(火) 17:08:42スレ違いだが、、、
w l 1 の「1」って何だ? そんなのあったっけ?
0126124
2008/05/13(火) 17:14:59スレ違いで申し訳ありません。
perlでプログラム書いてたんで、perlのスレで質問した方がいいかなと・・・
「1」はlineの色ですのであまり気にされなくても大丈夫です。
0127デフォルトの名無しさん
2008/05/13(火) 17:20:15色だか線種だかを1に指定ってことだったはず.
>>124
gnuplotに流してるコマンドの最初と最後にいらないシングルクオートが入ってるせいじゃないかな?
このコピーでは問題なさそうだけど,ソースのprint文を確認してみたらいいと思う.
0128デフォルトの名無しさん
2008/05/13(火) 19:57:390129124
2008/05/13(火) 23:28:23124で書いたプログラムの間違いに気づきました。
プログラム中の「X1」は「X${j}」でした。
じゃないと、for文の意味ないですもんね。。。
あと、今自分で間違いに気づきました。
print GP "set output './X1.eps\n'"
じゃなくて、
print GP "set output './X1.eps'\n"
でしたorz
こんな簡単なミスに気づかないとは。。。
大変ご迷惑おかけしました。
0130デフォルトの名無しさん
2008/05/14(水) 00:54:44>このperlが、きちんとA00やZ00を返しているかを確認したいのです。
Test::Base使えば良いじゃん。
0131デフォルトの名無しさん
2008/05/14(水) 02:52:29printf "%x","a"
こんなことやっても上手くいきません
61と表示させたいです
0132デフォルトの名無しさん
2008/05/14(水) 03:04:43これみたら分かりました
0133デフォルトの名無しさん
2008/05/14(水) 03:21:56grep(/$foo/i, @ary);
・ignore caseは使いたい
・$fooは「+」などのデータが含まれており、そのままgrepすると正規表現と解釈されてエラーになる
・正規表現はつかわない
何かよい方法はないでしょうか?
0134デフォルトの名無しさん
2008/05/14(水) 03:32:47quote (disable) pattern metacharactersの出番
0135デフォルトの名無しさん
2008/05/14(水) 03:35:23>>133
\Q quote (disable) pattern metacharactersの出番
0136デフォルトの名無しさん
2008/05/14(水) 04:14:43grep(/\Q$foo\E/i, @ary);
でいけました。ありがとうございます
0137110
2008/05/14(水) 15:58:33相談に乗ってくれた方、ありがとうございました。
0138デフォルトの名無しさん
2008/05/14(水) 23:04:47いろいろやってるんだが、shift-jisの文字の扱いに苦労してる
ひょっとしてPerlでやるのあんま向いてなかったりする?
0139デフォルトの名無しさん
2008/05/14(水) 23:14:210140デフォルトの名無しさん
2008/05/15(木) 19:33:10こんなのを作ってみたのですが
sub cont{print "contents\n";}
sub html{print "<html>\n"; $_[0](); print "</html>\n";}
sub body{print "<body>\n"; $_[0](); print "</body>\n";}
body(\&cont);
html(\&cont);
これを、出力が<html><body>cont</body></html>となるように
呼び出したいのですが可能でしょうか
↓動かないですが、こんな感じのことがやりたいです
1. html(\(body(\&cont));
2. sub f{html(\&&_[0]);} f(\&html);
3. sub g{$f=shift; html(\&f);} g(\&html);
0141デフォルトの名無しさん
2008/05/15(木) 19:43:23こういうことか?
sub cont { print "contents\n"; }
sub html { print "<html>\n"; shift->(); print "</html>\n";}
sub body { print "<body>\n"; shift->(); print "</body>\n";}
html(sub { body(\&cont) } );
0142140
2008/05/15(木) 19:58:140143デフォルトの名無しさん
2008/05/15(木) 20:19:38use warnings;
sub binding{ my($F,@P)=@_;sub{$F->(@P)} }
sub cont {print "contents\n";}
sub html {print "<html>\n"; shift->(); print "</html>\n";}
sub body {print "<body>\n"; shift->(); print "</body>\n";}
sub cont2 {return "contents\n";}
sub html2 {return "<html>\n",shift->(),"</html>\n";}
sub body2 {return "<body>\n",shift->(),"</body>\n";}
html( binding( \&body => \&cont ) );
print html2( binding( \&body2 => \&cont2 ) );
0144デフォルトの名無しさん
2008/05/15(木) 20:21:07日本語フォントをjpg画像で出すサンプルってありませんか。
下のサンプルをmsgothic.ttcに変えて実行したら、
どうやっても・という文字になってしまいます。
http://x68000.q-e-d.net/~68user/webcgi/image-1.html
0146デフォルトの名無しさん
2008/05/15(木) 21:51:34PerlMagickでできるかも。
まー、内部はGDかもしれないから、同じ結果かも知れない。
0147デフォルトの名無しさん
2008/05/15(木) 22:05:34よくわからんが、文字コードの問題とか?
0148デフォルトの名無しさん
2008/05/15(木) 22:32:06utf8か、フォントファイルを絶対パスで指定かな。
Imagerも良いよ。
0149プヨー
2008/05/16(金) 18:03:07遅延評価する仕組みがほしい。
Func1( ...exp1..., ...exp2....);
という呼び出しがある場合、状況に応じて exp1, exp2 の
いずれか一方だけを評価したい。
Func1( sub { ...exp1...}, sub {...exp2...} );
のように無名関数を渡す方法は思いついたが、
記法が簡単でないので、もっと簡単に記述できる方法がいい。
0150デフォルトの名無しさん
2008/05/16(金) 19:09:34Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?
関数を呼んだ時点では、引数の値が決定してないってこと?
そうだとしても、値が決定するまで待つとかすればいいような気がする。
Lispがわからない人でもわかる説明で。
0151プヨー
2008/05/16(金) 19:31:07> Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?
そうなんだけど、
if (,,,) { ... } else {...}
のような定型化した条件文が大量にあるから、きれいじゃないんだよね。
それよりも、単に
Func1( ...exp1..., ...exp2....);
のように書けば一行ですむから、保守性が高くてクールだよね。
> 関数を呼んだ時点では、引数の値が決定してないってこと?
そう。Lisp のマクロというのは、必要に応じて引数を eval するみたいなものだよ。
Lisp のマクロはコードを簡単化するために使われることが多い。
0152デフォルトの名無しさん
2008/05/16(金) 20:02:14sub exp1{ .... }
sub exp2{ .... }
Func1(\&exp1, \&exp2)
でいいんでないの?
0153デフォルトの名無しさん
2008/05/16(金) 20:02:34質問が漠然すぎるんだが、、、
my %hash = (
foo => sub { print "foo\n" ; },
bar => sub { print "bar\n" ; },
);
$hash{foo}->() ;
こう言うこととかしたいのか?
それともif文を三項演算子?
0154デフォルトの名無しさん
2008/05/16(金) 20:04:34sub { } で我慢しろ。どうしても黒魔術を発明したいならソースフィルタを使って何とかすればいい
0155デフォルトの名無しさん
2008/05/16(金) 20:30:18>>149が考えたコードも改行位置ちょっと変えてあげれば複雑にはみえないし
関数を読んだ時点で引数の値が決まってないのは
コードがタコなだけな気がしてならないので
せめて、もう少し具体的に書いてもらえないかな
とりあえずFunc1の中でevalしたいならそうすればいいんじゃ?
Func1(
q(...exp1...),
q(...exp2...)
);
sub Func1 {
my($exp1,$exp2) = @_;
#なんかいろいろ
my $exp = $COND ? $exp1 : $exp2;
eval "$exp";
}
0156デフォルトの名無しさん
2008/05/16(金) 21:45:27クッキーにデータを入れるときエスケープなどの処理をしてから入れたほうがいいのでしょうか?
よろしくお願いします。
0157デフォルトの名無しさん
2008/05/16(金) 23:13:35URLエンコードと同じエスケープがいるよ。
日本語化されたRFCもあるから、読んでみれば?
もっと簡単にやるなら、CGIモジュールに全部任せる。
0158デフォルトの名無しさん
2008/05/16(金) 23:57:48なるほど。クッキーはURLエンコードですか。勉強になりました。
0159デフォルトの名無しさん
2008/05/17(土) 01:38:050160デフォルトの名無しさん
2008/05/17(土) 13:25:57#こんなのがほしい・・
for $i $j(@list @value){print "$i=$j";}
タプルみたいなのがあれば使いたいんですが
やっぱり添え字をインデックスにしてループするしかないんですかね
0161デフォルトの名無しさん
2008/05/17(土) 13:35:43その例でもwhile shiftで事足りるし。
0162デフォルトの名無しさん
2008/05/17(土) 13:40:010163デフォルトの名無しさん
2008/05/17(土) 13:54:110164デフォルトの名無しさん
2008/05/17(土) 13:55:32shiftだとこんな感じでしょうか。
while(@list){print shift @list;print "=";print shift @value;}
これはこれで、短くていいですね。
0165デフォルトの名無しさん
2008/05/17(土) 13:57:380166デフォルトの名無しさん
2008/05/17(土) 14:04:10オブジェクト指向部分はあまりわかってないので後ほど調べてみます。
>>163
sub zipwith{shift->(shift,shift);}こんな感じですかねw
ちゃんと動くかはこれから試してみますが・・
>>164
こっちのが全体的にいいですね、トン
0167デフォルトの名無しさん
2008/05/17(土) 14:38:21@a=qw(a b c);
sub zipwith{($f,$l,$r)=@_;while($i=shift @$l and $j=shift @$r){$f->($i,$j)}}
zipwith(sub{($a,$b)=@_;print "$a=$b\n";},\@a,[1,2,3]);
関数へ複数の配列を渡す際にはリファレンスにしないとだめってのは少し不便ですね
0168デフォルトの名無しさん
2008/05/17(土) 17:31:48カメラ 785円
お菓子 98円
…
という文字列がファイルであるのですが
if(円という文字を含んでいたら)
$temp = "円より前の数字";
という風に文字の抽出を行いたいのですが
正規表現の部分と、抽出の部分がわかりません
ファイルの読み込みから1行だけを取り込むのは出来たのですが
ご指導お願いいたします。
0169デフォルトの名無しさん
2008/05/17(土) 17:55:320170デフォルトの名無しさん
2008/05/17(土) 18:12:270171デフォルトの名無しさん
2008/05/17(土) 18:23:410172デフォルトの名無しさん
2008/05/17(土) 22:31:48open(MAIL, "| /usr/sbin/sendmail -t env_addr") or die $!;
# 中略
close(MAIL) or die $!;
のように、パイプ渡しでopenするとき、closeに失敗するときがあるんですが、このとき
エラーメッセージを捕捉する方法どなたかご存じですか? $!には入ってこないのです。
0173デフォルトの名無しさん
2008/05/17(土) 22:34:32エラーメッセージは何処に出るの? 標準出力ならIPC::Open2, 標準エラー出力ならIPC::Open3参照。
0174デフォルトの名無しさん
2008/05/19(月) 11:53:11$inputfile="test.txt";
open (FILE1, ">>$inputfile") or die "$!";
for ($hoge=0;$hoge<10;$hoge++) {
print FILE1 "$hoge";
sleep(1);
}
close (FILE1);
このプログラムを同時に2つ実行すると、私の予想ではtest.txtの中身は
00112233445566778899
となると思うのですが、なぜかファイルの中身には
01234567890123456789
と出力されます。
perlは排他制御が勝手に行われたりするんでしょうか?
0175デフォルトの名無しさん
2008/05/19(月) 11:54:520176デフォルトの名無しさん
2008/05/19(月) 11:56:39どういうことでしょうか?
もし正しくバッファリングされるのならflockなどの排他制御は不要な気が…。
すいませんがもう少し詳しくお願いします。
0177デフォルトの名無しさん
2008/05/19(月) 12:05:50ちゃんと排他制御しなよ
0178デフォルトの名無しさん
2008/05/19(月) 12:27:500179デフォルトの名無しさん
2008/05/20(火) 19:30:53salt2文字と残り11文字ってことでってますでしょうか。
0180デフォルトの名無しさん
2008/05/20(火) 19:31:580181デフォルトの名無しさん
2008/05/20(火) 20:50:160182デフォルトの名無しさん
2008/05/20(火) 20:53:22高貴な方々は、他人にマニュアルを読ませます。
0183デフォルトの名無しさん
2008/05/20(火) 21:02:570184デフォルトの名無しさん
2008/05/20(火) 23:59:360185デフォルトの名無しさん
2008/05/21(水) 01:05:070186デフォルトの名無しさん
2008/05/21(水) 01:13:28だが、海外にも目を向けるとインプリする人はいっぱいいるから、
そういう志向はありだと思う。
0187デフォルトの名無しさん
2008/05/21(水) 18:46:460188デフォルトの名無しさん
2008/05/21(水) 20:52:090189デフォルトの名無しさん
2008/05/22(木) 01:15:29やり通したのですが、次は何をすべきでしょうか?
perlの機能を覚えただけで実用的な使い方は学べていません。
次は何をしたらいいでしょうか?
0190デフォルトの名無しさん
2008/05/22(木) 01:28:32ファイルの一括処理プログラムとか、板違いではあるがCGIなんかでもいい。
0191デフォルトの名無しさん
2008/05/22(木) 03:09:43てか?
0192デフォルトの名無しさん
2008/05/22(木) 03:15:250193デフォルトの名無しさん
2008/05/22(木) 03:50:29何を作るかは作り手が考えなきゃどうしようもなかろう。
0194デフォルトの名無しさん
2008/05/22(木) 04:11:01適当なフリーのCGI等をダウンロードして
辞書的に使える本(Google先生でもOK)で調べながら
ソースを読んでみる。
ある程度理解できるようになったら、それを少しだけ改造してみる。
これを繰り返すだけでも相当勉強になると思うよ。
0195デフォルトの名無しさん
2008/05/22(木) 09:02:43初心者はそんなものを見てはいけない。
0196デフォルトの名無しさん
2008/05/22(木) 09:14:390197デフォルトの名無しさん
2008/05/22(木) 10:03:26一番良い例が、しばらく前までの2ch。
今動いているのはプロが書いたはずだから、ちゃんとしているはずだけど、
公開されてんのかね。
0198デフォルトの名無しさん
2008/05/22(木) 10:13:12書き方が古いから。
0199デフォルトの名無しさん
2008/05/22(木) 10:41:17自分がやって「楽しい」と思うものでなければ、長続きしない。
例えば、任意の文字列を入力すると、
▄ ▄▄▄▄▄▄▄▄
▄▄▄▄▄▄▄ ▄▀ ▄▄█▄▄ ▄▄ █▄▄▄▀ █
▄▀ ▄▀ ▄ ▀ █▄▄█▄▄ █
▄█▄▄ █ █ █▄▄█▄█ █
█ ▄▀ █ █ █ ▄▀▀▀█▄ █ █ ▄ █ ▄
▀▄▄▄▄▄▄▄▄ ▄▀ ▀▄▄▀ ▀▄▄▄▀ ▀ █ ▀▀▀▀ ▀ ▀█
に変換するスクリプトを作ってスレを荒らすというのはどうだ?
0200デフォルトの名無しさん
2008/05/22(木) 11:22:02それくれw
0201デフォルトの名無しさん
2008/05/22(木) 12:34:25同じ事をするにも何通りも書き方がある,
というのとは違うのかい?正直わからん。
0202デフォルトの名無しさん
2008/05/22(木) 12:37:302chのbbs.cgiは8年ぐらい前に流出した以外に表に出てないと思うのだが。
0203デフォルトの名無しさん
2008/05/22(木) 16:25:48perlのCGIがブームだった頃に作られた遺産がたくさん残ってる。
それらは大抵perl4時代のコードのままメンテナンスされてない。
0204デフォルトの名無しさん
2008/05/22(木) 17:32:22これ読めってのを挙げた方がいいと思うが、定番といえそうなものがないな。
0205デフォルトの名無しさん
2008/05/22(木) 17:34:570206デフォルトの名無しさん
2008/05/22(木) 18:19:240208デフォルトの名無しさん
2008/05/22(木) 20:32:50mailあたりをいじってみたらどうかな
0209デフォルトの名無しさん
2008/05/22(木) 20:44:222-gramの全文検索エンジンの試作オススメ。
リスト処理や文字列処理などまんべんなく入ってる。
0210デフォルトの名無しさん
2008/05/22(木) 20:59:360211デフォルトの名無しさん
2008/05/22(木) 21:12:29・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
・webで探すとまともにメンテされてない糞ページがヒットしまくる
・Perl自体の記法が自由すぎるせいでそのページのコードが古いのかこっちの設定ミスなのでエラー出してるのか区別ができない
参入障壁高すぎ
0212デフォルトの名無しさん
2008/05/22(木) 21:37:14>>2以外の本はビブリオマニアでなければ必要ないよ。
>・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
文の前後が繋がってないよ。
>・webで探すとまともにメンテされてない糞ページがヒットしまくる
Perlの疑問はググる前にperldocだよ。
>・Perl自体の記法が自由すぎるせいでそのページのコードが古いのか
>こっちの設定ミスなのでエラー出してるのか区別ができない
最新のperl(1)でもPerl4時代のコードが問題なく動くよ。
混ぜておかしくなるのは「新旧」でなく「お作法」だよ。
0213デフォルトの名無しさん
2008/05/22(木) 23:42:33まずは その準備として単語(表記はカタカナで)とその対応説明が
登録されているデータベース(Excelでもテキストでもなんでもいい)
が必要です。どなたか知ってたら教えてください。それではおやすみ。
0214デフォルトの名無しさん
2008/05/22(木) 23:46:34っ[Wikipedia]
0215デフォルトの名無しさん
2008/05/23(金) 00:01:310216デフォルトの名無しさん
2008/05/23(金) 01:46:170217デフォルトの名無しさん
2008/05/23(金) 01:51:480218デフォルトの名無しさん
2008/05/23(金) 07:32:37クロスワード作るのとPerlは無関係
まず紙に書いて作ってPerlで起こす時に分からないことあったらまた質問しな
0219デフォルトの名無しさん
2008/05/23(金) 23:40:22$PTNの内容をs///にべた書きすると変換できるようになる。何故?tr///が高速ならこんなことせんでもええのに。何故?
(ver. 5.8.5)
use encoding "utf8";use Encode;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
$PTN="(\xe3\x80\x9c|\xc2\xa2)";
%HASH=("\xe3\x80\x9c"=>"\xef\xbd\x9e","\xc2\xa2"=>"\xef\xbf\xa0");
while(<STDIN>)
{
s/$PTN/$HASH{$1}/geo;
print;
}
0220デフォルトの名無しさん
2008/05/24(土) 02:10:23perlで書かれたCGIゲームです。
パーラーのみなさん、ユーザーとして
どうぞ登録してください。
まだプレイヤー4人くらいしかいません。
ユーザーの50%をパーラーにしたいという
計画です。
0221デフォルトの名無しさん
2008/05/24(土) 03:24:15$PTN="(\x{301C}|\x{00A2})";
0222デフォルトの名無しさん
2008/05/24(土) 03:26:18http://pc11.2ch.net/test/read.cgi/tech/1177930957/
0223デフォルトの名無しさん
2008/05/24(土) 11:07:24ダメでした。
\x{00a2}が\xc2\xa2じゃないものになってしまいます……。
0224デフォルトの名無しさん
2008/05/24(土) 11:51:07utf8を扱う tr/// で再帰時に落ちる件、ActivePerl 5.10.0.1003 では正常になっていました。
詳細は未確認だけど、33747 のmg.cへの修正が効いている感じ。
0225デフォルトの名無しさん
2008/05/24(土) 13:24:03英会話の勉強とか。。。perlのコマンド、モジュール名だけでできたクロスワードだったら
といてみたいかも。
0226デフォルトの名無しさん
2008/05/24(土) 13:25:32「Head First Java 第2版―頭とからだで覚えるJavaの基本 (単行本) 」
ではJavaに関連した単語でクロスワードパズルがあった。
0227デフォルトの名無しさん
2008/05/24(土) 17:26:41ソースコード中に「use utf8」の宣言が無いから、全ての文字列は、
UT8フラグの無い、シングルバイトの文字から構成されていることになる。
ネット上の情報からすると、Perl では、UTF8 フラグ
なし文字列を Latin-1 文字列とみなしている(らしい)。次に、
binmode STDOUT, ":utf8";
の宣言があるから、print 文等において文字列が出力される際には、
シングルバイトのLatin-1 文字列が、utf8に変換される。その結果、
このような現象が起きる.....ということでいいのかな?
間違っていたら、エロイ人、修正して下さい。
0228デフォルトの名無しさん
2008/05/24(土) 19:50:410229デフォルトの名無しさん
2008/05/24(土) 19:58:46>>3
#!/usr/bin/perl -w
require 5.008001;
use encoding 'utf8';
print utf8::is_utf8('binary?') ? 'with utf8 flag' : 'binary';
__END__
>>228
utf8 プラグマも encoding プラグマも使わないに越した事ないし。
フラグの有無で悩むより、マルチバイト文字処理が本当に
必要な箇所でだけフラグ付け外しする方がよっぽど楽。
0230デフォルトの名無しさん
2008/05/24(土) 20:02:05shは使わない方がいい、Perl使うべきだ。
とかいって、perlで
$test = `cat /home/test/test.txt`
とか多様してるやつってなんなの?
0231デフォルトの名無しさん
2008/05/24(土) 20:02:500232デフォルトの名無しさん
2008/05/24(土) 20:22:26ものぐさ番長=パーラーだ。
0233デフォルトの名無しさん
2008/05/24(土) 20:34:51次スレからは入れような。
---------------------------------------------------------
# 【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
sleep(1);
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
0234デフォルトの名無しさん
2008/05/25(日) 02:05:50if( `[ -f /home/test/test.txt ]` ) {
$test = `cat /home/test/test.txt`;
0235デフォルトの名無しさん
2008/05/26(月) 21:58:51結局、\xc2\xa2の置換は諦め、別ツールで提供することになりました。
別のバージョンとか調べている時間がない……。
0236デフォルトの名無しさん
2008/05/26(月) 22:16:31if( -f /home/test/test.txt ] )
{
$test = `cat /home/test/test.txt`;
}
0237デフォルトの名無しさん
2008/05/26(月) 22:17:11if( -f /home/test/test.txt)
{
$test = `cat /home/test/test.txt`;
}
0238デフォルトの名無しさん
2008/05/26(月) 22:57:43my $test = `cat /home/test/test.txt` if(-f /home/test/test.txt);
だろ
0239デフォルトの名無しさん
2008/05/27(火) 01:22:49>>230
0240デフォルトの名無しさん
2008/05/27(火) 22:41:24void main(int argc, char**argv)
{
system("cat /home/test/test.txt");
}
0241デフォルトの名無しさん
2008/05/27(火) 22:48:04これが書かれた頃は perl など無かったが
まさに、system() 関数使いまくろう!的な内容。
0242デフォルトの名無しさん
2008/05/28(水) 00:33:290243デフォルトの名無しさん
2008/05/28(水) 18:50:42perlでできる処理はperlでできるだけやるべき。
catとか。
0244デフォルトの名無しさん
2008/05/28(水) 19:08:58確かにそうなんだけど、catについてはそうかな〜。
perl だったら、open,while,colose (またはread)とかで三段処理踏まないといけないから、
cat なんかは $test = `cat file.txt` なんかはよく使う。
実際どっちが早いとかBenchとったことはないけど・・・。
0245デフォルトの名無しさん
2008/05/28(水) 19:09:460246デフォルトの名無しさん
2008/05/28(水) 19:12:39相当な差がある。
コード的には段階踏んでるが。
0247デフォルトの名無しさん
2008/05/28(水) 19:20:100248デフォルトの名無しさん
2008/05/28(水) 19:36:06perlだけで終わらせたほうが圧倒的に早い
File::Slurp使うか、入れるのめんどくさかったら
sub slurp {open my $fh , $_[0] || die("$_[0]:$!");local $/;<$fh>}
って書いとけばOK
0249244
2008/05/28(水) 20:06:16複数のファイルにループ処理する時はサブルーチンで書いたりするよ。
そうでなくて、ちょっとした確認とかで数行のスクリプトとか、
コマンドラインからのワンライナーみたいな感じで書く時には便利かな ってゆうぐらい。
そんな時にまで、いちいち、useやrequireやsub{}なんて書きたくないじゃん。
0250デフォルトの名無しさん
2008/05/28(水) 20:21:38数行だとか、処理速度とか処理効率を考えなくていいなら便利。
あくまでコマンドレベルの用途ね。
ただ不明なのが、
>サブルーチンで書いたりする
ってとこ。
関係が不明なんだけど。
0251デフォルトの名無しさん
2008/05/28(水) 20:50:01環境やバージョンが変わったら、こまめにベンチマーク取って
最適の方法を探らないとね。
0252デフォルトの名無しさん
2008/05/28(水) 21:09:03…ねえ。知ってると思うけど
$ cat > foo.pl
#!/usr/bin/env perl -n
print ;
}
{
print "foo\n" ;
# control + D をタイプ
$ perl foo.pl foo.pl foo.pl
$ perl -lne '}{ print $. ;' foo.pl
0253デフォルトの名無しさん
2008/05/28(水) 21:25:17解説よろしく
0254デフォルトの名無しさん
2008/05/28(水) 21:46:36optionに関しては perl -h するなりで
-n assume "while (<>) { ... }" loop around program
-p assume loop like -n but print line also, like sed
で実際の挙動を見るには
perl -MO=Deparse -ne 'print;'
この結果を見ると while ループで単純にかこってあるだけだから
ループの終りの「}」と無名ブロックの始まりの「{」を入れて
好きな様に処理させる。
応用すれば、「tsvの第二カラムの積算」なんてのは
perl -lane '$t += $F[1] ; }{ print $t ;' FILE
スクリプトファイルにしたときも同じ事。B::Deparse にて確認して。
perl -MO=Deparse foo.pl
あとはお好みに。これで手に負えない時とかstrict適用したい時は
普通に書きゃいいだけだし。
0255244
2008/05/28(水) 22:41:30それは、>>247や>>248に対するレスで、例えばopen();while(){うんたらかんたら・・・}close();を
一まとめにしたサブルーチンなんかに投げるってこと。
いや、スマン。244で速度のこととか言い出したんだけど、
自分が言いたかったことは、>>240-243までの流れで、ちょっとした処理(>>240とかw)を
わざわざCで書いたんなら、かなり損した気分になるのは大いに理解できるけど、
それをperlでやるのは、そんなに損した気にはならない、
ってゆうか、perlだからこそ、$nakami = `cat file.txt`;や@files = `find ・・・`;
みたいな事が手軽に出来る、ってのが、perlの大きな魅力の1つではないかと自分は思ってる。
ってことを言いたかった。
>>252
それはオレも初耳。
完全に理解しきれてないけど、色々応用が効きそうだ。
0256デフォルトの名無しさん
2008/05/28(水) 23:31:00>>248
「かなり」 とか 「圧倒的に」 とか、ずいぶんアバウトだな。
そんなんじゃ全然説得力が無い。
たとえば、$a = `cat unko.txt` すると 0.1秒かかるとしよう。
open・read・close すると0.01秒しかかからないとしよう。
で?それが何なの?どうなのよ、って事だ。
えっ?10倍早いだって?
おいおい、0.1−0.01=0.09秒しか違わないんだよ。
たったの0.09秒の差を人間が感じ取れるとでも思うの?
アフォくさ。
0257デフォルトの名無しさん
2008/05/28(水) 23:34:30whileかけるようになったらまたおいで。
0258デフォルトの名無しさん
2008/05/29(木) 00:09:41一回だけ処理するならその程度で済むかもね。
0259デフォルトの名無しさん
2008/05/29(木) 00:29:53cvs のほうが依存するライブラリ少いし、FreeBSD なら最初から入ってるし。
0260デフォルトの名無しさん
2008/05/29(木) 00:42:12って誤爆か
0261デフォルトの名無しさん
2008/05/29(木) 13:56:470262デフォルトの名無しさん
2008/05/29(木) 15:29:41$message =~ s/(\d+)/{ twice($1) }/e; #数字を検索して、2倍して置換
print $message;
これなのだけど
my $message = "He is 5 years old\n";
$message =~ s/(\d*)/{ twice($1) }/e; #数字を検索して、2倍して置換
print $message;
これじゃダメなのはなんで?
0263デフォルトの名無しさん
2008/05/29(木) 15:35:340264デフォルトの名無しさん
2008/05/29(木) 18:45:13全てが任意なので、全ての行で置換が行われることに
0265デフォルトの名無しさん
2008/05/29(木) 18:47:590266265
2008/05/29(木) 18:48:46でやってみ。
0267デフォルトの名無しさん
2008/05/29(木) 19:34:03egじゃなくてeだから、この場合は先頭だけだろう。
0268デフォルトの名無しさん
2008/05/29(木) 21:48:260269デフォルトの名無しさん
2008/05/29(木) 21:59:34いや何でもない
0270デフォルトの名無しさん
2008/05/29(木) 22:23:270271デフォルトの名無しさん
2008/05/29(木) 23:56:310272デフォルトの名無しさん
2008/05/30(金) 03:29:450273デフォルトの名無しさん
2008/05/31(土) 19:56:52#cpan
Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work.
The COLUMNS and LINES environment variables didn't work. The resize program didn't work.
at /usr/local/lib/perl5/site_perl/5.8.3/i386-freebsd/Term/ReadKey.pm line 362.
Compilation failed in require at /usr/local/lib/perl5/site_perl/5.8.3/Term/ReadLine/Perl.pm line 63.
とエラーが出ます。
恐らく、perlのバージョンアップした際に不具合が生じているのかと思うのですが・・・。
ネットで解決法を探すも情報がほとんどなく手がかりもつかめません。
perl v5.8.3
OS FreeBSD 4.2-R
助けて下さい。お願いします。
0274デフォルトの名無しさん
2008/05/31(土) 20:09:040275273
2008/05/31(土) 21:57:38インストールしなおしてみましたが、ダメでした。
同じ症状です・・・。トホホ。
0276デフォルトの名無しさん
2008/05/31(土) 21:58:41を
2008/05/12 20:15:40
という風に返すモジュールないですか?
0277デフォルトの名無しさん
2008/05/31(土) 22:02:33どこでおかしくなっているか明示されているんだから、
見てみればいいだけ。
0278デフォルトの名無しさん
2008/05/31(土) 22:19:44use HTTP::Date qw(str2time time2iso)
print time2iso( str2time("12 May 2008 20:15:40") );
0279デフォルトの名無しさん
2008/05/31(土) 22:22:110280デフォルトの名無しさん
2008/05/31(土) 22:27:06Date::Manipかな。日付を扱うならDate::Calcとともに定番。
perl -MDate::Manip -e 'print UnixDate("12 May 2008 20:15:40", "%Y/%m/%d %H:%M:%S")'
0282デフォルトの名無しさん
2008/06/01(日) 04:50:03において
GD v2.39
GD::Graph v1.4308
GD::Text v0.86
で
use GD;
use GD::Text;
use GD::Graph::bars;
my $graph = GD::Graph::bars->new( 800, 800 );
my $gd_text = GD::Text->new();
GD::Text->font_path( _______DIR______);
$gd_text->set_font(_______FONT______, 178) ;#or die $gd_text->error;
$graph->set_title_font(_______FONT______, 178 );
_______DIR______ = undef | '' | 何か意味のある値
_______FONT______ = undef | '' | 何か意味のある値
をWindowsXP SP2あるいはWindows2k SP1で実行したとき
どうもシステムのフォントを破壊?するようです
0283232
2008/06/01(日) 04:57:25windows XP
起動してみると ”ようこそ”が明朝体になってて
ファイル名の全角空白までも文字化けしている状態になりました。
標準で恐らく第1水準漢字が表示できたりできなかったりするフォントが選択されているようです。
検索 -> 索 が表示できない
削除 -> 削 が表示できない
書き込む −> 込 が表示できない
またcmdで日本語が返ってくるような状態
>> c:\hoge\foo.bar (実際には存在しないファイル)
とかタイプすると ■■■■■ ■■■■と文字化けして
(ファイルが見つかりませんとかそんな感じのメッセージ)と返ってきます。
http://support.microsoft.com/kb/880991/ja
に従ってフォントキャッシュを消して再起動しても改善されませんでした。
Windows 2000 SP1では IE6の検索ウインドウに英字を入れるとイタリックに化ける
という共通してんだか共通してないんだかな現象が発生します。
232に書いたコードを実行したときに即に破壊するわけではなく、次回起動時から影響が出始めるので
何がどうなってるのかまったく分からない上に妙な分野にまたがった問題のために、
5時間戦って何にも戦果が上がらずもう疲れたのでとりあえずよし牛でも行ってからOS入れなおすことにしますた。
GD(GD::Textだと思うんだけど)使うときは気をつけてください。
0284282
2008/06/01(日) 05:17:28再現したくないのでぜんぜん検証ができないのですが
これはCPANの作者さんにも報告したほうがいいのでしょうか?
0285デフォルトの名無しさん
2008/06/01(日) 17:00:58とりあえず出品リストを作ろうと思って、
http://openuser.auctions.yahoo.co.jp/jp/user/my46giga
の内容の取得をしようと思っても、アダルト商品なので表示されません
クッキー周りだと思うのですが、うまくいきません
書いてみたのは下のようなもので、
yahoo_cookieには[email protected][2].txtの内容を
#LWP-Cookies-1.0
Set-Cookie3: YAUC_AV=.....
みたいな感じでコピーしてあります
どこが間違っているのでしょう
use LWP::UserAgent;
use HTTP::Request::Common;
use HTTP::Cookies;
use Encode;
$cookie_file = 'yahoo_cookie';
my $cookie_jar = HTTP::Cookies->new(file => $cookie_file, autosave => 1);
$ua = LWP::UserAgent->new;
$ua->cookie_jar($cookie_jar);
$req = GET "http://openuser.auctions.yahoo.co.jp/jp/user/my46giga";
$res = $ua->request($req);
print $res->content;
0286デフォルトの名無しさん
2008/06/01(日) 17:12:130287デフォルトの名無しさん
2008/06/01(日) 23:15:25ややこしくてついアイスに手を出してしまいます。
どうすれば幸せになれますか
my @a=(1,2,3);
my @b=qw(a b c);
my $c=[\@a,\@b];
my $aa=[1,2,3];
my $bb=[4,5,6];
my $cc=[\$aa,\$bb];
sub pr{
my($depth,$ary_ref)=@_;
if((ref $ary_ref) eq "ARRAY"){
foreach (@$ary_ref){
pr(($depth+1),$_)
}
}elsif(defined $$ary_ref){
print $depth,":",$$ary_ref,"do something\n";
}else{
print "do nothing\n";
}
}
pr $cc;
pr $c;
0288287
2008/06/02(月) 08:56:480289デフォルトの名無しさん
2008/06/02(月) 11:07:130290デフォルトの名無しさん
2008/06/02(月) 12:34:14どこかでエラーが出て止まっていると思うのですが、エラー内容をファイルに出力できないでしょうか?
.procmailrcを
:0
|perl ./foo.pl 2>&1 > ~/out.txt
としてみましたがout.txtにはなにも出力されませんでした。(空ファイル)
0291デフォルトの名無しさん
2008/06/02(月) 12:44:59perl ./foo.pl > ~/out.txt 2>&1
というふうに 2>&1 を後ろにもっていく必要がある。
Unix 系はどうか知らん。
0292デフォルトの名無しさん
2008/06/02(月) 12:55:40Unix系でも。
0293デフォルトの名無しさん
2008/06/02(月) 13:42:21じゃだめだっけ?
0294デフォルトの名無しさん
2008/06/02(月) 14:45:45リダイレクトは左から評価されるんで、順序に注意汁ってこったな
2>&1みたいのはイメージ的には $b = $a みたいな変数のコピー
>~/out.txtみたいなのは $a = "hoge" みたいな代入
と思っておけば、イメージ的にはほぼ間違い無い
$b = $a;
$a = "hoge";
とかやっても、$bは"hoge"にならないでしょ
逆順だと上手くいくけど
0295デフォルトの名無しさん
2008/06/02(月) 19:03:12対象の言語の実装がfastcallとかstdcallとかってことかね
0296290
2008/06/02(月) 19:33:01ありがとうございます。解決しました。
perlじゃなくてshellの問題でしたね。すいません。
294氏のイメージは理解しやすかったです。
0297デフォルトの名無しさん
2008/06/02(月) 21:15:52と指定したものをテキストモードに戻すにはどうしたらよいでしょうか?
0298デフォルトの名無しさん
2008/06/02(月) 21:40:55perlfunc読めよ糞が
0299デフォルトの名無しさん
2008/06/02(月) 22:59:05キミ、後輩を育てられないタイプだね。
0300デフォルトの名無しさん
2008/06/02(月) 23:06:24でも、いまのところ自営業で後輩いないからなんとかなってる。
0301デフォルトの名無しさん
2008/06/02(月) 23:11:360302デフォルトの名無しさん
2008/06/02(月) 23:31:020303デフォルトの名無しさん
2008/06/03(火) 00:41:30> 相手に糞とか言う輩は、殆どの場合己がそうだから。
調査不可能なことを断言する嘘つきの出現です。
0304デフォルトの名無しさん
2008/06/03(火) 02:06:420305デフォルトの名無しさん
2008/06/03(火) 02:30:56winxp sp2を使っていて、activeperlを入れています。
パソコンのボリュームの調整をするコードを書きたいのですが、
perlからでもそういうのはいじれるのでしょうか?
メイン音量・WAVE、あと、wmpなど音楽再生ソフトの音量もいじりたいです。
どこか参考になるサイトなどありますでしょうか?
0306デフォルトの名無しさん
2008/06/03(火) 03:48:25VBでも使った方が良くね?
0307デフォルトの名無しさん
2008/06/03(火) 07:37:39どうしてもPerlでやりたいなら、Win32APIをつかえば?
それ以上は、Perl関係ない。
0308デフォルトの名無しさん
2008/06/03(火) 17:03:21binmode STDOUT, ':encoding(cp932)';
このコードを他のOS環境で使うためには
:encoding(cp932) を手作業で書き換えてもらってるんですが
自動取得することはできますか?
そのOSのデフォルトのコードページとかエンコードとかを
自動取得することは出来ますか?
0309デフォルトの名無しさん
2008/06/03(火) 17:32:59「そのOSのデフォルトのコードページとかエンコードとか」というのが
そもそも不明。
0310デフォルトの名無しさん
2008/06/03(火) 18:18:44OSごとにデフォで使われてる文字コードを完璧に判定することはできない。
同じ記述なら一括で置き換えればいいだけだし
共通する部分なら最初に開発した段階で
定数なり関数なり作ってそこに定義しておくべきだった。
0311デフォルトの名無しさん
2008/06/03(火) 19:03:49OS名や環境変数で、ある程度は判別できるだろうね。
0312デフォルトの名無しさん
2008/06/03(火) 20:04:39> OS名や環境変数で、ある程度は判別できるだろうね。
「そのOSのデフォルトのコードページとかエンコードとか」が存在するかどうか
とか、それを守っているのかとか、そもそも一貫性があるのかとか
はいちいち調べないとね。
0313デフォルトの名無しさん
2008/06/03(火) 20:21:42ほぼ解決しないかな?
0314デフォルトの名無しさん
2008/06/03(火) 21:48:180315デフォルトの名無しさん
2008/06/03(火) 22:25:52LANGはOSのデフォじゃなくて、「その人が端末に表示したいエンコード」。
端末装置はユーザごとに異なるのが当たり前・・・というUNIXの基本を忘れてるよ。
んで、メンド臭いなら全部 UTF8 にしたら?
今時のWindowsのメモ帳ならUTF8開けるよ。
0316デフォルトの名無しさん
2008/06/03(火) 22:29:21use open ":locale";
とかでよきに計らってくれるようだが
Win32だと良い方法はないかも
0317デフォルトの名無しさん
2008/06/03(火) 22:32:43これも駄目。
何故なら、プロセスの実行環境と、その出力を閲覧するユーザのlocaleが一致する保証は無いから。
0318デフォルトの名無しさん
2008/06/03(火) 22:36:41それが「いい」か「だめ」かはケースバイケースでしょ。
それで少なくとも伝統的なUnixのI18N/L10Nプログラムと同じ動作にはなる。
Cでsetlocale(LC_CTYPE, "")するのとほぼ同じだから。
無論、設定ファイルや何かでオーバーライドできるようにすることが
望ましいけどね。
0319デフォルトの名無しさん
2008/06/03(火) 22:37:25他国語版使ったこと無いから知らんけど、cp932が有効なのが
そもそも日本語版Windowsだけなんじゃないかな。
>>314
中国はbig5?(と思ったら、Windowsでは、GB2312(cp936)らしい??)
フランス等ラテン語件はlaten-1(ISO-8859-1)なんじゃね?(cpだと1252)
>>316
VCからなら、locale取得したり、変更したりする関数があったハズ。
Win32APIから叩けそうな気がするけど、どうなんだろ。
まあ、日本語環境のみで使用するってんなら、>>313でええかも。
0320305
2008/06/03(火) 23:32:11CGIでPerlをかじりました。
実行ファイルにしてしまえば(自分のパソコンにはperl入ってるので不要ですが)Perlで問題ないと思いました。
Perlではwindowsを操作するようなプログラムはかけないなんてことはないと思ってたんですが。
特に簡単なのなら言語なんてほとんどなんでもいいのかと。
>>307
win32apiとやらを調べてみます。
0321デフォルトの名無しさん
2008/06/04(水) 01:36:05UNIXのメモ帳で端末のエンコードが変更できるんですか?
エンコードの概念が無いなら、いったいどうやって漢字を表示するんでしょう?
テキストファイルをopenするのに、いったい何のコードでデコードすればいいんでしょう?
0322デフォルトの名無しさん
2008/06/04(水) 02:00:32> UNIXのメモ帳で端末のエンコードが変更できるんですか?
「UNIXのメモ帳」という謎の概念が提示されました。
0323デフォルトの名無しさん
2008/06/04(水) 02:01:130324デフォルトの名無しさん
2008/06/04(水) 02:02:100325デフォルトの名無しさん
2008/06/04(水) 02:08:470326デフォルトの名無しさん
2008/06/04(水) 04:11:02それならUNIXのメモ帳と言っても何ら差し支えは……。
0327デフォルトの名無しさん
2008/06/04(水) 05:04:24> > UNIXのメモ帳で端末のエンコードが変更できるんですか?
これ全体が謎なんだな。
0328デフォルトの名無しさん
2008/06/04(水) 07:03:52Perlもモジュールだなんだでいろいろ出来るようにはなったけど
基本はテキスト処理をするための言語だぜ?
ちょっとじかじったくらいなんだったら
それに適した言語をかじり直したほうがたぶん早いよ
0329デフォルトの名無しさん
2008/06/04(水) 08:25:15win32apiをPerlから使うのは結構面倒なので、場合によるだろうけど、>>305をみると、Perlでコーディングする意味はないと思う。
やってで気ないことはないけど、適材適所ってヤツがある。
VBだと金がかかるという場合、もしVista使ってるならサイドバーガジェットという選択肢もあるかな。
0330デフォルトの名無しさん
2008/06/04(水) 10:48:24ちょっとやってみた感じだと、ActivePerlでもPOSIXモジュールのsetlocale()は
機能する模様(実際にはMSVCRTのsetlocale()を呼んでいるのだろう)
use POSIX qw(locale_h)
$old_locale = setlocale(LC_CTYPE, "");
とかやると、Japanese_Japan.932とかいう文字列が帰ってくる。
.の後ろがコードページのはず。
cygwinみたいにロケールが完全に腐ってる環境ではどうしようもないけどな。
0331デフォルトの名無しさん
2008/06/05(木) 00:25:55おーっと、ここで 「ed・はるみ」 が乱入w
0332デフォルトの名無しさん
2008/06/05(木) 05:42:100333デフォルトの名無しさん
2008/06/05(木) 10:17:090334デフォルトの名無しさん
2008/06/05(木) 15:09:00hello, world
?
help
?
quit
?
exit
?
q
?
?
?
--help
?
-help
?
fuck
?
0335デフォルトの名無しさん
2008/06/05(木) 16:18:290336デフォルトの名無しさん
2008/06/05(木) 20:11:12read FILE, my $content, (stat FILE)[7];
close FILE;
この (stat FILE)[7] の部分が、見た目が汚く感じるんですが
もっと美しい書き方はありませんか?
read FILE, my $content, 9999999999; とか、死んでもイヤです。
どっかのクソ言語の ReadAll メソッドみたいなのが欲しいです。
0337デフォルトの名無しさん
2008/06/05(木) 20:13:08my $content = do{local $/; readline $file}
close $file;
0338デフォルトの名無しさん
2008/06/05(木) 21:12:540339デフォルトの名無しさん
2008/06/05(木) 21:16:32っ[File::Slurp]
0340デフォルトの名無しさん
2008/06/06(金) 00:13:260341デフォルトの名無しさん
2008/06/06(金) 00:39:53そっか、それがあったか。それ使わせてもらいます。感謝感謝。
あとの残りはクズですね。
0342デフォルトの名無しさん
2008/06/06(金) 00:46:360343デフォルトの名無しさん
2008/06/06(金) 00:59:50OBJS = ${CSRC:.c=r30}
.c.r30:
${CC} $<
Makefile中の$<をPerlを使って置換してCCに渡すことは可能でしょうか?
$<に含まれているスラッシュを\\に置き換えるために
$< =~ s|/|\\\\|g
このような置換を行いたいです。
環境はCygwinPerl5.8.8です。
0344デフォルトの名無しさん
2008/06/06(金) 01:00:03どうやって使うの?
0345デフォルトの名無しさん
2008/06/06(金) 01:11:15($fileName, $text) = @_;
open(FH, "+>$fileName");
print FH $text;
close(FH);
}
こんな感じでファイルを出力するコード書いたのですが、
サブルーチン経由だとなぜか動きません
サブルーチンなしだと正しくファイルが書き出されました
なにがおかしいのでしょうか
0346デフォルトの名無しさん
2008/06/06(金) 01:21:240347デフォルトの名無しさん
2008/06/06(金) 01:52:38writeという標準関数の存在しりませんでしたが
今回はなぜこのコードが動かないかについてよろしくお願いします
というのも、同じ仕様(関数名,引数,戻り値)を複数の言語で記述してみてるだけなのです
0348デフォルトの名無しさん
2008/06/06(金) 02:11:42perlsub読むか、親切に解説してくれるおせっかいが通りかかるのをまて。
0349デフォルトの名無しさん
2008/06/06(金) 02:23:57文法自体はあってるんですね
ありがとうございます
0350デフォルトの名無しさん
2008/06/06(金) 02:35:570351デフォルトの名無しさん
2008/06/06(金) 08:19:33ほかにどういう意味だと思ったんだ?
0352デフォルトの名無しさん
2008/06/06(金) 08:22:01makeのsubstやpatsubst関数じゃだめ?
0353デフォルトの名無しさん
2008/06/06(金) 08:33:28foreachやwhile等で、何回目のループかをカウントしているような
変数は無いでしょうか?
自前で用意すればいいだけなのですが、そのような変数が無いかと思い
質問させて頂きます。
0354デフォルトの名無しさん
2008/06/06(金) 11:20:210355デフォルトの名無しさん
2008/06/06(金) 11:57:16どこかに書かれてたような気がするけど、実際どう?
自分は使い分けてる。
0356デフォルトの名無しさん
2008/06/06(金) 12:02:27foreach で (;;) とかやらなきゃどっちでも良いとは思う。
0357デフォルトの名無しさん
2008/06/06(金) 12:08:140358デフォルトの名無しさん
2008/06/06(金) 12:17:35a) for my $n (0..9) {}
b) foreach (my $n=0; $n<10; $n++) {}
a は許容できるが、b は嫌かなってこと。
0359デフォルトの名無しさん
2008/06/06(金) 12:21:560360デフォルトの名無しさん
2008/06/06(金) 12:29:160361デフォルトの名無しさん
2008/06/06(金) 13:32:56んで、暗黙のループカウンタなんてあったら言語仕様としてきもい
0362デフォルトの名無しさん
2008/06/06(金) 15:39:580363356
2008/06/06(金) 16:14:23まさにPerlスタイル。
>362
use constantとかはー?
0364デフォルトの名無しさん
2008/06/06(金) 17:02:47>>361
$. は?w
0365デフォルトの名無しさん
2008/06/06(金) 17:07:460366デフォルトの名無しさん
2008/06/06(金) 17:19:320367デフォルトの名無しさん
2008/06/06(金) 17:23:440368デフォルトの名無しさん
2008/06/06(金) 17:31:570369デフォルトの名無しさん
2008/06/06(金) 17:56:23Cライクにやりたいなら
use constant NAME => 'hoge';
ただし Perlでベアワードはメンドくさい。
"my name is NAME"
とやっても展開されないから
"my name is ".NAME
とするしかない。
*NAME = \'hone';
これを使えば
"my name is $NAME"
で展開できる。
*C_STR = \'xxxx'; # 文字列定数。参照は $C_STR
*C_NUM = \100; # 数値定数。参照は $C_NUM
*C_ARRY = [1,2,3]; # 配列定数。参照は @C_ARRY
*C_ASSOC = {k1 => v1,k2 => v2}; # ハッシュ定数。参照は %C_ASSOC
0370デフォルトの名無しさん
2008/06/06(金) 18:04:39まぁ、珍の字はニュアンスぴったりだと思うよ。
Perlの仕様を漢字一字で表せといったら、珍・奇・醜・糞あたりが有力だろうし。
0371デフォルトの名無しさん
2008/06/06(金) 18:44:43配列から読み取るってときはforeachにしてるな。こっちはPHPぽい方で
0372デフォルトの名無しさん
2008/06/06(金) 18:45:22あれ?なんでわざわざこのスレに?
0373デフォルトの名無しさん
2008/06/06(金) 18:50:29・Perlを盲目的に全肯定するキチガイだけが住人ではないから
0374デフォルトの名無しさん
2008/06/06(金) 19:03:320375デフォルトの名無しさん
2008/06/06(金) 19:41:580376デフォルトの名無しさん
2008/06/06(金) 20:34:35ゲテモノだってのは認識しとる。
0377デフォルトの名無しさん
2008/06/06(金) 21:41:28レスありがとうございます。
substを使ってうまくいきました。
ありがとうございました。
0379デフォルトの名無しさん
2008/06/06(金) 22:52:56二分探索法を行なっている実装例ってありませんかね?
0380デフォルトの名無しさん
2008/06/07(土) 01:02:590381デフォルトの名無しさん
2008/06/07(土) 14:17:18できるよ。
以上。
↓次どうぞ
0382デフォルトの名無しさん
2008/06/08(日) 00:21:350383デフォルトの名無しさん
2008/06/08(日) 19:02:55そのファイルを読み込み設定された変数を利用したいのですが、
どのようにすれば実現できますか?
0384デフォルトの名無しさん
2008/06/08(日) 19:05:010385デフォルトの名無しさん
2008/06/08(日) 19:13:010386383
2008/06/08(日) 19:14:47サンプルコードなど頂けませんでしょうか?
0387デフォルトの名無しさん
2008/06/08(日) 19:16:050388デフォルトの名無しさん
2008/06/08(日) 19:17:300389383
2008/06/08(日) 19:19:09阿呆しか答えてくれないので、聞く手間をかけずに調べれば良かったですね。
0390デフォルトの名無しさん
2008/06/08(日) 19:26:320391383
2008/06/08(日) 19:26:33requireも試してみたのですが、変数の値が継承されないようで
うまくできませんでした。
>>387
ありがとうございます。
試してみたのですが、requireと同じように変数の値が継承されません。
doと言うものを調べたのですが、while文のdoしかなかなか見付からず
使い方が悪いのかも知れません。
すみませんが詳しく教えて頂けるとありがたいです。
0392デフォルトの名無しさん
2008/06/08(日) 19:28:41何かを知ろう学ぼうとするなら知る学ぶ為の正しい手段を取るべきだと思うけどなあ…。
0393デフォルトの名無しさん
2008/06/08(日) 19:42:06perlfunc嫁
0394デフォルトの名無しさん
2008/06/08(日) 19:49:070395デフォルトの名無しさん
2008/06/08(日) 19:59:130396デフォルトの名無しさん
2008/06/08(日) 20:18:320397デフォルトの名無しさん
2008/06/08(日) 22:03:27read FILE, my $unko, -s FILE;
close FILE;
eval $unko;
0398デフォルトの名無しさん
2008/06/08(日) 22:04:060399デフォルトの名無しさん
2008/06/08(日) 22:32:170400デフォルトの名無しさん
2008/06/09(月) 01:10:43バックグラウンド処理そのものは最後まで実行されますが、終了同期を取ろうとjoinを呼び出した時に、クラッシュして更に、Free from wrong pool during global…
となります。
これを回避出来た猛者はいますか?
0401有吉 ◆01z1p9gzeo
2008/06/09(月) 01:43:25$top = MainWindow->new();
$frame1=$top->Frame(-height=>25)->pack(-side=>top,-fill=>'x',-expand=>'no');
$listbox1 = $frame1->Scrolled('Listbox',-scrollbars=>'osoe')->pack(-fill=>'both',-expand=>'yes');
$listbox1_ref = \$listbox1;
if ($pid = fork()) { MainLoop; }
else { &refresh($listbox1_ref); }
sub refresh {
my $listbox1_ref = shift;
$$listbox1_ref->delete(0,'end');
opendir(DIR,'mail/');
@file = sort readdir(DIR);
@file = grep(!/^\.\.|^\./,@file);
foreach(@file) {
my $time = localtime((stat "mail/$_")[9]);
$$listbox1_ref->insert('end',$time);
}
}
ログには
Free to wrong pool 1ec5020 not 274dc8 at C:/Perl/site/lib/Tk.pm line 250.
と出て終わってるようです。refreshの処理中に落ちてるみたいです。
ググったところ、同じ症状の方もいるようですがこの場合の解決策が見つかりませんでした。
子プロセスから親プロセスのウィジェットにはアクセスできないのでしょうか?ご教授ください。OSはWinXP SP2です。
0402デフォルトの名無しさん
2008/06/09(月) 01:44:44色々はしょったら読みづらくなりました。
大変申し訳ないです。。
0403デフォルトの名無しさん
2008/06/09(月) 11:00:13キミ、シロウトだね。
0404 ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄
2008/06/09(月) 11:09:09,ノ \
/ ,r‐へへく⌒'¬、 ヽ
{ノ へ.._、 ,,/~` 〉 } ,r=-、
/ク ̄`y'¨Y´ ̄ヽ―}j=く /,ミ=/
ノ /ル'>-〈_ュ`ー‐' リ,イ} 〃 /
/ _勺 ミ;;∵r;==、、∴'∵; シ 〃 /
,/ └' ノ \ こ¨` ノ{ー--、〃__/
人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\
. / |/ |::::::|、 〃 /:::::/ ヽ
/ | |::::::|\、_________/' /:::::/〃
0405383
2008/06/09(月) 11:24:22-- define.pl ------
my $hoge = "hoge";
-- body.pl ------
do "define.pl";
print $hoge;
というファイルがあったとしても、body.plでdefine.plの変数が使えません。
どのようにすれば、他のファイルの変数を使えるようになりますか?
0406デフォルトの名無しさん
2008/06/09(月) 11:33:560407デフォルトの名無しさん
2008/06/09(月) 11:39:48なんというオチ
0408デフォルトの名無しさん
2008/06/09(月) 12:31:41my じゃなく、 our で宣言しろって事だよ。
0409383
2008/06/09(月) 13:03:46簡単に本を読んだのですが、myとlocalがあってmyを普通使う。localはあまり使わない。
という説明でした・・。
リャマ本というのを簡単に確認したのですが。ourって載ってます?
見つけられなかったのですが。
0410383
2008/06/09(月) 13:04:12お手数をおかけしてすみませんでした。
ありがとうございました。
0411デフォルトの名無しさん
2008/06/09(月) 13:22:51jこれだから小出しするやつはうぜぇ
0412デフォルトの名無しさん
2008/06/09(月) 13:38:55アルパカ本に載ってる。
0413273
2008/06/09(月) 13:41:12自己レス
いろいろと遠回りしたけど、ReadKey.pm入れ直しで
スンナリ解決しました。
ハァ・・・、なんですぐにやらなかったのか。
自己嫌悪だわ。
何時間費やしとんねん!
0414デフォルトの名無しさん
2008/06/09(月) 13:43:11こんな感じ↓
ttp://blog.livedoor.jp/dankogai/archives/50982802.html
0415デフォルトの名無しさん
2008/06/09(月) 13:46:16感じでブログとかに書いておくと,すげえ補足を書いてくれたりするよね。
俺はそういうところが好きだ。
0416デフォルトの名無しさん
2008/06/09(月) 13:48:00どのように書けばいいのでしょうか?
知らない用語ばかり出てきて、さっぱり答えにたどり着きません。。
例としてPHP版で書きます。これと同等の機能をPerlで書いてください。
お願いします。
class Hoge {
private $var1 = 'A';
function var1() {
return $this->var1;
}
function getValue() {
return 1;
}
}
class Hage extends Hoge {
function getValue() {
return 2;
}
}
$hogehoge = new Hoge();
print $hogehoge->getValue();
$hagehage = new Hage();
print $hagehage->getValue();
0417デフォルトの名無しさん
2008/06/09(月) 14:10:53use strict;
use warnings;
{ package Hoge;
sub new {
my $class = shift;
my $self = {var1 => "A"};
bless $self, $class;
return $self;
}
sub var1 {
my $self = shift;
return $self->{var1};
}
sub getValue {
my $self = shift;
return 1;
}
}
{ package Hage;
use base qw(Hoge);
sub getValue {
my $self = shift;
return 2;
}
}
my $hogehoge = Hoge->new();
print $hogehoge->getValue(), "\n";
my $hagehage = Hage->new();
print $hagehage->getValue(), "\n";
0418デフォルトの名無しさん
2008/06/09(月) 14:41:00一度perltootをキチンと読んでみては?
和訳↓
ttp://perldoc.jp/docs/perl/5.10.0/perltoot.pod
0419デフォルトの名無しさん
2008/06/09(月) 15:35:06使おうとしているものはCurses.pm
http://search.cpan.org/src/WPS/Curses-1.06/Curses.pm
です。もしよろしければご教授ください。
$ ls
Curses.pm* test.pl*
$ cat test.pl
#!perl
unshift @INC, ".";
use Curses;
exit;
$ perl -w test.pl
Can't locate loadable object for module Curses in @INC (@INC contains: 略 .) at test.pl line 4
Compilation failed in require at test.pl line 4.
BEGIN failed--compilation aborted at test.pl line 4.
$
0420デフォルトの名無しさん
2008/06/09(月) 15:48:350421デフォルトの名無しさん
2008/06/09(月) 15:54:074131048
4131053
x
x
4850328
x
x
x
x
3870357
3870369
x
x
4131038
4131045
x
x
x
この場合にxの行を一番最後の行の数値に置き換えたい場合
perlだとどのようにすればいいんでしょうか。
シェルでやろうとしたんですけどシェルだとちょっと難しいみたいなので
perlでやりたいと思ってます。誰かいいスクリプトを教えて下さい。
宜しくお願いします。
0422デフォルトの名無しさん
2008/06/09(月) 16:07:39use lib '.'やuse lib qw(.)を試してはいるんですが、>>419と同じエラーが出てしまいます。
また、use Curses;をuse ::Curses;として実行すると、>>419のCompilation failed in require at test.pl line 4.が消え、
Can't locate loadable object for module CursesもCan't locate /Curses.pmと表記が変わります。
0423デフォルトの名無しさん
2008/06/09(月) 16:51:43本当にCurcesモジュールをインストールしたのか?
Curses.pmをコピーしただけじゃないのか?
0424デフォルトの名無しさん
2008/06/09(月) 16:52:54ありがとうございます。
継承するときは、
use base qw(Hoge);
なんて書くんですね。
sub newってなんなんでしょう?
なんでそんな関数が必要なのですか?
0425デフォルトの名無しさん
2008/06/09(月) 16:55:17>コピーしただけ
はい。アクセス権の関係でインストールが出来ないので、
test.plと同じディレクトリにCurses.pmを配置し利用したいと思っています。
0426デフォルトの名無しさん
2008/06/09(月) 16:59:36だから、Cursesモジュールは、C言語で書かれたバイナリがメインで、
Curses.pmはそのインターフェイスでしかない。
ちゃんとコンパイルしてインストールしないとだめ。
エラーメッセージにある "loadable object" っていうのがそれ。
アクセス権の関係ってどういうこと? インストール過程で、
インストール先を指定できるぞ。
コンパイラも使えないのか?
0427デフォルトの名無しさん
2008/06/09(月) 17:00:37コンストラクタ
不精しないできちんとperltootを読め。
>>418
0428デフォルトの名無しさん
2008/06/09(月) 17:03:00聊かエスパーぎみにレス。↓こういう事がしたいのか?
$ perl -pe '$_=$t if/^x/; $t=$_' ba5.txt
4131048
4131053
4131053
4131053
4850328
4850328
4850328
4850328
4850328
3870357
3870369
3870369
3870369
4131038
4131045
4131045
4131045
4131045
0429421
2008/06/09(月) 17:16:09そのとおりです!
ありがとうございます!
0430デフォルトの名無しさん
2008/06/09(月) 17:17:17ありがとうございます。何か大きな勘違いをしていたようです。
Cの方でcurses/ncursesを使っていたので、システム上にcurses環境があると救いようの無いいい加減な誤認があり、
また、@INCサーチパス上にCurses.pmを置くことが出来ないのでアクセス権という的外れも甚だしい話をしてしまいました。
現在make中です。今のところエラーは吐いていません。
wget http://search.cpan.org/CPAN/authors/id/G/GI/GIRAFFED/Curses-1.23.tgz
tar xvf Curses-1.23.tgz
cd Curses-1.23
#Makefileの生成
perl Makefile.PL GEN PANELS MENUS FORMS
#コンパイル
make
0431デフォルトの名無しさん
2008/06/09(月) 17:28:19コンストラクタなんですか?
普通、コンストラクタは必要がある場合を除いて
書かないと思うのですが?
書かないとまずいですか?
0432デフォルトの名無しさん
2008/06/09(月) 18:16:160433デフォルトの名無しさん
2008/06/09(月) 18:24:44初心者には perltoot を読むのを薦めるよりも
perlboot を読むのを薦めた方が良いと思うよ
なんとなく読む気が無さそうな気配ではあるけども
5.8 なら以前どこかで perlboot の邦訳も見掛けたた気がするけど
0434デフォルトの名無しさん
2008/06/09(月) 19:43:23すげー。そういう意味だったのか。
そこまで読めなかったよ。
0435デフォルトの名無しさん
2008/06/10(火) 01:30:01その後、Perlはワンライナーでしか使わなくなってしまった。
その頃のXSの知識ってまだ使えるのかな。
0436デフォルトの名無しさん
2008/06/10(火) 03:06:370437デフォルトの名無しさん
2008/06/10(火) 04:02:570438デフォルトの名無しさん
2008/06/10(火) 11:24:140439デフォルトの名無しさん
2008/06/10(火) 12:02:49DOCTYPE 宣言が消えてしまいます。
対処法がありましたら教えて下さい。
0440439
2008/06/10(火) 13:58:23http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/htmlpaser.html
use HTML::FillInForm;
use base qw(HTML::FillInForm);
sub comment {
my($self, $text) = @_;
$self->{output} .= "<!--$text-->";
}
sub declation {
my($self, $text) = @_;
$self->{output} .= "<!$text>";
}
0442デフォルトの名無しさん
2008/06/11(水) 15:39:31requireすると、後の内容で上書きされてしまいますが、元のサブルーチンを壊さないですむ
方法はないでしょうか。
0443デフォルトの名無しさん
2008/06/11(水) 18:07:18皆さん、エスパーでよろ。
意図した挙動にならず、どこが問題かのきっかけも掴めずにかなり時間をかけてしまったが、
ようやくやりたいこと出来た。が、どうにも腑に落ちない。
DB(mysql)からデータとってきて、Scraperに渡して・・・と、こんな感じで組んでいたんだけど、
レコード数は3とします。
パターン1------------------------------------
$rows = $sth->rows;
print "hajimari";
while(my $ref=$sth->fetchrow_hashref()){
$scraper->scrape($ref->{url});
print "roop dayo";
}
print "owari";
このような感じでやっていたんだが、ループが1回しか回らない!?なんで?
てなことで、webで情報あさったり、モジュールのソース眺めてもわからんし。
0444デフォルトの名無しさん
2008/06/11(水) 18:07:56パターン2------------------------------------
$rows = $sth->rows;
print "hajimari";
while(my $ref=$sth->fetchrow_hashref()){
print "roop dayo";
}
print "owari";
と、Scraperになげなかったら、ちゃんと3回ループするんだよね。
でScraperでこけてんのかと思いきや、これも特に見当たんない。
問題なさそうだ・・・。
0445デフォルトの名無しさん
2008/06/11(水) 18:08:25パターン3------------------------------------
$rows = $sth->rows;
print "hajimari";
$i = 0;
while(my $ref=$sth->fetchrow_hashref()){
$url[$z] = $ref->{url};
$i++;
}
for($z = 0;$z < $rows;$z++){
$scraper->scrape($url[$z]);
}
print "owari";
ちょいと思うところがあり、一旦配列にほりこんでみる・・・。
キター!!!3回まわったじゃんか!
ふむ、思うところというのは、Scraperでこけないでループ1週目は
ちゃんとループしているということ。
で、結局ちゃんとした原因が解ってないんだけど、メモリ制限とか
あるのかな?
アドバイス下さい。
(もしかしたら、CGIまわりの問題?)
OS:FreeBSD
Perl:5.8.3
0446デフォルトの名無しさん
2008/06/11(水) 18:44:140447デフォルトの名無しさん
2008/06/11(水) 18:47:020448デフォルトの名無しさん
2008/06/11(水) 18:48:590449デフォルトの名無しさん
2008/06/11(水) 18:52:180450デフォルトの名無しさん
2008/06/11(水) 18:56:500451デフォルトの名無しさん
2008/06/11(水) 18:59:07$hoge->{'hoged'} = [];
}
push(@{$hoge->{'hoged'}}, $hoging);
これをスマートに書く方法ありませんか?
ちなみに$hogingは2箇所以上に書くなら一時変数必要です。
0452デフォルトの名無しさん
2008/06/11(水) 19:04:06★処理の方法
行の先頭が [ の場合には、行の先頭が 20 の行の先頭にそれを加える
行の先頭が 空白の場合には一旦処理を終えて再度行の先頭の [ を読む
行の先頭に < がきた場合にはその処理を終えて再度行の先頭の [ を読む
結合した場合、その文字列の最後に必ず区切り文字としてタブを挟む
●処理前のabc.txt
<100100>
[1044]あいうえお
20321 1137 4850328 60
20321 1137 4850328 60
20321 1137 4850328 60
【合計1044】
[1047]かきくけこ
20319 1090 3870357
20319 1101 3870369
【合計1047】
[1051]さしすせそ
20328 1206 4131038 52
20328 1206 4131045 52
20328 1206 4131045 52
【合計1047】
【累計】
<100200>
[1057]たちつてと
20328 1206 4131045 52
20328 1206 4131045 52
0453デフォルトの名無しさん
2008/06/11(水) 19:04:54<100100>
[1044]あいうえお 20321 1137 4850328 60
[1044]あいうえお 20321 1137 4850328 60
[1044]あいうえお 20321 1137 4850328 60
【合計1044】
[1047]かきくけこ 20319 1090 3870357
[1047]かきくけこ 20319 1101 3870369
【合計1047】
[1051]さしすせそ 20328 1206 4131038 52
[1051]さしすせそ 20328 1206 4131045 52
[1051]さしすせそ 20328 1206 4131045 52
【合計1047】
【累計】
<100200>
[1057]たちつてと 20328 1206 4131045 52
[1057]たちつてと 20328 1206 4131045 52
どうかよろしくお願いします。
0454デフォルトの名無しさん
2008/06/11(水) 19:15:23宿題を肩代わりするスレじゃないんだけど。
少しはperl文を書いてから出なおせ。
0455デフォルトの名無しさん
2008/06/11(水) 19:33:310456デフォルトの名無しさん
2008/06/11(水) 19:39:49push(@{$hoge->{'hoged'}}, $hoging);
0457デフォルトの名無しさん
2008/06/11(水) 19:55:00学部生いわく。
0458443
2008/06/11(水) 19:59:01おしかりありがとう御座います。
デバックの仕方を勉強します。
Data::Dumper
で一目瞭然でした。
猛省します。
原因はなんだったのかって?恥ずかしすぎて・・・。
言いたくないんですけど。
ループ内で。。。、DBハンドルが・・・。
ごめんなさいごめんなさいごめんなさい
猛省します。
大事なことなので2回言いました。
0459デフォルトの名無しさん
2008/06/11(水) 20:17:52ありがとう。解決した。
0460454
2008/06/12(木) 01:05:52すみません。bashで書いていたんですけどbashだとうまくいきそうにないので
perlでお願いしてみました。すみません。bashのコードとしては以下のような感じです。
無茶苦茶なコードですみません。
#!/bin/bash
for iii in `cat abc.txt`
jjj=`sed -n '2p'`
do
if test [ $jjj = "^20" ]
then
paste "$jjj" "\t" "$iii" > ccc.txt
else
fi
done
bashでは無理っぽいのでスクリプトも途中までの処理しかしてないです。
perlで処理すればと思ってお願いにきました。perlはあまりよくわからないのでお願いします
0461452
2008/06/12(木) 01:08:150462デフォルトの名無しさん
2008/06/12(木) 01:36:40つまり、「一旦処理を終えて」と「その処理を終えて」がどう違うのかとか、
そもそも「その処理」や「その文字列」とは何なのかとか、
行の先頭が空白なのに行の先頭の[を読めとはどういうことなのかとか分からない。
0463デフォルトの名無しさん
2008/06/12(木) 02:15:05この程度、forと正規表現使えばどうにでもできるだろ
あと、処理の方法はひどすぎる
自分でもう一回読んでみろ
0464デフォルトの名無しさん
2008/06/12(木) 06:43:04俺は、「perl文を書いてから出なおせ」と書いた。bashなんか求めてねえ
お前さんがperlで書く気0なのに答えてやる義理なんざねえよ
「perlの知識0です。エスパーしてください。」
って質問には>>428で答えてしまって反省してんだよ
>>436のリンク先でも読んでちったー自分で考えろ
0465デフォルトの名無しさん
2008/06/12(木) 09:42:25require するときに退避しといて戻せばいいんじゃない?
{
local *hoge::f;
require ...
}
これだと$hoge::fも影響受けるのがやりすぎだというなら、
{
local *hoge::f = sub{};
require ...
}
0466デフォルトの名無しさん
2008/06/12(木) 11:03:25オブジェクト指向に設計すれば問題なす
0467デフォルトの名無しさん
2008/06/12(木) 11:08:45Exporter使う方が楽だろうと思う。
読みたいファイルが他人が作ったもので中身も見たくない
のならしょうがないけどな。
0468デフォルトの名無しさん
2008/06/12(木) 11:20:590469デフォルトの名無しさん
2008/06/13(金) 01:15:19% ./hanage.pl -help
を do とかを通してやりたい時、というです。
@ARGV=("-help"); # とかしておいて、
do "hanage.pl"; # とすると、実現できているようですけど、これが普通でしょか?
また、ほかに方法があれば。
0470デフォルトの名無しさん
2008/06/13(金) 02:07:040471469
2008/06/13(金) 02:46:35ひとつは、ほかのやり方を知りたいから。"There's more than one way to do it"
目から鱗、鼻から悪魔、みたいな記述が perl ならまだある筈だと。
自分の例だと面白くも何ともないのでねぇ。
0472デフォルトの名無しさん
2008/06/13(金) 06:34:01local @ARGV=("-help");
do "hanage.pl";
}
とかでいいだろ。べつに@ARGVじゃなくてもいいけど。
0473デフォルトの名無しさん
2008/06/13(金) 06:55:17require EXPR ですら、perl4的でどうしても避けられない場合にのみ嫌々使うんだけど
0474デフォルトの名無しさん
2008/06/13(金) 08:10:51@listに複数行に,で区切られた5つのデータがあるとします。
my $cnt = 0;
foreach( @list){
@list2[$cnt] = split( /,/, $_);
$cnt++;
}
というのを考えたのですが、
Use of implicit split to @_ is deprecated
どのようにすればいいのでしょうか?
0475デフォルトの名無しさん
2008/06/13(金) 08:21:53@list2[$cnt] = @_ = split( /,/, $_);
0476デフォルトの名無しさん
2008/06/13(金) 08:22:410477デフォルトの名無しさん
2008/06/13(金) 08:54:07@{list2->[$cnt]}
0478デフォルトの名無しさん
2008/06/13(金) 08:58:33@{$list2[$cnt]}
0479デフォルトの名無しさん
2008/06/13(金) 09:27:49#--- config.file ---
my $dir = '/path/to/base/dir';
{
foo => 1,
bar => [ 2..5 ],
baz => "$dir/extra.file",
};
#---
なんて設定ファイルを作って
$conf = do '/path/to/config.file';
で読むという手抜き実装はよくする。
設定ファイルを Perl で書けるのが柔軟で楽。
0480デフォルトの名無しさん
2008/06/13(金) 12:06:38useだとコンパイル時に読み込まれちゃうから
動的に読み込むファイル決める場合は
"use $file;"するかdo "$file"するくらいしかないじゃん
前者よりはdoのほうが素直じゃね?
0481デフォルトの名無しさん
2008/06/13(金) 12:21:25動的に use したいだけなら require の方がもっと素直だね。
0482デフォルトの名無しさん
2008/06/13(金) 12:34:19レスthx.
config file だったらYAMLとかそっち使っちゃってるw
480の方は状況があまり想像出来ん。Storable知る前だったら
Data::Dumperの出力云々で使ったかもしれんが…。
俺に機会が無いだけなのねw
0483デフォルトの名無しさん
2008/06/13(金) 12:38:20481氏の意見と同じ感覚。
0484デフォルトの名無しさん
2008/06/13(金) 13:34:153番目の要素でソートしたりできませんか?
0485デフォルトの名無しさん
2008/06/13(金) 13:38:49perlを使うよりsortコマンドのほうが早そうだけど?
0486デフォルトの名無しさん
2008/06/13(金) 13:41:010487デフォルトの名無しさん
2008/06/13(金) 13:42:390488デフォルトの名無しさん
2008/06/13(金) 14:09:470489デフォルトの名無しさん
2008/06/13(金) 14:27:270490デフォルトの名無しさん
2008/06/13(金) 14:29:25import sys, csv
from itertools import imap
from operator import itemgetter
writer = csv.writer(sys.stdout)
for row in sorted(csv.reader(sys.stdin), key=itemgetter(2)):
writer.writerow(row)
0491デフォルトの名無しさん
2008/06/13(金) 14:31:09無視して
0492デフォルトの名無しさん
2008/06/13(金) 14:31:490493デフォルトの名無しさん
2008/06/13(金) 15:02:190494デフォルトの名無しさん
2008/06/13(金) 15:10:110495デフォルトの名無しさん
2008/06/13(金) 15:31:56関数の引数の扱いがよくわかりません。
たとえば、
sub test{
# $_[0] == "test";
# $_[1] == "test2";
}
&test( "test", "test2");
となるとおもうのですが、
@test = ( "test", "test2");
&test( "test", @test);
としたばあい、引数はどうなるのでしょうか?
色々と試してみたのですが、
&test( @test);
としたばあいは、
@_ == @test;
だということはわかったのですが・・。
(もし違っていたら指摘していただけるとありがたいです。
0496デフォルトの名無しさん
2008/06/13(金) 15:35:180497デフォルトの名無しさん
2008/06/13(金) 17:04:22sort -k3 -t, -n < FILE
0498デフォルトの名無しさん
2008/06/13(金) 18:04:30上記の質問を参考に、
test.cgi ---
require './hoge.pl';
とかいて、
hoge.pl ---
our $test = "hogee";
1;
とかいているのですが、
perl test.cgi
すると、$testは読めていないようです。
ながに悪いでしょうか?
0499デフォルトの名無しさん
2008/06/13(金) 18:29:00マニュアルを見ずに仕様を突き止めるゲームでも開催されてるの?
0500デフォルトの名無しさん
2008/06/13(金) 18:36:22「$testは読めていないようです。」の「ようです」に隠された何か。
0501デフォルトの名無しさん
2008/06/13(金) 18:40:32そうなのか。不治の病にかかってしまった。
0502デフォルトの名無しさん
2008/06/13(金) 21:09:260503デフォルトの名無しさん
2008/06/14(土) 00:01:01splitをスカラコンテクストで使ってはいけない。
0504デフォルトの名無しさん
2008/06/14(土) 08:59:12というコードをwindows上で実行し入力待ちの状態でウィンドウ右上の×印を
押すと「すぐに終了」のダイアログが出てきてしまいます。
入力待ちの状態では$SIG{'QUIT'}をキャッチすることが出来ません。
Term::ReadLine等も試しましたが挙動は同じでした。
入力待ちの状態でも正常終了するようにすることは出来ないでしょうか。
0505デフォルトの名無しさん
2008/06/14(土) 18:33:050506デフォルトの名無しさん
2008/06/15(日) 00:06:19自前でwindow開かないと無理と思われ。
0507デフォルトの名無しさん
2008/06/15(日) 15:27:140508デフォルトの名無しさん
2008/06/15(日) 15:50:42出来るよ。
0509デフォルトの名無しさん
2008/06/15(日) 16:06:21簡単なサンプルでいいんでコードを書いて頂けませんか?
0510デフォルトの名無しさん
2008/06/15(日) 16:17:38ググれば例などいくらでも出てくるんだが?
perl -MData::Dumper -le 'print Dumper sort { $a->[1] <=> $b->[1] } ( [2,3],[3,2] ) ;'
$VAR1 = [ 3, 2 ];
$VAR2 = [ 2, 3 ];
0511デフォルトの名無しさん
2008/06/16(月) 08:14:00削除したいのですが、どうすれば良いでしょうか?
0512デフォルトの名無しさん
2008/06/16(月) 09:38:40http://perldoc.jp/docs/perl/5.10.0/perlfaq5.pod
を、「ファイルのある行を削除する」で検索。
0513デフォルトの名無しさん
2008/06/16(月) 09:39:22#!C:/perl/bin/perl
open(IN,"example.log");
while(<IN>){
if($_ =~ /hoge/){ $line .= "\n"; }
else{ $line .= "$_\n"; }
}
close(IN);
open(OUT,">exmple.cgi");
print OUT $line;
close(OUT);
print"Content-type:text/html\n\n";
print "消去完了";
みたいな感じですか?
Perlコーディング初心者質問スレ Part 57
http://pc11.2ch.net/test/read.cgi/php/1203935151/l50
0514デフォルトの名無しさん
2008/06/16(月) 10:18:02222
333
444
555
666
というようなファイルがあったとして(数字は仮定です)3行目の行の
先頭にtabを2つ入れたい場合、どのようにすればいいのでしょうか。
0515デフォルトの名無しさん
2008/06/16(月) 10:24:450516デフォルトの名無しさん
2008/06/16(月) 10:28:50……
行数を数えながら一行ずつ読み込むループにして
if 3行目 then
先頭にtabを2つ入れる
読み込んだ行を出力する
という中身を回せばいいよ。
0517デフォルトの名無しさん
2008/06/16(月) 10:33:18質問先は「くだすれPerl(超初心者用)2」
http://pc11.2ch.net/test/read.cgi/php/1204488452/l50
が良いらしいです。
0518デフォルトの名無しさん
2008/06/16(月) 10:50:21>>513
すいません、間違ってました。
http://pc11.2ch.net/test/read.cgi/tech/1208674881/511
0519デフォルトの名無しさん
2008/06/16(月) 15:50:09どのようなほうほうがありますか?
0520デフォルトの名無しさん
2008/06/16(月) 15:55:16正規表現使う典型ケースです
0521デフォルトの名無しさん
2008/06/16(月) 16:00:36http://perldoc.jp/docs/perl/5.10.0/perlfaq4.pod
を、「文字列の先頭や末尾にある空白を剥ぎ取るには?」で検索。
0522デフォルトの名無しさん
2008/06/16(月) 16:01:41http://pc11.2ch.net/test/read.cgi/php/1204488452/292
0523デフォルトの名無しさん
2008/06/16(月) 16:08:16>>522
連投すいません。修正です。
http://pc11.2ch.net/test/read.cgi/php/1204488452/293
初歩質問はこちらが良いらしいです。
http://pc11.2ch.net/test/read.cgi/php/1204488452/l50
0524デフォルトの名無しさん
2008/06/18(水) 01:11:06HTML数値エンティティを文字に変換する際にはどうすればよいでしょうか。
下記の通りに実行したのですがうまくいきません
(-ÿしか対応していない?)
#!/usr/bin/perl
use HTML::Entities::Numbered;
$str='あいうえお';
print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される
0525524
2008/06/18(水) 01:12:01ですorz
0526デフォルトの名無しさん
2008/06/18(水) 04:57:49> print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される
いや、期待するなよ。
0527デフォルトの名無しさん
2008/06/18(水) 06:29:13HTML::Entities::decode
を使うのではないか?
0528デフォルトの名無しさん
2008/06/18(水) 12:04:39Perlやってる友達がお前こんなのもできないだろと自慢してくるので、明日までにこれをやらないとまたバカにされるのですが、
プログラム自体やったことがなく意味不明すぎてよくわかりません。。誰かもしよかったら教えてください。
キーボードから整数値$aの値を入力してEnterを押し、
続けて$bの値を入力してEnterを押すと、
$aを 3 倍した値と、$bを 8 倍した値の和 を計算して$cに代入し,
$cの値を画面に出力するプログラム
結果は
print "$cn";
の形で出力する
この結果の出力以外の画面出力はしないこと.
0529デフォルトの名無しさん
2008/06/18(水) 12:10:09その友達に教えてもらいなさい
0530デフォルトの名無しさん
2008/06/18(水) 12:14:12というか、その友達から出された問題なんです。
0531デフォルトの名無しさん
2008/06/18(水) 12:23:420532デフォルトの名無しさん
2008/06/18(水) 12:37:230533デフォルトの名無しさん
2008/06/18(水) 12:40:17を表現するのに、これ↓はありなのか?
return 0 if rand(1000) > 100;
0534デフォルトの名無しさん
2008/06/18(水) 12:51:550535デフォルトの名無しさん
2008/06/18(水) 12:52:56randが正規乱数だと仮定するならありだろ。
0536デフォルトの名無しさん
2008/06/18(水) 13:05:29randが一様乱数を吐くのならありかもしれんが
0537デフォルトの名無しさん
2008/06/18(水) 13:50:36お前こんなのもできないのか
0538デフォルトの名無しさん
2008/06/18(水) 14:25:04どっかで配布されてる非常に綺麗で整理された記述を教えてください。
あまりにいっぱい配布されすぎててチェックできません。
0539デフォルトの名無しさん
2008/06/18(水) 14:39:00man perlstyle
つーか、好きにしろ
0540デフォルトの名無しさん
2008/06/18(水) 16:10:12perl medicとかは偏ってはいるけど
ポリシーとしてはまあ参考になるかもしれん
買うまでの事は無い本なので図書館で探せ
0541524
2008/06/18(水) 21:54:54HTML::Entities::decode で無事に出来ました
今後はマニュアルをしっかり読みますm(_ _)m
ありがとうございました
0542デフォルトの名無しさん
2008/06/18(水) 22:32:54ここはPerlのスレですよ?
0543デフォルトの名無しさん
2008/06/18(水) 22:37:24Plagger読んどけ
0544デフォルトの名無しさん
2008/06/18(水) 23:17:04perl -e 'print <STDIN>*3+<STDIN>*8,"\n"'
0545デフォルトの名無しさん
2008/06/18(水) 23:37:400546デフォルトの名無しさん
2008/06/18(水) 23:54:10544とは別人だけど。
perl -e '$c=<>*8+<>*3;print"$c\n";'
また、次の問題を出されるだろうから、がんばって。
0547デフォルトの名無しさん
2008/06/19(木) 02:35:19> また、次の問題を出されるだろうから、がんばって。
なにを?
0548デフォルトの名無しさん
2008/06/19(木) 02:42:540549デフォルトの名無しさん
2008/06/19(木) 03:10:40猫おばさん探し
0550デフォルトの名無しさん
2008/06/19(木) 04:46:30生きるべきか、死ぬべきか。
もちろん死ぬべきだけど。
0551デフォルトの名無しさん
2008/06/19(木) 04:57:270552デフォルトの名無しさん
2008/06/19(木) 08:38:480553デフォルトの名無しさん
2008/06/19(木) 09:00:27自分の考えだと、
return 1 if rand(1000) < 100
この方が人間がソースを読んだときに理解しやすいのだが、
もしかして、前述のは、
「90%の確率でボツにする」
って意味なのかな。
0554デフォルトの名無しさん
2008/06/19(木) 09:23:22(1)rand(100)で、0から99.9999までの数値を生成する。
(2)intで、小数点以下を切り捨てて、整数にする。
(3)できた数字に1を足す
(4)1から100までの数字ができる
(5)その中で、1から10までの範囲に入ったらtrueにする
↑こうしたほうが、人間が読んでわかりやすくて
なおかつ正確だと思う。
0555デフォルトの名無しさん
2008/06/19(木) 10:13:54アンパサンド(&)がくっついてる文字列は
基本的にサブルーチンを呼び出している、って
考えていいの?
他にアンパサンド&が使われる局面は
&&でandって意味、っていうケースしか
ないみたいだけど。
他にもあるの?
0556デフォルトの名無しさん
2008/06/19(木) 10:17:380557デフォルトの名無しさん
2008/06/19(木) 10:24:26ぐぐっても検索できないし
ビット演算子で&てあるね
0558デフォルトの名無しさん
2008/06/19(木) 10:25:17サブルーチンの中で、
my
を使わずに変数を宣言すると、
それは基本的に必ず自動的に全部
グローバル変数となってしまうの?
0559デフォルトの名無しさん
2008/06/19(木) 10:26:37て解説は普通にどんな参考書にも載ってるけど、逆に
「&をソースコード中に発見したら、それは
どんな処理をしている可能性がありますか?
考えられる可能性を全部あげなさい」
って質問は、パールのことを熟知してる人しか
答えられない。
0560デフォルトの名無しさん
2008/06/19(木) 10:27:13ひとつの宿題に答えると、30の宿題が投入されます。
そして、Perlで良い成績を取ったPerlを知らないバカが業界にやってきます。
0561デフォルトの名無しさん
2008/06/19(木) 10:31:03(1)サブルーチンを呼び出している
(2)論理和andの意味である
(3)ビット演算をしている
以上の3つの可能性があり、
そのうちどれに該当するかは、
それを書いたププログラマーに
メールで質問するか、自分で
空気を読んで直感で判断する。
こうですか?わかりません
0562デフォルトの名無しさん
2008/06/19(木) 10:31:10それはウソ
0563デフォルトの名無しさん
2008/06/19(木) 10:33:17質問するほうも答える方も時間の無駄だ。
0564デフォルトの名無しさん
2008/06/19(木) 10:36:29myってサブルーチン内でしか宣言したらだめなの?
もしメインルーチン内でmyを宣言したらどうなるの?
エラーになるの?
0565デフォルトの名無しさん
2008/06/19(木) 10:51:220566デフォルトの名無しさん
2008/06/19(木) 10:52:51なかなかそういう発想にはならないんだよ
脳外科手術とか、
飛行機の操縦とか、
宇宙船の建設とか。
0567デフォルトの名無しさん
2008/06/19(木) 10:59:120568デフォルトの名無しさん
2008/06/19(木) 10:59:31逆引きIndexが巻末に無いか?
0569デフォルトの名無しさん
2008/06/19(木) 11:10:30索引で&や&&はすぐ探せると思うけど、$&を探すのは結構大変だと思います。
0570デフォルトの名無しさん
2008/06/19(木) 11:16:57著者がバカだと載ってない。
ていうか、プログラマーって
「一度読んだら記憶する」
って記憶力が高い人が多いけど、
「自分は記憶してるから他人も記憶してるだろう」
っていう、勝手な性格な人が多い。
0571デフォルトの名無しさん
2008/06/19(木) 12:21:50それゆえ、初心者向けの解説本のほとんどはまともでないプログラマか、
そもそもプログラマでもないようなライターが書いていて、往々にして不正確である。
0572sage
2008/06/19(木) 12:58:08この色は変更できるのでしょうか?
0573デフォルトの名無しさん
2008/06/19(木) 13:58:120574デフォルトの名無しさん
2008/06/19(木) 13:58:54それ、 rand(100) < 10 でいいやん。
0575デフォルトの名無しさん
2008/06/19(木) 14:03:500576デフォルトの名無しさん
2008/06/19(木) 16:11:54>っていう、勝手な性格な人が多い
反面、言語仕様なんだから知ってて当たり前、
知らなかったら仕様くらい自分で調べろって風習もある
0577デフォルトの名無しさん
2008/06/19(木) 16:15:51だからセガガガでもはや人間ではなくなってしまった人々とかって
言われるんです!
だいたい人間から遠い順にクラス分けして
(1)0と1だけでプログラミングするヤツ
(2)マシン語だけで
(3)アセンブラで
(4)Cで
(5)VBで
(6)perlで
(7)HTMLで
って階層になってると思う。
数字が多いほど人間。
0578デフォルトの名無しさん
2008/06/19(木) 16:19:08これって
0から99.999999.....の数を生成して、
9.999999.....以下だったらtrueですよね。
本当に10%になってます?
0579デフォルトの名無しさん
2008/06/19(木) 16:22:030580デフォルトの名無しさん
2008/06/19(木) 16:26:39実際にやってみると楽しめるんじゃないかな。
0581デフォルトの名無しさん
2008/06/19(木) 16:29:55違うだろww9.999999.....未満www
0582デフォルトの名無しさん
2008/06/19(木) 16:40:11どーも
0583デフォルトの名無しさん
2008/06/19(木) 16:49:47> プログラマーって「一度読んだら記憶する」って記憶力が高い人が多い
間違い。別に記憶力はそんなに高くない。
限りある記憶力を、どう駆使すれば効率よく作業できるかを日々模索しているだけ。
わかりやすい例としては「根っこの知識と、調べ方」を身につけて、その領域の殆どを"事実上"カバーするとか。
> 「自分は記憶してるから他人も記憶してるだろう」
これはもっと間違い。
「真面目に勉強しているなら、記憶力を上手に駆使する技術を磨こうとするだろう」
が正解。
君の書き方は、とびっきり馬鹿でとびっきり怠惰なクソ野郎が、現状をどう曲解すれば
「自分は悪くない、周囲のプログラマが勝手な性格なだけ」
という方向に話を持って行けるか、を頑張ってこじつけた結果に過ぎないよ。
0584デフォルトの名無しさん
2008/06/19(木) 16:58:03記憶するためには時間が必要で、時間は物理的な限界があるが。
0585デフォルトの名無しさん
2008/06/19(木) 17:05:51その「障害者」の判断なんかもっと突っ込みの対象だと思うよ。
自爆かこわるい。
0586デフォルトの名無しさん
2008/06/19(木) 17:57:310587デフォルトの名無しさん
2008/06/19(木) 19:18:45べつにぃ、rand(10) < 1 でも、rand(3) < 0.3 でも何でもいいよ。好きにすればぁ。
お題が「10%の確率」だから、「100 分の 10」と考えるのが自然だろ?
0588デフォルトの名無しさん
2008/06/19(木) 21:46:45HTMLでプログラミングするやつは人間じゃないと思う。
あ、でも(1)よりは人間かもしれん。
0589デフォルトの名無しさん
2008/06/19(木) 23:17:28関連スレに算譜系が一つもないのは何故なんだwww
0590デフォルトの名無しさん
2008/06/19(木) 23:22:15プログラマは割とよく見かける
「当たり前じゃん何言ってんの」的な。
>自分が知っているから他人も知ってい
るだろう
0591デフォルトの名無しさん
2008/06/20(金) 01:10:36それはメチャメチャよくいる
0592デフォルトの名無しさん
2008/06/20(金) 07:40:48どうしてでしょう?
0593デフォルトの名無しさん
2008/06/20(金) 07:41:33経験不足なんかもあるのかもしれんが、社会性が子供なのが一因かとも。
0594デフォルトの名無しさん
2008/06/20(金) 08:53:57本当にINTを送っているか点検せよ
0595デフォルトの名無しさん
2008/06/20(金) 10:46:43いいところに気がついたな。2進数が基本な大方のコンピュータの
擬似乱数発生器は大抵Nビットの整数を作るようになっているので
発生されうる数は2^N個だから、1回発生させた乱数がどの範囲に
あるかの判定だけでは絶対に1/10にはならない。
0596デフォルトの名無しさん
2008/06/20(金) 12:41:10kill 'INT',殺すプロセス番号
と送っています。
ちなみにプラットホームはWinXP、Perl5.8.0
0597デフォルトの名無しさん
2008/06/20(金) 12:59:13こんな記法は誰から教わった? 闇討ちしてやれ。
0598デフォルトの名無しさん
2008/06/20(金) 13:00:55なんかすごい人がきたな。
あなたはパーラーレベル14以上ですね?
0599デフォルトの名無しさん
2008/06/20(金) 13:03:32Xpは9と15しか送れないみたいだな。
C:\>kill -l
SIGKILL(9) SIGTERM(15)
0600デフォルトの名無しさん
2008/06/20(金) 13:16:10perl win32 signalでぐぐったらこんなのでました
ttp://aspn.activestate.com/ASPN/Mail/Message/pdk/1285590 (ほとんど同内容の質問)
ttp://aspn.activestate.com/ASPN/Mail/Message/pdk/2064809 (その回答)
かいつまんでいうとkillはTerminateProcessを呼んでるだけでどのシグナルか
という情報は落ちているからどうにもならんらしいよ。
0601デフォルトの名無しさん
2008/06/20(金) 18:50:360602デフォルトの名無しさん
2008/06/20(金) 18:57:21マジ?
そりゃ詐偽じゃない?
一言マニュアルに書いて欲しい…
0603デフォルトの名無しさん
2008/06/20(金) 19:49:01書いてある
0604デフォルトの名無しさん
2008/06/20(金) 20:18:545.8.1で修正入ってるよ。Changes5.8.1に以下のような記述がある。
[ 20572]
Subject: [PATCH] kill 'INT' doesn't work on Windows
From: Jan Dubois <[email protected]>
Date: Fri, 08 Aug 2003 17:49:03 -0700
Message-ID: <[email protected]>
ソース(win32/win32.c)見たけどSIGINTのときは
GenerateConsoleCtrlEvent(CTRL_C_EVENT,pid)
を使ってそれっぽく動くように改良したらしい。
0605デフォルトの名無しさん
2008/06/21(土) 04:39:05不安定ソートだとしたら、そこそこ軽くて使いやすい安定ソートの方法は?
0606デフォルトの名無しさん
2008/06/21(土) 05:24:08いろんな状況でかなり速いです。
変な順の入れ替えは起きないって記憶してるから安定だと思います。
全部あやふやな回答ですが信用率90%です。(俺の自己採点)
0607デフォルトの名無しさん
2008/06/21(土) 05:36:53sortプラグマで切り替えられる。
perldoc sortでも読んどいてくれ。
0608デフォルトの名無しさん
2008/06/21(土) 07:13:54ここ見てたんだけど、ダメなのかな。英語読むしかないかな……?
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_sort_SUBNAME_LIST
>sortプラグマ
use sort 'stable';
あ、これっぽい。
これでバージョンの関係でダメだったら笑ってください。
0609デフォルトの名無しさん
2008/06/21(土) 08:21:41perl5.8 以降ではデフォのsortアルゴリズムは mergesort 。perl5.6 系では quicksort。
で 5.8 系 mergesort は望もうが望むまいが stable(5.6 系がそうなのかは知らん)。
0610デフォルトの名無しさん
2008/06/21(土) 08:34:03いちいちバイナリ=>文字列変換していると計算コストがかかってしまいます。
バイナリデータのままで比較することってできますか?
たとえばバイナリデータで00の箇所を文字列変換しないで探せないかどうか。
0611デフォルトの名無しさん
2008/06/21(土) 10:16:47if($@){} のルートをとおそうとしています。
でも、$@ = error; などとしても、$@ は空のままでした。
$@ 変数に無理やり値をセットすることはできないのでしょうか?
0612デフォルトの名無しさん
2008/06/21(土) 10:58:03例えば、料理のサイトに検索ボックスが有ったとして、そこに『カレー』と打てば
カレーに関するレシピが出るという作りになっていたとします。
それを、perlのスクリプトを実行して、『カレー』のレシピが出で、連続して『肉じゃが』
と打てば肉じゃがのレシピが表示されるというようなスクリプトです。
一々、検索ボックスにマウスポインタを持っていかないで、コマンドプロンプトのみで
操作できると楽なんですが。
0613デフォルトの名無しさん
2008/06/21(土) 11:10:51それができない言語がもしあるなら教えて欲しいもんです
0614デフォルトの名無しさん
2008/06/21(土) 12:16:10"\x0"使えばいんじゃないの?
というか変換しないと探せないってどういう意味かよくわからない。
0615デフォルトの名無しさん
2008/06/21(土) 12:17:40$errcode = @$;
としてからこっちの変数つかえばいんじゃないの?
あと error じゃなく "error" じゃないの?
0616デフォルトの名無しさん
2008/06/21(土) 14:04:46> perlでバイナリファイル内の検索を行おうと思ってるんですが、
> いちいちバイナリ=>文字列変換していると計算コストがかかってしまいます。
バイナリ=>文字列変換なんて明示してやらせないぎり起きないだろう。
> バイナリデータのままで比較することってできますか?
できるよ。
0617デフォルトの名無しさん
2008/06/21(土) 15:53:11「指定したURLを何かのブラウザで表示する」という機能が必要だから
出来ない言語もあるんじゃね?
0618デフォルトの名無しさん
2008/06/21(土) 16:15:23勝手に条件を増やすなよ。
そんなことどこにも書いてないだろw
0619デフォルトの名無しさん
2008/06/21(土) 16:27:28出来ない言語もあるんじゃね?
0620デフォルトの名無しさん
2008/06/21(土) 16:35:35料理のサイトで検索したレシピを表示する、っていうんだから、
単純に考えればそのサイトをブラウザで表示するってことだろ。
0621612
2008/06/21(土) 16:42:37まだ勉強したての自分には難しそうですね。
感じとしては、スクリプトに<STDIN>
0622612
2008/06/21(土) 16:47:56感じとしては、スクリプト内に<STDIN>を書いておいて、実行時に
『カレー』と打ち込んだら、サイト内にある検索ボックスにその文字が
反映されて自動的に検索できないかと考えています。
連続して『肉じゃが』と打ったら今度はその文字が検索ボックスに反映
されて、自動的にページを表示するようなスクリプトを書きたいと考えています。
0623デフォルトの名無しさん
2008/06/21(土) 16:50:39あそう。じゃあ書きなよ。
0624デフォルトの名無しさん
2008/06/21(土) 16:58:12不愉快な思いをさせて申し訳ありませんでした。
0625デフォルトの名無しさん
2008/06/21(土) 17:00:330626611
2008/06/21(土) 17:15:36>$errcode = @$;
こんなやりかたがあるなんて知らなかったです。
これで、$@ に値をセットすることができるのでしょうか?
今度やってみます。
0627デフォルトの名無しさん
2008/06/21(土) 17:20:37HTMLでフレーム作れば済みそうだ。
自前の入力欄と、レシピ表示のフレームで。
Javascriptでいつでも検索欄にフォーカスがくるようにすればいいんじゃないかな。
0628デフォルトの名無しさん
2008/06/21(土) 17:28:40あたまわいてんのか
0629デフォルトの名無しさん
2008/06/21(土) 22:16:57ActivePerlとCygwinのPerlではどちらがお薦めでしょうか?
0630デフォルトの名無しさん
2008/06/21(土) 22:55:05すべての実行端末に ActivePerl をインストールさせることが可能なら ActivePerl。
すべての実行端末に Cygwin 一式をインストールさせることが可能なら Cygwin。
0631デフォルトの名無しさん
2008/06/21(土) 23:52:14環境変数 PATH も設定してくれるし、拡張子の関連付けもやってくれるし。
モジュールの追加のみ ppm コマンドを叩かないといかんが。
C> ppm install Math-Random-MT
0632デフォルトの名無しさん
2008/06/22(日) 16:35:24本当にハッシュと読むのか。シャープじゃないのか。
0633デフォルトの名無しさん
2008/06/22(日) 16:54:22君が文面読み違えてんじゃないの?
0634デフォルトの名無しさん
2008/06/22(日) 17:05:19シャープは♯であって#ではない。
#はハッシュ、またはナンバーサインと呼ぶ。
0635デフォルトの名無しさん
2008/06/22(日) 17:08:440636デフォルトの名無しさん
2008/06/22(日) 17:30:050637デフォルトの名無しさん
2008/06/22(日) 20:50:54http://www.excite.co.jp/News/bit/00091187538923.html
0638デフォルトの名無しさん
2008/06/22(日) 21:43:51PC普及以前は身近で最も#を見かけるのが電話だったことから
日本ではシャープと呼ぶ慣習が定着してしまったんだろうな
ちなみにアメリカの電話では似たような文脈でパウンドサインと呼ばれるが
Wikipediaによると、それもローカルルールとのこと
0639デフォルトの名無しさん
2008/06/22(日) 22:17:44電話の米印は#じゃないほうの記号だけどね。
0640デフォルトの名無しさん
2008/06/22(日) 22:18:15100msec周期のインターバルタイマーが必要で、LinuxではTime::HiResの
setitimerを使っているのですが、Windows XPのActivePerlではsetitimerが
使えないようで、代替手段が無いものか探しています。よろしくお願いします。
0641デフォルトの名無しさん
2008/06/22(日) 22:55:04「使えない」の意味によって無駄なレスかもしれないけども、
もし「ppmに無い」という意味だったら、
Cコンパイラとnmakeを使ってCPAN経由でビルドしてみては?
0642デフォルトの名無しさん
2008/06/22(日) 23:25:52use Data::Dumper;
eval { die "hoge"; };
print Dumper($@);
eval { die ["hoge"]; };
print Dumper($@);
0643デフォルトの名無しさん
2008/06/22(日) 23:29:02setitimer が何なのかを把握した上で書き込みとかすればいいと思うよ。
無責任だと思わないかい?
0644デフォルトの名無しさん
2008/06/23(月) 00:27:58というかそもそも2chでそないなこと言ってもなあ…わざわざそんなん言わんとなんでもありでいいんじゃねえの
0645デフォルトの名無しさん
2008/06/23(月) 00:52:08> というかそもそも2chでそないなこと言ってもなあ…わざわざそんなん言わんとなんでもありでいいんじゃねえの
というかそもそも2chでそないなこと言ってもなあ…わざわざそんなん言わんとなんでもありでいいんじゃねえの
0646デフォルトの名無しさん
2008/06/23(月) 01:11:58「 * や # のことを、それぞれ〜」 っていうフレーズが抜けているだけだろう
0647デフォルトの名無しさん
2008/06/23(月) 01:26:16言い方を変えても、何も得ることが無い、非建設的な書き込みに変わりない。
0648デフォルトの名無しさん
2008/06/23(月) 01:57:17オマエモナーwww
0650デフォルトの名無しさん
2008/06/23(月) 02:47:29そうかそうか、自分の無意味さを認めたか。えらいぞー。
0651デフォルトの名無しさん
2008/06/23(月) 04:12:39Cygwin 上なら ITIMER_REAL 限定でエミュレートされているようだけれども、ActivePerl 縛りが漢のチャレンジャースピリッツ。
細かい精度は気にするとハゲる(負け惜しみ)。
# Time::HiRes::usleep() version
use Time::HiRes qw(usleep);
my $interval = 100000;
while (1) {
usleep($interval);
print "Get's!\n";
}
# Time::HiRes::tv_interval() version
use Time::HiRes qw(tv_interval gettimeofday);
my $floating_interval = 0.1;
my $mark = [gettimeofday()];
while (1) {
if ( tv_interval($mark) > $floating_interval ) {
print "Get's!\n";
$mark = [gettimeofday()];
}
}
0652640
2008/06/23(月) 09:27:28私の説明不足で荒れてしまい、申し訳ありません。
>>651
ありがとうございます。どちらも動作することを確認しました。tv_intervalバージョンはCPU負荷が上がり
すぎるので、usleepバージョンの方がベターですね。
0653デフォルトの名無しさん
2008/06/23(月) 10:31:23レスをありがとうございます。
Cygwinが敷居が高いらしいので、
とりあえずActivePerl5.10.0を入れてみようと思います。
0654デフォルトの名無しさん
2008/06/23(月) 14:58:18sleep でいいなら最初から select(undef,undef,undef,0.1) でいいだろう。
0655デフォルトの名無しさん
2008/06/23(月) 20:20:32参考にしているページでは、
5.8系と
5.6系とあって、
ほとんどのサーバーでは5.6系に対応しているので
5.6系をダウンロードしてください、
5.8系では対応してなくて動かない可能性があります、
と書いてあるのだが、実際activestateのページにいってみると、
なんと、5.6系は消えてしまって、
5.1系と、
5.8系の二つしか残っていないのだ。
この場合、どちらをダウンロードすればいいのだ?
0656デフォルトの名無しさん
2008/06/23(月) 20:33:405.1じゃなくて5.10な。とりあえず5.8で問題ない。
0658デフォルトの名無しさん
2008/06/23(月) 21:15:08まず、その「参考にしているページ」とやらは参考にするな。
日本のサーバー屋は一時期Perl5.6同梱のLinuxを大量に設置したから、リプレースするのが面倒でそういう戯言を言う奴が多い。
Perlは基本的に(PHPと違って)バージョンアップによる互換性問題は少ない方だが、5.6系だけは鬼門というのが一般常識。
特にUNICODE関係※は痛いから、おとなしく5.8以降(今なら5.10)を使うべし。5.6を使うくらいなら、まだ5.005の方がまし。
それと、いまだに5.6を入れてるサーバー屋がいたら相手にしないこと。
※5.6の段階ではUNICODEとマルチスレッドは「実験的実装」とちゃんとアナウンスがあったから、5.6でUNICODEを使った奴がお馬鹿さんとも言う。
0659デフォルトの名無しさん
2008/06/23(月) 22:02:12世間知らず
0660デフォルトの名無しさん
2008/06/23(月) 22:08:12>5.8以降(今なら5.10)を使うべし
え?どっち?
0661デフォルトの名無しさん
2008/06/23(月) 22:15:350662デフォルトの名無しさん
2008/06/23(月) 22:17:395.6がベストってことだよ
0663デフォルトの名無しさん
2008/06/23(月) 22:18:520664デフォルトの名無しさん
2008/06/23(月) 22:23:30用途は知らんが今からActivePerl使うなら5.8以降でないと色々ツライ目に合うかもしれん。5.6系以前は問題外だ。
5.10は使いたいモジュールのPPMが無かったりすると手間取るからな。
0665デフォルトの名無しさん
2008/06/23(月) 22:28:46いまどき5.6なんて言ってるととほほでK.NTになっちまうぞ?
0666デフォルトの名無しさん
2008/06/23(月) 23:21:09自宅のPCに 5.10 インスコしてデバッグしても、サーバが 5.6 だから動かないんじゃ
何のためのデバッグかわからんだろが。
まずは自分の使う予定のサーバを調べろ。
0667デフォルトの名無しさん
2008/06/24(火) 00:02:1164ビットマシンに32ビットOSをインスコして料金だけ64ビットマシン級のボッタクリをする鯖屋なんぞ、それこそ腐るほどあるぞ
perlのバージョンだけ何が何でも5.6に執着する意味がわからん
0668デフォルトの名無しさん
2008/06/24(火) 01:03:250669デフォルトの名無しさん
2008/06/24(火) 01:24:08jcode.pl最強厨と同じだろ
0670デフォルトの名無しさん
2008/06/24(火) 01:29:210671デフォルトの名無しさん
2008/06/24(火) 02:20:01文書を読む際は、それが書かれた年月日を考慮すること。
日付の無い文書は信用しないこと。
0672デフォルトの名無しさん
2008/06/24(火) 02:28:280673デフォルトの名無しさん
2008/06/24(火) 03:02:45世間知らず
0674デフォルトの名無しさん
2008/06/24(火) 10:36:51貸鯖はわざわざ5.8系を探して使ってたので知らなかったが
まだそんなに5.6系以下のとこが多いのか…
0675デフォルトの名無しさん
2008/06/24(火) 12:34:590676デフォルトの名無しさん
2008/06/24(火) 20:24:30ところが、5.6で動かしたことありません。俺。
0677デフォルトの名無しさん
2008/06/24(火) 20:34:58おまいは、>658の説教を小一時間聞かなければならない刑に処す
0678デフォルトの名無しさん
2008/06/24(火) 20:41:07そういうレガシーコードで動いてる掲示板とか日記とかがまだ大量にあるんだろうな
0679デフォルトの名無しさん
2008/06/24(火) 20:47:105.6.0 のリリースは2000年。matt's、レスキュー、KENTがPerl4ベースの
汚いスクリプトを撒き散らし始めたのは90年代前半から。
0680デフォルトの名無しさん
2008/06/24(火) 20:57:02Moooooooooooooooooooooooooose
0681デフォルトの名無しさん
2008/06/24(火) 21:43:51って書いてて、
「おかしーなー動かない動かない」
ってうめいてたら、教科書よくよんだら、
putじゃなくてpushじゃん。
なんだよputって。
0682デフォルトの名無しさん
2008/06/24(火) 21:44:21ま、どうせ出来んだろうけどね。口ばっかり達者で何一つ行動できないおまいさんにはな。
0683デフォルトの名無しさん
2008/06/24(火) 22:22:05> 「美しいコード」
ってかいてある?
0684デフォルトの名無しさん
2008/06/24(火) 23:05:415.10じゃCのputみたいなsayもあるじゃないかw
0685デフォルトの名無しさん
2008/06/24(火) 23:49:490686デフォルトの名無しさん
2008/06/25(水) 00:46:40プッっと
0687デフォルトの名無しさん
2008/06/25(水) 01:04:51添削よろしく
長すぎたので二つに分割しました。
begin-base64 644 hanoi.pl
IyEvdXNyL2Jpbi9wZXJsIC13CnVzZSBzdHJpY3Q7CnVzZSBjb25zdGFudCBUT1dFUk1BWCA9PiA4
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg5YaG55uk5pyA5aSn5pWwCm15
ICRkaXNrID0gIiI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgZGlza+aemuaVsOOBr+aWh+Wtl+WIlwoKZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyDlhobnm6TmlbDlhaXlipvjg6vj
g7zjg5cKICAgIHByaW50ICLlhobnm6Tjga7mnprmlbDjga8xfiIsIFRPV0VSTUFYLCAi44G+44Gn
44CCOiAiOwogICAgY2hvbXAoJGRpc2sgPSBzY2FsYXIoPFNURElOPikpCn0gdW50aWwgKCRkaXNr
ID1+IG0vXltcZCtdJC8gJiYgKCRkaXNrIDw9IFRPV0VSTUFYICYmICRkaXNrID4gMCkpOwoKbXkg
JXBlZyA9IG1hcCB7JF8gPT4ge1NUQUNLID0+IFtdfX0gJ0EnLi4nQyc7ICAgICAgICAgICAgICAg
ICAgIyDjgrnjgr/jg4Pjgq/jga7liJ3mnJ/ljJYKZm9yIChyZXZlcnNlIDEuLiRkaXNrKSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyDloZRB44GrZGlza+OBruaemuaV
sOWIhgogICAgcHVzaCBAeyRwZWd7J0EnfS0+e1NUQUNLfX0sICRfICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIOWIneacn+WApOOCkuWFpeOCjOOCiwp9CiZkaXNwbGF5OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg5Yid5pyf55S76Z2i
6KGo56S6Cm15ICRjb3VudGRpc2sgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMg6Kmm6KGM5Zue5pWw44Gu5Yid5pyf5YyWCiZIYW5vaSgkZGlzaywgJ0En
LCAnQicsICdDJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg44OP44OO44Kk
44G4R28KcHJpbnQgJGNvdW50ZGlzaywgIuWbnuOBp+e1guS6huOBl+OBvuOBl+OBn+OAglxuIjsK
ZXhpdDsKCnN1YiBIYW5vaSB7CiAgICBteSAoJGQsICRBLCAkQiwgJEMpID0gQF87CgogICAgaWYg
KCRkID4gMCkgewogICAgICAgICZIYW5vaSgkZCAtIDEsICRBLCAkQywgJEIpOwogICAgICAgIHBy
0688デフォルトの名無しさん
2008/06/25(水) 01:05:52つづき2
aW50ICRkLCAi55Wq44Gu5YaG55uk44KSIiwgJEEsICLjgYvjgokiLCAkQywgIuOBuOenu+WLleOB
meOCi1xuIjsKICAgICAgICBwdXNoIEB7JHBlZ3skQ30tPntTVEFDS319LCBwb3AgQHskcGVneyRB
fS0+e1NUQUNLfX07ICAgIyDjgrnjgr/jg4Pjgq/np7vli5UKICAgICAgICAmZGlzcGxheTsKICAg
ICAgICAkY291bnRkaXNrKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyDoqabooYzlm57mlbDjgpLoqJjpjLIKICAgICAgICAmSGFub2koJGQgLSAxLCAkQiwgJEEs
ICRDKQogICAgfQp9CnN1YiBkaXNwbGF5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMg56e75YuV5o6o56e744KS6KGo56S6CiAgICB1c2UgY29uc3Rh
bnQge0hMID0+IDEyLCBUMSA9PiA1LCBGSVQgPT4gMSwgQUREID0+IDJ9OyAgICAgICMg6KGo56S6
6Kq/56+A5a6a5pWwCiAgICB1c2UgY29uc3RhbnQgTklMVE9XRVIgPT4gKCcgJyB4IEhMIC4gJ3wn
IC4gJyAnIHggSEwpOyAgICAgICMg56m65aGUCiAgICBwcmludCBtYXAgKCgnICcgeCBITCAuICRf
IC4gJyAnIHggSEwpLCAnQScuLidDJyk7ICAgICAgICAgICMg5aGUQUJD44Oe44O844Kv6KGo56S6
CiAgICBwcmludCAiXG4iLCBOSUxUT1dFUiwgTklMVE9XRVIsIE5JTFRPV0VSLCAiXG4iOyAgICAg
ICAgICAgICMg5aGU5YWI56uv6KGo56S6CgogICAgZm9yIG15ICRkaCAocmV2ZXJzZSAxLi4kZGlz
aykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIOWGhuebpOaemuaVsOWIhuODq+ODvOOD
0689デフォルトの名無しさん
2008/06/25(水) 01:06:18つづき3
lwogICAgICAgIGZvciAoJ0EnLi4nQycpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIEHjgYvjgolD44G+44Gn44K544K/44OD44Kv5qSc5p+7CiAgICAgICAgICAgIG5l
eHQgaWYgKCgkZGggPiBAeyRwZWd7JF99LT57U1RBQ0t9fSkgJiYgICAgICAgICAgICMg5YaG55uk
5p6a5pWw44Gv44K544K/44OD44Kv44KI44KK5aSn77yfCiAgICAgICAgICAgICAgICAgICAgKHBy
aW50IE5JTFRPV0VSKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICMg56m644Gu5YaG55uk44Gn
44GX44GfCiAgICAgICAgICAgIG15ICRkbiA9ICRwZWd7JF99LT57U1RBQ0t9WyRkaCAtIEZJVF07
ICAgICAgICAgICAgICMg5YaG55uk55Wq5Y+344KS5Y+W44KK5Ye644GZCiAgICAgICAgICAgIHBy
aW50ICcgJyB4IChITCAtICgkZG4gKyBGSVQpKSwgICAgICAgICAgICAgICAgICAgICMgICAgICDl
t6bnqbrnmb0KICAgICAgICAgICAgICAgICAgJGRuIHggKFQxICsgKCRkbiAtIEZJVCkgKiBBREQp
LCAgICAgICAgICAgICAgIyAgICAgIOWGhuebpOeVquWPtwogICAgICAgICAgICAgICAgICAnICcg
eCAoSEwgLSAoJGRuICsgRklUKSkgICAgICAgICAgICAgICAgICAgICAjICAgICAg5Y+z56m655m9
CiAgICAgICAgfSBwcmludCAiXG4iCiAgICB9Cn0KX19FTkRfXwojICAgICBlbmpveSBoYW5vaSAg
ICAgICAgIHBlcmwsIHY1LjguNgojICAgICAgICAgIHwgICAgICAgICAgIFRoZSBUb3dlcnMgT2Yg
SGFub2kKIyAgICAgICAgKioqKiogICAgICAgICAgICAgICBEc2lwbGF5CiMgICAgICAgKioqKioq
KiAgICAgICAgQVNDSUkgR3JhcGggVG93ZXJzCiMgICAgICAqKioqKioqKiogICAgIAojICAgICAq
KioqKioqKioqKiAgICAgIEF1dGhvcjogWmlua2UgTW90bwojICAgICoqKioqKioqKioqKiogICAK
IyAgICoqKioqKioqKioqKioqKiAgU2F0IEp1biAyMSAyMDA4IDE6MTM6MzggQU0KIyAgKioqKioq
KioqKioqKioqKiogCiMgKioqKioqKioqKioqKioqKioqKg==
====
0690デフォルトの名無しさん
2008/06/25(水) 01:08:35プルグラムは、よくあるハノイの塔をperlで書いた物です。
厳しいご意見お待ちします。
0691デフォルトの名無しさん
2008/06/25(水) 01:11:08汚い、汚いを連呼するキチガイがおるだろ!!!
0692デフォルトの名無しさん
2008/06/25(水) 01:11:110693デフォルトの名無しさん
2008/06/25(水) 01:12:200694デフォルトの名無しさん
2008/06/25(水) 01:13:170695デフォルトの名無しさん
2008/06/25(水) 01:14:250696デフォルトの名無しさん
2008/06/25(水) 01:45:22弾に文句を言えないからといってこんなとこで暴れるなよ>K
0697デフォルトの名無しさん
2008/06/25(水) 02:09:42まあ良いんでないの?
ハノイを見て思ったことだけど、
cgi系にひどいコードが多いのは、元々出力物自体が構造も
へったくれもないもんだったことが原因なんだろうな。
逆強制ギプスみたいなもん。
0698デフォルトの名無しさん
2008/06/25(水) 02:24:59permalink でくれ
0699687
2008/06/25(水) 02:25:29特に、手直しするような所は無いと受取ってよろしいのですね。
タワー表示部分くらいしか、いぢる所が無かったので、どうしても
ありがちなコードに成ってしまいました。
まだ、小さなスクリプトしか書けませんが、徐々に精進します。
評価をありがとございました。
0700デフォルトの名無しさん
2008/06/25(水) 17:49:27みんな待ってるよ、早く、ご立派なコードを公開してくれるのをさwww
さぁ早く。みんな待ってるんだよ。手元にたくさん在るんだろ?ご立派なコードが。
たくさん在りすぎて迷ってるのかい?
0701デフォルトの名無しさん
2008/06/25(水) 19:57:39出力部分をモジュール化して、書き込みとかログ管理の部分もモジュール化してやれば
いいんだろうけど、そこまでやるほどのものかって言うと微妙なんだよな。
0702デフォルトの名無しさん
2008/06/25(水) 22:10:57/ ドッカン
/ / ,,_ ドッカン
━━━━━'), )= ☆ゴガギーン
∧_∧ヽ\ / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ) 〉 〉_ _ ____ ∧_∧ ∠ おらっ!出てこい、キチガイ!
/ ⌒ ̄ / "'''"'| || (`∀´ ) \ おまいのご立派なコード晒せや!
| | ̄l | |/ / \ \___________
. | | | | || | | /\ヽ
| | .| | | へ//| | | |
( | .| ロ|ロ ゙!l''ヽ/,へ \|_ | | |
| .lヽ \ | | ヽ\/ \_ / ( )
| .| 〉 .〉 | | | |
/ / / / | | 〈| | |
/ / / / | | || | |
/ / / / └──┴──┘ | |
0703デフォルトの名無しさん
2008/06/25(水) 23:11:360704デフォルトの名無しさん
2008/06/26(木) 01:48:580705デフォルトの名無しさん
2008/06/26(木) 14:10:31わかりやすいよねー
0706デフォルトの名無しさん
2008/06/26(木) 14:45:130707デフォルトの名無しさん
2008/06/26(木) 14:48:290708デフォルトの名無しさん
2008/06/26(木) 15:01:050709デフォルトの名無しさん
2008/06/26(木) 16:51:130710デフォルトの名無しさん
2008/06/26(木) 22:11:04今年に入ってから、3冊も
新書出てるんだよねー
でも漏れが調べた範囲内では、
>>705が一番わかりやすいけど。
0711デフォルトの名無しさん
2008/06/26(木) 22:14:340712デフォルトの名無しさん
2008/06/27(金) 00:33:29今年1月に出る筈だった5.3は風の噂にも聞かなくなったよねー
その癖、4系絶滅宣言と同時に5.2系絶滅宣言も出しちゃったりして
Zend社ロードマップ:
4系 → もー面倒みません><
5.2系 → もうすぐ5.3出すからさっさと捨てな
6系 → いつ出るかって?知るかボケ!
で?今PHPの旬のバージョンって何だっけ?
0713デフォルトの名無しさん
2008/06/27(金) 02:11:07インストールが趣味?
よくいるよね、インストールしただけ満足するやつ。
0714デフォルトの名無しさん
2008/06/27(金) 06:25:540715デフォルトの名無しさん
2008/06/27(金) 09:58:540716デフォルトの名無しさん
2008/06/27(金) 10:05:060717デフォルトの名無しさん
2008/06/27(金) 10:50:480718デフォルトの名無しさん
2008/06/27(金) 14:37:51互換性が無い Tkx に置き換えられてるし… (ノ´Д`)ノ⌒┻━┻
速攻で 5.8.8 に戻した。
0719デフォルトの名無しさん
2008/06/27(金) 19:48:45都市伝説じゃないのか。
0720デフォルトの名無しさん
2008/06/28(土) 00:33:390721デフォルトの名無しさん
2008/06/28(土) 00:51:120722デフォルトの名無しさん
2008/06/28(土) 03:12:070723デフォルトの名無しさん
2008/06/28(土) 15:42:59ラーメンできるまでの間、ペンタゴンに侵入してやりたい放題できるとか。
0724デフォルトの名無しさん
2008/06/28(土) 16:29:560725デフォルトの名無しさん
2008/06/28(土) 19:01:22^(ハット)って出てきたとき、
行頭、って意味の場合と、
否定、って意味と、二つの場合があるよね。
これってどうやって見分けるの?
ザナドゥの毒薬ポーションみたいに
1ドットだけ違うとかかんべんしてほしいんだけど。
0726デフォルトの名無しさん
2008/06/28(土) 19:13:54perlのゲーム作れないかな?
「ゆうしゃはforeachを覚えた!」
とか、魔法のようにして関数を
覚えていくの。
0727デフォルトの名無しさん
2008/06/28(土) 19:14:37昇順、とか降順、を表すのに、
$a<>$bとかってでてきたんだけど、
これって予約語ですか?
0728デフォルトの名無しさん
2008/06/28(土) 19:15:210729デフォルトの名無しさん
2008/06/28(土) 19:21:190730デフォルトの名無しさん
2008/06/28(土) 19:27:18http://www.amazon.co.jp/exec/obidos/ASIN/4774135046
0732デフォルトの名無しさん
2008/06/28(土) 20:10:41配列で、1..100ってやったら、
1から100までの数字を一気に
生成する、って意味だけど、
それとはべつに、正規表現で
..って使う場合もあるよね。
まぎらわしくない?
どうやって見分けてるの?
0733デフォルトの名無しさん
2008/06/28(土) 20:15:560734デフォルトの名無しさん
2008/06/28(土) 20:44:58これ立ち読みしたけどけっこう良さそう.
入門者の一冊目ではないけど
0735デフォルトの名無しさん
2008/06/28(土) 21:01:41|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \
|┃ | (__人__) |
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
0736デフォルトの名無しさん
2008/06/28(土) 21:05:312007年に出た本なのに、中身はPerl4。
0737デフォルトの名無しさん
2008/06/28(土) 21:27:16http://www.amazon.co.jp/dp/4883375358
これか?酷いよなw
0738デフォルトの名無しさん
2008/06/28(土) 21:38:14あの人以上のプログラマなんてこの世に存在せんぜ
0739デフォルトの名無しさん
2008/06/28(土) 21:47:00/ / ,,_ ドッカン
━━━━━'), )= ☆ゴガギーン / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ヽ\ / / お!まだやるつもりか?
( ) 〉 〉_ _ ____ ∧_∧ ∠ おらっ!出てこい、キチガイ!
/ ⌒ ̄ / "'''"'| || (`∀´ ) \ おまいのご立派なコード晒せや!
| | ̄l | |/ / \ \___________
. | | | | || | | /\ヽ
| | .| | | へ//| | | |
( | .| ロ|ロ ゙!l''ヽ/,へ \|_ | | |
| .lヽ \ | | ヽ\/ \_ / ( )
| .| 〉 .〉 | | | |
/ / / / | | 〈| | |
/ / / / | | || | |
/ / / / └──┴──┘ | |
0740デフォルトの名無しさん
2008/06/28(土) 22:36:060741デフォルトの名無しさん
2008/06/28(土) 23:01:13正規表現内部でエスケープされない [ ] で囲まれた部分は文字クラスの定義です。
文字クラスの内側では ^ はその文字クラス全体の否定を表します。
文字クラスの外側では ^ は文字列先頭にマッチするアンカーです。
詳細は perlretut 及び perlre マニュアルページで楽しんでください。
>>726
作ってうpれです。でもこのスレではウケない気がします。
>>727
それはたぶん $a <=> $b のことだと思います。
そうであれば $a と $b はスカラ変数、<=> は数値比較演算子の一種です。
<=> は Perl の組込の演算子なので予約語と言えなくもありません。
$a, $b は他の変数と同様に利用でき、通常は変数名を予約語とは呼びませんが、大人の事情によりこの二つの名前は Perl によってこっそり特別扱いされます。どんな事情かは宿題にします。
perldoc -f sort がヒントです。
>>728
@all は通常の配列です。
Perl の変数にはいくつか種類があります。perlvar マニュアルページを調べてみましょう。
>>732
正規表現の外では . は文字列連結演算子です。最近は以前ほど出番が多くありません。
.. と ... は双子の範囲演算子です。ラテン系の配管工に例えると .. が赤いほうです。
perlop マニュアルページに演算子の完全なリストがあります。
あなたが m// の内側(つまり正規表現のパターン部)を見ているなら、.. は . メタキャラクタが二つ続いた姿です。
Perlな人はこれらを、ほとんど脊髄反射で区別しています。
みんな変態ですが、要は慣れです。がんばりましょう。
そして次からは http://pc11.2ch.net/test/read.cgi/php/1204488452/ で質問してください。
0742デフォルトの名無しさん
2008/06/28(土) 23:04:380743デフォルトの名無しさん
2008/06/28(土) 23:25:56わかりましたありがとう。
0744デフォルトの名無しさん
2008/06/28(土) 23:27:55色で判断できるのかな?
0745デフォルトの名無しさん
2008/06/28(土) 23:40:03二つの意味があるよね。
これってどうやって見分けるの?
0746デフォルトの名無しさん
2008/06/28(土) 23:47:070747デフォルトの名無しさん
2008/06/29(日) 00:30:110748デフォルトの名無しさん
2008/06/29(日) 01:31:480749デフォルトの名無しさん
2008/06/29(日) 01:55:320750デフォルトの名無しさん
2008/06/29(日) 02:37:45例えばソフト1回の実行で各関数が何%の実行時間を占めているかを
取得する方法は有るでしょうか?
0751デフォルトの名無しさん
2008/06/29(日) 04:35:39でググるといいんじゃないかな
0753デフォルトの名無しさん
2008/06/30(月) 00:02:08---
&list(1..15);
sub list {
foreach (@_) {
print " $_" if($_ == 5 .. $_ == 10);
}
}
---
とすれば5から10まで表示されますが、これを
&list(1..7);
&list(1..15);
とすると、最初の&listで5から7が、後の&listで1から10が表示されます。
最初の&listで範囲演算子の右辺が真になる前に終了しているから
なんですが、これをリセットする(5から7と、5から10を表示させる)方法って
あるのでしょうか?
0754デフォルトの名無しさん
2008/06/30(月) 00:12:07俺のケースでは..の後ろにリストの一番最後であるという条件を加えた。
0755デフォルトの名無しさん
2008/06/30(月) 00:32:36んーやっぱりないですか。コードの別のとこで
見直してみることにします。
ありがとうございます。
0756デフォルトの名無しさん
2008/06/30(月) 00:38:26# 要はループ最終回までに右辺が真になりゃいいので
sub list {
my $end_of_range = '10E0';
push @_, $end_of_range;
foreach (@_) {
if($_ == 5 .. $_ >= $end_of_range) {
last if /E0/;
print ' ', $_;
}
}
}
# 一方ロシアは
print " $_" if($_ >= 5 and $_ <= 10);
0757デフォルトの名無しさん
2008/06/30(月) 00:56:16リストの末尾に直接最終値をぶち込んでおく手か。
なるほど・・・
0759756
2008/06/30(月) 01:24:07$_ >= 5 and $_ <= 10
に対して、E0 バージョンはアドホックで小汚く、何より明白なバグがある。
なのでその要件なら範囲演算子にこだわらず、比較同士の論理積を取ればよかろう、と。
0760デフォルトの名無しさん
2008/06/30(月) 13:09:44http://cat.piq.jp/
↑このサイトみたいに、
ふたつの「キチガイ」書き込みを
左右に並べて表示して、
「どちらの書き込みのほうがキチガイだと
思いますか?」
と表示して、クリックで投票できるようにして、
ランキングを表示できると面白いと思うんです!
0761デフォルトの名無しさん
2008/06/30(月) 13:10:59こんな風にして、クリックで投票させて、
キチガイランキングをつくるんです。
材料は、ユーザーに投稿させればいいんです!
0762デフォルトの名無しさん
2008/06/30(月) 13:16:02俺もすごいアイデアを思いついたぜ
ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な?
0763デフォルトの名無しさん
2008/06/30(月) 13:22:56「これだけで身につく Perl入門例題80」
という本の、2004年発行の初版を読んでいるのですが、
175ページのQ110の、説明を読んでいるのですが、
キーを表す変数 値を表す変数
↓ ↓
$value = $uriage {$key};
と書いてあるのですが、これって誤植
ですよね?説明が逆だと思うのですが。
0764デフォルトの名無しさん
2008/06/30(月) 13:40:52変数名を見ても間違いない
0765デフォルトの名無しさん
2008/06/30(月) 13:41:10その本読むの止めた方が良いかもね。
0766デフォルトの名無しさん
2008/06/30(月) 13:57:57せっかく読んでるんだから読むのを止めろとは言わないが刊行年が微妙だな。
既に5.8系が出てる時期だけども多分記述はそれ以前の古い物だろう、
それを念頭に置いて読むなら為にはなるかもしれん。
あとmyやlocalやourの説明はまだ先なのか、それとも今後も全然出て来ないのか…。
0767デフォルトの名無しさん
2008/06/30(月) 19:26:42ステップアップとしてお薦めのPerl本といえば何になりますでしょうか?
やっぱりラクダ本がいいんでしょうか?
0768デフォルトの名無しさん
2008/06/30(月) 19:45:10>>730
0769デフォルトの名無しさん
2008/06/30(月) 21:12:08まず、本から離れろ。
0770デフォルトの名無しさん
2008/06/30(月) 22:46:52リャマ→ラクダ→PBP
というオライリーコンボが王道かな。
読むのと平行して必ず何か書き続けると吉な予感。
# それにしても結城さんの本はハズれないなあ。
0771デフォルトの名無しさん
2008/06/30(月) 23:02:52> 特に、手直しするような所は無いと受取ってよろしいのですね。
受取るのはそりゃかまいませんが、突っ込みどころがないわけでもないんです。
単に BASE64 で寄越すあたりで萎えちゃってるんだと思うですよ。遅レス失礼。
0772デフォルトの名無しさん
2008/06/30(月) 23:06:580773デフォルトの名無しさん
2008/06/30(月) 23:16:53んなもん何でも良いじゃん。小姑みたいなやつだ。
0775デフォルトの名無しさん
2008/06/30(月) 23:27:03はじめてのPerl×
初めてのPerl 第3版 ○
0776デフォルトの名無しさん
2008/06/30(月) 23:29:09サンキューです。週末にでも本屋さんで確認して買ってみます。
0777デフォルトの名無しさん
2008/06/30(月) 23:31:430778デフォルトの名無しさん
2008/07/01(火) 02:01:31% man perl
% man perlsyn
% man perlsub
% man perlfunc
% man ...
まあ、適当に何冊も本読み散らかして理解した気になってればいいんじゃない?
0779デフォルトの名無しさん
2008/07/01(火) 02:07:34オフラインにはオフラインの良さがあるよ
と思う俺は異端なのかね?
さすがにラクダ本は腕がくたびれるが
0780デフォルトの名無しさん
2008/07/01(火) 02:17:54初めてのperl
effective perl
らくだ
クックブック
#それぞれ最新のやつ…最近続とかついてよくわからんね(汗
>>779
pdfとかソースもとりあえず印刷しちゃうオフライン派
(そしていろいろめんどくさいから用がなくなったらシュレッダー)
エコってなんだろとか思うけどorz
0781デフォルトの名無しさん
2008/07/01(火) 02:21:29manなりperldocなりはリファレンスにはなるがチュートリアルにはならん。
目的が違うなら手段も違う、初心者にいきなり薦めるのは無謀。
0782デフォルトの名無しさん
2008/07/01(火) 03:18:08最近はチュートリアルも man に含まれているようですが。
だいたいperlなんか学ぼうとするヤツの目的はヒマつぶしなんだろうから、
いっぱい本買って小説みたいに読むのがいいとおもうよ
0783デフォルトの名無しさん
2008/07/01(火) 03:38:550784デフォルトの名無しさん
2008/07/01(火) 05:35:56横レスだが
man ( perldoc ) perlは、ラクダ本のまんまだぞ?
お前の言うことは「ラクダ本を初心者にいきなり勧めるのは無謀」
…なんだ、正しいな。
0785デフォルトの名無しさん
2008/07/01(火) 07:13:32あれを面白いと思える奴は見どころがある…と思う
0786デフォルトの名無しさん
2008/07/01(火) 08:40:43いや、そんなはずないか。バカなことを言っちゃいました。
0787デフォルトの名無しさん
2008/07/01(火) 08:45:42> まあ、適当に何冊も本読み散らかして理解した気になってればいいんじゃない?
逃避行動として本に執着して「勉強しているふり」をして、いつまでもプログラムを
書かない奴を何人も見てきた。「次の本」とか言う奴を見かけると、その点が気になる。
0788デフォルトの名無しさん
2008/07/01(火) 12:31:19まあ、プログラミング関係の英文は、文法が正直だと言われる工学系の文章の中でも、特に簡単なほうだとは思うけど……。
0789デフォルトの名無しさん
2008/07/01(火) 13:55:30会話の言語だろうとプログラムの言語だろうと、実践と慣れですよね。
頭の中で日本語に変換されないで直で読めると取りあえずOKだと思います。
俺は英語の場合はけっこう日本語に変換されるけど。
本はあれです、いい所もあるけど、悪いところもあります。
俺は画面で字をずっと読んでると具合悪くなるので印刷したり本で読んだりもします。
0790デフォルトの名無しさん
2008/07/01(火) 18:32:29英語読めなかったらもう致命的。ていうか日本語だけでよくやってきたな、と感心する。
0791デフォルトの名無しさん
2008/07/01(火) 18:32:38初めてのPerlや、ラクダ本2冊、クックブック2冊などなど。
しかーし!なんとPerl6では、5を勉強した人が発狂するほど書式や
言語使用が変わるという話じゃないですか!もう5勉強する気なくなりました。
今のうちに本を売りさばいとくのが得策ですよね?あと6っていつごろ
リリースされそうなんでしょうか…。そもそもPerlに未来はあるのでしょうか。
こんな仕打ち、C++言語をやってるときには、くらったことない。
互換性って大事だなぁ。
0792デフォルトの名無しさん
2008/07/01(火) 18:40:32ソース読めばおk
0793デフォルトの名無しさん
2008/07/01(火) 18:51:000794デフォルトの名無しさん
2008/07/01(火) 19:07:36そういう意味では非常に「査定の甘い」言葉である。
0795デフォルトの名無しさん
2008/07/01(火) 19:09:50>>791
君にはpythonが向いてるんじゃない?
0796デフォルトの名無しさん
2008/07/01(火) 19:29:32時代によって要求言語そのものがガラッと変わるのなんてザラだし
(Web時代に入ってからえらく変わった)、その程度で
ピーピー言ってるようじゃ どの道だめだね。
0797デフォルトの名無しさん
2008/07/01(火) 19:33:370798デフォルトの名無しさん
2008/07/01(火) 19:34:330799デフォルトの名無しさん
2008/07/01(火) 19:46:190800デフォルトの名無しさん
2008/07/01(火) 19:49:370801デフォルトの名無しさん
2008/07/01(火) 19:53:44本って一旦買うと捨てられなくってな。
0802デフォルトの名無しさん
2008/07/01(火) 19:55:380803デフォルトの名無しさん
2008/07/01(火) 20:08:17一見すると、この世界の諸行無常を正論で語ってるように見えるけど、
Perl5と6の違いをそこに絡めて「その程度」扱いするのは、幾ら何でも不自然だよ。
あと、>>791にダメの烙印押すより先に、Perl6の先行きのほうがもっとダメっぽいことを
ちゃんと言ってあげたほうがいいと思うよ。
0804デフォルトの名無しさん
2008/07/01(火) 20:12:070805デフォルトの名無しさん
2008/07/01(火) 20:16:41信者がありとあらゆる手で話をそらして噛み付くから
0806デフォルトの名無しさん
2008/07/01(火) 20:19:520807デフォルトの名無しさん
2008/07/01(火) 20:32:23オブジェクト指向取り入れたあたりから、言語が肥大化して
Perlの価値が薄れていったんだろうけど。6で決定的になりそうな予感。
0808デフォルトの名無しさん
2008/07/01(火) 22:35:510809デフォルトの名無しさん
2008/07/02(水) 00:05:26手元に動くおもちゃがあるのに、届くかどうかもわからんクリスマスプレゼントを待つというなら止めやしません。
仮に届いたとして、その Perl6 のノウハウが固まる頃には、きっと Perl7(仮) のリリース予定がアナウンスされているだろうけれど、そん時ぁどうすんだべ。
ちなみに Perl6 は鳳たんの Pugs で遊べるよ♪
0810デフォルトの名無しさん
2008/07/02(水) 00:15:40当然 Perl6 及び 5 をサポートしますが、結果としての姿は「次世代のPerl」というよりも、むしろ「ボトムアップから生まれた UNIX 文化風味の .NET」とでも言うべきものになるでしょう。
0811デフォルトの名無しさん
2008/07/02(水) 00:19:38Perl6はPerlとは別の言語って認識になるような気がする。
つまり俺が知ってるPerlは5で打ち止めってことだな。
0812デフォルトの名無しさん
2008/07/02(水) 00:20:310813デフォルトの名無しさん
2008/07/02(水) 00:25:08安心しる、Perl6なんて一部の言語マニア以外誰も使わんから。
UNIX系OSの大半に/usr/bin/perlが入ってる時点で、Perl5は覚えて損はない。
0814デフォルトの名無しさん
2008/07/02(水) 01:00:120815デフォルトの名無しさん
2008/07/02(水) 01:12:300816デフォルトの名無しさん
2008/07/02(水) 02:28:19ほほう。最近の perl の居場所は /usr/local/bin/ ではないのか。
0817デフォルトの名無しさん
2008/07/02(水) 03:10:260818デフォルトの名無しさん
2008/07/02(水) 06:15:15始めは cpan で 5.8.8 を /usr/local/bin に入れたんだけど kakasi の dll モジュールのロードでこける。
kakasi 本体でなら動いたけど処理が遅い。
結局、kakasi を cygwin 版をやめてソースから入れ直し + 5.10.0 用の NKF.pm と kakasi.pm 作成で 5.10 から動かす事に。
5.8.8 を入れた意味が無かった。
要するに、こんな長文読んでくれた人乙って事だ。
0819デフォルトの名無しさん
2008/07/02(水) 14:34:08まで読んだ
0820デフォルトの名無しさん
2008/07/02(水) 14:55:460821デフォルトの名無しさん
2008/07/02(水) 15:25:35ツンデレっていう言葉を使いたかったんだろうけど、使い方を間違ってるよ。
0822デフォルトの名無しさん
2008/07/02(水) 20:20:47変数$str1 中にある「あいうえお」を「かきくけこ」
に変換しようとしています。しかし、$str1はhtml文字列で、
不定箇所にタグが含まれています。
(但し、ここでは、問題になるタグは<b>と</b>のみとします)
現在、$str1中で<b>と</b>に囲まれた部分は各文字の後に、
普通は使わない特殊な文字(ここでは「★」とします)
を付けるようにして対処しています。
例えば$str1が「あい<b>うえおさ</b>しすせそ」であれば、
これを「あいう★え★お★さ★しすせそ」に変換し、
$str1 =~ s/あ(★?)い(★?)う(★?)え(★?)お(★?)/か$1き$2く$3け$4こ$5/g;
を実行して「かきく★け★こ★さ★しすせそ」を得た後に
「かき<b>くけこさ</b>しすせそ」に変換しています。
もっとスマートなやり方はないでしょうか?
0823デフォルトの名無しさん
2008/07/02(水) 20:24:200824デフォルトの名無しさん
2008/07/02(水) 23:05:03こういうカキコ見ると
一瞬、「荒らしか?」と思うよな。
でもちゃんと回答してるんだぜ
0825デフォルトの名無しさん
2008/07/02(水) 23:09:18とりあえずラリー先生に謝ろうぜw
0826デフォルトの名無しさん
2008/07/02(水) 23:57:220827デフォルトの名無しさん
2008/07/02(水) 23:58:49単純にあ→か、い→き、・・・、と置換するのではだめなのか?
それなら間のタグとか意識する必要もないが。
まあどうせ元の文はもっと複雑でここに書かれていないいろんな条件が付くんだろうけど。
0828デフォルトの名無しさん
2008/07/03(木) 00:05:41$str =~ tr/あ-お/か-こ/
0829デフォルトの名無しさん
2008/07/03(木) 00:06:110831デフォルトの名無しさん
2008/07/03(木) 00:45:49my $replacement = '';
$str1 =~ s/(あ(?:<.*?>)?い(?:<.*?>)?う(?:<.*?>)?え(?:<.*?>)?お)/
$replacement = $1;
$replacement =~ tr/あ-お/か-こ/;
$replacement;
/eg;
# ちょいと意固地になってみやした。
0832デフォルトの名無しさん
2008/07/03(木) 01:17:55これで
「おはようございます」
を返還したら
「こはようござきます」
になるの?
0833デフォルトの名無しさん
2008/07/03(木) 01:22:55$abc =~ tr/あ-お/か-こ/;
print $abc;
↑これだとなぜか動きません。
バグはどこですか?
0834デフォルトの名無しさん
2008/07/03(木) 01:40:160835デフォルトの名無しさん
2008/07/03(木) 01:45:46$w =~ tr/お/こ/; # 小文字に正規化
print $w,"\n";
↑これなら動く。でもこれ↓だと
$w = 'おはようございます';
$w =~ tr/あ-お/こ/; # 小文字に正規化
print $w,"\n";
エラーになる。なんで?
Invalid range "?αソソセ?-?αソソセ・ in transliteration operator at a.pl line 2.
0836デフォルトの名無しさん
2008/07/03(木) 01:48:490837デフォルトの名無しさん
2008/07/03(木) 01:59:400838デフォルトの名無しさん
2008/07/03(木) 02:09:29>>835
序盤に下記二行を加え、スクリプトそのものは UTF-8 で書いてね♪
use utf8; # スクリプトを utf8 として扱う
use Encode; # 入出力用(decode(), encode() 他がエクスポートされる)
0839デフォルトの名無しさん
2008/07/03(木) 02:14:49use utf8;
binmode STDOUT => "encoding(cp932)";
と書いて、ソースをUTF8で書くのが一つのパターンだな。
あるいは、
use encoding "cp932";
と書いて、ソースをSJISで書くか。
いまどき、SJISで書く人は奇特だといえるが。
0840デフォルトの名無しさん
2008/07/03(木) 02:19:330841デフォルトの名無しさん
2008/07/03(木) 02:41:520842デフォルトの名無しさん
2008/07/03(木) 09:27:26よさげなサイト教えて下しあ
0843デフォルトの名無しさん
2008/07/03(木) 11:10:23---------------------------------------------------------
# 【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
sleep(1);
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
0844デフォルトの名無しさん
2008/07/03(木) 13:26:43まずは、
% perldoc perlboot
% perldoc perltoot
% perldoc perltooc
して読んでみては?
日本語訳ページ
http://fleur.hio.jp/perldoc/perl/5.8.8/pod/perlboot.ja.html
http://perldoc.jp/docs/perl/5.10.0/perltoot.pod
http://perldoc.jp/docs/perl/5.10.0/perltooc.pod
0845デフォルトの名無しさん
2008/07/03(木) 16:38:55CGIでの話になるんだけど、携帯電話のブラウザはShift_JISが基本だから、
さくっとShift_JISで書いてしまうことはある。
いや、ちゃんとしたコードを書くときはHTML::Templateとかで表示を分けるんだけどさ。
0846デフォルトの名無しさん
2008/07/03(木) 16:51:10先生!
open FILE, '<:encoding(cp932)', 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
がエラーになります!なんで???
ちゃんと utf8 でコードを書いたのに。
0847デフォルトの名無しさん
2008/07/03(木) 17:03:06IOフィルタかましてUTF-8で書けばいいじゃん。
理由になってないよ
0848デフォルトの名無しさん
2008/07/03(木) 17:56:33>>843の通りにやったのなら、
open FILE, 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
と書くべきだと思われる。
0849デフォルトの名無しさん
2008/07/03(木) 17:57:230850デフォルトの名無しさん
2008/07/03(木) 18:38:05ファイルのパスがutf8 flaggedなだけじゃないかな
つーかファイル開く時に例外処理入れるのは乳児でも忘れない常識
それとopenは引数3つにするかIO::Fileなり便利なモジュールを使うべし
open my $fh, '<', $file or die $!;
0851デフォルトの名無しさん
2008/07/03(木) 19:25:33readidir の返り値とかも utf8 フラグ無しの sjis だったりするから注意。
0852デフォルトの名無しさん
2008/07/03(木) 19:26:22× readidir
○ readdir
0853デフォルトの名無しさん
2008/07/03(木) 19:30:470854デフォルトの名無しさん
2008/07/03(木) 21:50:18いやだから、さくっと書くときって言ってるじゃん。
0855デフォルトの名無しさん
2008/07/03(木) 22:15:47ありがとうございます。さっそくそのとおりやってみましたが、ダメでした。
「No such file or directory at C:\TEMP\f.pl line 8.」 と出ます。
もちろん、07年度売上.csv というファイルはデスクトップの上にあります。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
open my $fh, '<', $file or die $!;
試しに下記のバッチファイルを作ってみたら、ちゃんと内容が表示されます。
type "C:\Documents and Settings\NECPCuser\デスクトップ\07年度売上.csv"
もうワケがわかりません。
0856デフォルトの名無しさん
2008/07/03(木) 22:17:32>>850 の方法も、 >>848 の方法でも、どちらもダメでした。
0857デフォルトの名無しさん
2008/07/03(木) 22:26:01use utf8;
use IO::File;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
my $io = IO::File->new();
$io->open('C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv', 'r') or die $!;
・・・やっぱ 「No such file or directory line 8」 です orz
0858デフォルトの名無しさん
2008/07/03(木) 22:29:55#use open IO => ":encoding(cp932)";
#binmode STDIN => ":encoding(cp932)";
#binmode STDOUT => ":encoding(cp932)";
#binmode STDERR => ":encoding(cp932)";
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
open my $fh, '<', $file or die $!;
print <$fh>;
当然ですが、スクリプトをシフトジスで保存したら正常に動きます。
という事は、>>843 が間違っているのでしょうか???
0859デフォルトの名無しさん
2008/07/03(木) 23:59:05use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
open my $fh, '<', encode("cp932", $file) or die $!;
0860デフォルトの名無しさん
2008/07/04(金) 00:22:190861デフォルトの名無しさん
2008/07/04(金) 01:28:06単にファイルパスがutf8フラグのついたUTF8文字列になってるからPerlがファイルを見つけられてないだけ
0862デフォルトの名無しさん
2008/07/04(金) 02:48:58なんでANSI文字コードじゃないといかんの?
まさか、CreateFileAつかってるんか?
0863デフォルトの名無しさん
2008/07/04(金) 03:16:28他の言語でオブジェクト指向してみたことあるなら、そのめんどくささと脇の甘さに嫌気がさす。
オブジェクト指向に触れたことがないなら、それを学ぶために別の言語から入る事を勧める。
ようするに perl OO なんてやめとけ。
0864デフォルトの名無しさん
2008/07/04(金) 10:54:30昔の「しがらみ」というものがあるだろう。
ウニコードでやりとりするようにすると、昔のソフトが全滅する。
0865デフォルトの名無しさん
2008/07/04(金) 12:38:27他言語のオブジェクト指向の制約の厳しさを考えると、オブジェクト指向と呼んでいいものかどうか。
そういうふうに割り切って考えると、Perlのオブジェクト指向(みたいなもの)は案外悪くない。
0866デフォルトの名無しさん
2008/07/04(金) 12:59:04binmode STDERR => ":encoding(cp932)";
はやめたほうがいいかもね。例えば die "finish";
を実行すると、STDERR に
finish at (ファイル名)(行番号)
と出力されるが、ソースファイルが日本語のファイル名だと、
元々sjisの文字列をutf8とみなして、さらにsjisに変換しようとするから、
エラーが起こって何も出力されなくなる。
STDERR に日本語出力するときは、その都度変換すべきだろうね。
0867デフォルトの名無しさん
2008/07/04(金) 15:21:33指定したディレクトリの直下にあるファイルのファイル名を
全て取得するには、どうすれば良いのでしょうか?
よろしくお願いします。
0868デフォルトの名無しさん
2008/07/04(金) 17:04:42File::Slurpのread_dirを使う。
0869デフォルトの名無しさん
2008/07/04(金) 18:48:350870デフォルトの名無しさん
2008/07/05(土) 00:47:49いや、utf8フラグたってるかどうかで切り分ければいいんだから、そんな問題は発生しないはずだ
0871デフォルトの名無しさん
2008/07/05(土) 04:21:31UnicodeとUTF-8の違いを理解してないアフォ発見!
このスレを1から全部読め。
↓
http://pc11.2ch.net/test/read.cgi/tech/1177930957/
0872デフォルトの名無しさん
2008/07/05(土) 12:37:41説明できないということは、お前さんも結局何も知らないわけですね。
0873デフォルトの名無しさん
2008/07/05(土) 12:55:28W系使う直前で MultiByteToWideChar(CP_ACP,.. してるから。
(W系で受け取った結果は CP_ACPでMultiByte文字列化)
それはもう、utf8フラグなんて無視してCP_ACP(システムのデフォルトコードページ)のみ。
このへんは(utf8フラグを見てCP_ACPとCP_UTF8を使い分けていた)5.6の方がマトモなんだよな。
0874デフォルトの名無しさん
2008/07/05(土) 13:52:51プログラム言語史上かつてないほどの
糞仕様を作ってしまった。
0875デフォルトの名無しさん
2008/07/05(土) 14:10:36酷いな。なんでそんなことしちゃったん?
>>874
それはちがう。
perlに明示的な型がない以上、バイナリシーケンスと文字列を区別するために何らかのフラグは必要。
0876デフォルトの名無しさん
2008/07/05(土) 14:11:38つかいかたを理解できなかったからって、こんな場所でつまんないこと書くなよw
0877デフォルトの名無しさん
2008/07/05(土) 20:01:51「説明しない」のは「説明できない」からだ、というのを論理的に証明できれるなら、その結論もアリ。
がんばって。
0878デフォルトの名無しさん
2008/07/05(土) 20:33:260879デフォルトの名無しさん
2008/07/05(土) 21:29:460880デフォルトの名無しさん
2008/07/05(土) 22:35:18ところが、今度は rename で 「No such file or directory」 エラーが出ます。
# utf8 で保存
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
$bak = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上(集計済).csv';
open my $fh, '<', encode("cp932", $file) or die $!;
# (中略)
close $fh;
rename $file, $bak or die $!; # ☜ ここ
集計済にしておかないと、売り上げが重複してとんでも無いことになっちゃうんです・・・
0881デフォルトの名無しさん
2008/07/05(土) 22:38:06「出来る」ことをそこまで強調した英文を初めて見た。
0882デフォルトの名無しさん
2008/07/05(土) 22:38:080883デフォルトの名無しさん
2008/07/05(土) 23:07:49同様にencodeしろよ。
0884デフォルトの名無しさん
2008/07/06(日) 01:46:14日本語を正規表現で置換するときには
utfなんちゃんらの処理が必要ってこと?
0885デフォルトの名無しさん
2008/07/06(日) 01:54:26yesともnoとも答えてやれんがな。
0886デフォルトの名無しさん
2008/07/06(日) 02:38:160887デフォルトの名無しさん
2008/07/06(日) 03:04:47tr///の正規表現で置換するとき、
アルファベットは問題なくても、
日本語では問題が出るのかって聞いてるの。
0888デフォルトの名無しさん
2008/07/06(日) 03:27:170889デフォルトの名無しさん
2008/07/06(日) 09:13:300890デフォルトの名無しさん
2008/07/06(日) 12:25:16問題ない。
原因は他にあると思われ。
0891デフォルトの名無しさん
2008/07/06(日) 13:58:07---------------------------------------------------------
# 【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1.の行を入れると、DOS窓への日本語出力は簡便になりますが、
# ソースファイル名に非ANSI文字が含まれる場合にdie 文の出力が失敗します。
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。
0892デフォルトの名無しさん
2008/07/06(日) 14:03:430893デフォルトの名無しさん
2008/07/06(日) 15:42:45# >>884 の内容から >>887 を導けたらエスパーなので、「だから。」とイキまれても困ります。
# tr/// の痴漢モジリストは正規表現と違うけれど本題でないのでスルー。
# 「アルファベット」が us-ascii なのか [:alpha:] なのか不明ですが面倒なので us-ascii と仮定。
utf8 プラグマの効果範囲でマルチバイトの文字列操作が正しく行われるためには
・扱う文字列が、Perl ソースコード中に正しく UTF-8 で記述されたリテラルであるか、
・または Perl 内部表現に正しく decode() された文字列である
・そして、出力時には出力先にとって処理可能な形式に encode() する
必要があります。
つまりこゆこと (UTF-8 で書き、cmd.exe 又は command.com 等の cp932 環境上で実行):
use utf8;
use Encode;
my $ウホッ = 'ぷるん';
$ウホッ =~ s/ぷ/にゅ/;
print encode('cp932', $ウホッ . さぶ());
sub さぶ {
return('アッー!');
}
0894デフォルトの名無しさん
2008/07/06(日) 19:02:14有望そうなperlの新人を発見しました
0895デフォルトの名無しさん
2008/07/06(日) 21:12:31ファイル名と思しきとこは全て、encode("cp932",ほげほげ) するんですね!
open だけかと思ってました。rename も encode("cp932",ほげほげ) が必要なんです。
# utf8 で保存
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
$bak = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上(集計済).csv';
open my $fh, '<', encode("cp932", $file) or die $!;
# (中略)
close $fh;
rename encode("cp932", $file), encode("cp932", $bak) or die $!; # ☜ ここ改良!
いろいろ実験してみたら、他にも
unlink, utime, stat, -f -e -s など、
さらには LWP::UserAgent の mirror メソッドするときも
$ua->mirror("http://ほげほげ.com/", encode("cp932", "ほげほげ.html"));
って感じで、なんでもかんでも encode("cp932", ほげほげ) するワケですね。
一体全体、なんでまたこんなクソ仕様にしたんでしょう???使えねーーーーーーよ。
死ね perl !
0896デフォルトの名無しさん
2008/07/06(日) 21:21:180897デフォルトの名無しさん
2008/07/06(日) 21:30:250898デフォルトの名無しさん
2008/07/06(日) 21:31:43もう解決したんだろ。さようなら。
0899デフォルトの名無しさん
2008/07/06(日) 21:31:4430箇所も encode("cp932", ほげほげ) する必要があった。
perl 死ね!
0900デフォルトの名無しさん
2008/07/06(日) 21:36:05× Windows 対応
○ 日本語版 Windows 対応
0901デフォルトの名無しさん
2008/07/06(日) 21:37:02まるで 「日本語死ね!」 とでも言いたげだな
0902デフォルトの名無しさん
2008/07/06(日) 21:39:150903デフォルトの名無しさん
2008/07/06(日) 21:39:29あーあ
0904デフォルトの名無しさん
2008/07/06(日) 21:41:41つうか、perl 使わなければ日本でも問題なし。perl 死ね!
0905デフォルトの名無しさん
2008/07/06(日) 21:44:02# 下記のように先に保管してしまう手もあります。
# マルチバイトのファイル名操作が必要だったり
# マルチバイトのファイル名をハードコードする必要があったり
# といったむずがゆい場合に少し楽ができます。
my $file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
my $bak = $file;
$bak =~ s/\.csv$/(集計済).csv/;
my %filename = (
utf8perl => $file,
cp932 => encode('cp932', $file),
bak => encode('cp932', $bak),
);
# ここではたまたまハッシュに格納していますが別に何でも可。
0906デフォルトの名無しさん
2008/07/06(日) 21:56:01シングルバイト圏の連中があいかわらずA系のAPIを使ってるから。
こういう仕様にしようと思ったからこうなってるんじゃなくて、
何も考えてないからこういう結果になっただけだ。
これじゃ困るから全部W系のAPIを呼ぶようにしろと説得してくれ。
0907デフォルトの名無しさん
2008/07/06(日) 22:02:09opendir するときは、引数のディレクトリ名は encode("cp932", ほげほげ) しなきゃいけない。
ところが readdir で返される配列は、ななんとシフトJIS!
ということは、返された値を1個1個、decode("cp932", ほげほげ) しなきゃならない。
これをやらないと、今度は、この値を使って open/rename/unlink/-f -d -e -s などなどするとき
間違って encode("cp932", ほげほげ) してしまいそう。
また、ファイル名を正規表現で加工したいときもあるだろう。
だから、readdir で返される配列は、decode("cp932", ほげほげ) しといたほうが安全。
混乱を避けるためには decode("cp932", ほげほげ) しときなさい、ってこと。
あと、__FILE__ も、@ARGV もだ。
こんなことしてたら、マトモなアプリなら30箇所でも40箇所でも
encode("cp932", ほげほげ)/decode("cp932", ほげほげ) が出てくる。
perl 死ね!
0908デフォルトの名無しさん
2008/07/06(日) 22:07:34open FILE,'<',$file; を、
open FILE,'<',encode("cp932"',$file); に書き換えるコストと
open FILE,'<',filename{cp932} に書き換えるコストと
どっちも大してかわらない気がする。
どうせエディタで置換するわけだし。
0909デフォルトの名無しさん
2008/07/06(日) 22:09:10まだ言ってるよ、コイツ。
このスレを100回読め。
↓
http://pc11.2ch.net/test/read.cgi/tech/1177930957/
0910デフォルトの名無しさん
2008/07/06(日) 22:10:19これは、utf8 でコーエィングされてる、という意味。
use ユニコード・・・ではないんだよ。
0911デフォルトの名無しさん
2008/07/06(日) 22:11:16これは、utf8 でコーディングされてる、という意味。
文字列の内部表現も utf8 ってこと。
use ユニコード・・・ではないんだよ。
0912デフォルトの名無しさん
2008/07/06(日) 22:24:38間違ってるのはお前だって
0913デフォルトの名無しさん
2008/07/06(日) 22:27:05文字列の内部表現はUTF8なのに、
OSの機能を呼び出すときにUTF16じゃなくてANSIに変換してるのが問題なの。
そのスレを出すのは意味不明。
0914デフォルトの名無しさん
2008/07/06(日) 22:36:18それじゃぁお尋ねしますがねぇw
>全部W系のAPIを呼ぶようにしろ
これで解決するんですかい?
「W系のAPI」 とやらに utf8 文字を渡すつもりwww
0915デフォルトの名無しさん
2008/07/06(日) 22:40:17utf8 文字を UTF-16LE に変換して 「W系のAPI」 に渡す
utf8 文字を ANSI(CP932) に 変換して 「A系のAPI」 に渡す
いずれにしても、変換が必要。
>>906 が utf8 と ユニコードの違いがわかっていない証拠
0916デフォルトの名無しさん
2008/07/06(日) 23:20:240917905
2008/07/06(日) 23:40:01> どっちも大してかわらない気がする。
同感ですがご意見を振り切って暴走の結果 MultiEncodingHash.pm ができました。
package MultiEncodingHash;
use strict;
use warnings;
use utf8;
use Carp;
use Encode;
use Tie::Hash;
our @ISA = 'Tie::StdHash';
sub FETCH {
my ($self, $enc) = @_;
return $self->{org} if $enc eq 'org';
return encode( $enc, $self->{org} );
}
1;
0918デフォルトの名無しさん
2008/07/06(日) 23:59:47UTF-8⇔UTF-16の変換は単純な演算でできるんだから、
そうやって渡すよう実装するに決まってるだろう。
UTF-8 Cygwinと同じことをするわけだな。
そんなこと考えるまでもないだろうに、
わざわざ説明しないとわからないくらい馬鹿なのか?
0919デフォルトの名無しさん
2008/07/07(月) 00:22:48おめえutf8 cygwin使ってねえだろ。
0920デフォルトの名無しさん
2008/07/07(月) 00:25:06そういうことですね。
あなたに言えることの中には、有効なものは一つも無いわけです。
まさに無駄です。
0921デフォルトの名無しさん
2008/07/07(月) 00:38:16gがグローバルってのは参考書に書いてあった。
でもsは載ってない。
0922デフォルトの名無しさん
2008/07/07(月) 00:41:39?
ttp://www.okisoft.co.jp/esc/utf8-cygwin/implementation.html#layer
変換してるようですが?
# 自前で変換してると思ってたのは誤解だったけど。
# WindowsAPIで変換してたのね……。
0923デフォルトの名無しさん
2008/07/07(月) 00:42:58tr/// => transliteration
s/// => substitution
0924デフォルトの名無しさん
2008/07/07(月) 00:46:30どちらにしろ utf8 flagged な文字列をそのまま外には出せません。
0925デフォルトの名無しさん
2008/07/07(月) 01:16:04translation
0926デフォルトの名無しさん
2008/07/07(月) 01:19:26サンキュー
どこかのWEBに載ってるの?
0927デフォルトの名無しさん
2008/07/07(月) 01:21:39perlの予約語とかを
色分けして表示するエディターで
windows向けので一番いいのを教えて。
無料のやつで。
0928デフォルトの名無しさん
2008/07/07(月) 01:22:55emacs
0929デフォルトの名無しさん
2008/07/07(月) 01:24:24探せばいくつでも見つかるので片っ端から試して一番いいやつを教えてください。
0930デフォルトの名無しさん
2008/07/07(月) 01:30:39言葉遣いはやさしいが、言ってることは 「ググレカス」 と同じ。
0931デフォルトの名無しさん
2008/07/07(月) 03:16:06> サンキュー
> どこかのWEBに載ってるの?
添付マニュアルに書いてあるから、どこかのWebにも確実に載っている。
0932デフォルトの名無しさん
2008/07/07(月) 07:46:46一番優れた回答だよね。
0933デフォルトの名無しさん
2008/07/07(月) 14:17:15そしておれも馬鹿。
0934デフォルトの名無しさん
2008/07/07(月) 14:30:280935デフォルトの名無しさん
2008/07/07(月) 19:06:59それこそperlで実装しろや、って感じだけど。
0936デフォルトの名無しさん
2008/07/07(月) 19:26:09任せた。
0937デフォルトの名無しさん
2008/07/07(月) 19:37:49がんばって!!
0938デフォルトの名無しさん
2008/07/07(月) 20:28:08くじけないで!!
0939デフォルトの名無しさん
2008/07/07(月) 23:02:33入出力にutf8が一切絡まないなら、ソースもsjisで書いたら? dirtyかもしれないけど何も苦労しないよ。
処理内容によっては別の苦労があるにせよ、オレなら迷わずそうする。文字列内の2バイト目が\x5cの文字に注意。
0940デフォルトの名無しさん
2008/07/07(月) 23:41:07コイツ最高にアフォ!
いったい何のために、せっせと苦労して utf8 してるのか全く理解しとらんな。
>別の苦労があるにせよ、オレなら迷わずそうする。文字列内の2バイト目が\x5cの文字に注意。
その、「別の苦労」 があるから utf8 するんじゃないかよ。
「2バイト目が\x5c」 だから utf8 するんじゃないかよ!
話が堂々めぐりになるだろ。
0941デフォルトの名無しさん
2008/07/07(月) 23:43:530942デフォルトの名無しさん
2008/07/07(月) 23:46:57空気嫁
0943デフォルトの名無しさん
2008/07/07(月) 23:56:390944デフォルトの名無しさん
2008/07/08(火) 00:03:19ブライト艦長の「スタンバッておけ」と同じ用法だ
0945デフォルトの名無しさん
2008/07/08(火) 00:05:08「こないだヤフーでググったらさぁ」 ← 微妙に違うw
0946デフォルトの名無しさん
2008/07/08(火) 00:13:18名詞の動詞化はよくあること。なし崩しに「通じないほうが馬鹿」って流れになっていく。
0947デフォルトの名無しさん
2008/07/08(火) 00:17:050948デフォルトの名無しさん
2008/07/08(火) 00:55:050949デフォルトの名無しさん
2008/07/08(火) 05:16:44ちなみに2ちゃんねるは
文字コードはどういう実装にしてるの?
0950デフォルトの名無しさん
2008/07/08(火) 06:06:55WWW::Mechanize を用いてフォームに入力するプログラムを作っています。
プルダウンに値を入力するのですが、その前に入力する値のリストを取得したいのです。つまり
<SELECT name="hoge">
<OPTION VALUE="AAA">BBB
<OPTION VALUE="CCC">DDD
<OPTION VALUE="CCC">FFF
<OPTION VALUE="EEE">HHH
<OPTION SELECTED VALUE="III">JJJ
</SELECT>
となっているソースから値のリストを取り出したいのです。
直接ソースから自作のプログラムを書いて抜き出してもいいのですが、そういったモジュールがあればそれも含めて教えていただけないでしょうか。
0951デフォルトの名無しさん
2008/07/08(火) 09:07:19$input->possible_values();
$input->value_names();
つ http://search.cpan.org/~gaas/libwww-perl-5.813/lib/HTML/Form.pm
0953867
2008/07/08(火) 16:32:30レスありがとうございます。
0954デフォルトの名無しさん
2008/07/08(火) 18:46:24$esc_0208 = shift || $esc_0208;
$_[$[] =~ /($re_jis0208)/o && ($esc_0208 = $1)
0955デフォルトの名無しさん
2008/07/08(火) 18:49:40コードの意味は分かってるが日本語で説明する方法が分からないのか、
それともコードの意味すら分からないのかどっちなんだ。
0956デフォルトの名無しさん
2008/07/08(火) 18:55:39下はコードの意味がわかりません
0957デフォルトの名無しさん
2008/07/08(火) 19:00:27とりあえず自分なりに書けば誰か添削してくれるんじゃない?
でもいちいち説明がいるほど難しいコードだろうか
0958デフォルトの名無しさん
2008/07/08(火) 19:05:20演算子の意味が分からないならperlop嫁。
下は、perlvar嫁
0959デフォルトの名無しさん
2008/07/08(火) 19:08:560960デフォルトの名無しさん
2008/07/08(火) 19:10:54そんなわけがないだろ。
演算子の優先順位考えろよ
$esc_0208 = (shift || $esc_0208);
0961デフォルトの名無しさん
2008/07/08(火) 19:29:400962デフォルトの名無しさん
2008/07/08(火) 19:56:33マルチも大概にしとけ。
http://okwave.jp/qa4156647.html
まあほしい答えがもらえたみたいだからもう出てこないだろうけど。
0964デフォルトの名無しさん
2008/07/08(火) 22:44:230965デフォルトの名無しさん
2008/07/08(火) 22:55:330966デフォルトの名無しさん
2008/07/08(火) 23:28:560967デフォルトの名無しさん
2008/07/09(水) 00:22:250968デフォルトの名無しさん
2008/07/09(水) 00:38:420969デフォルトの名無しさん
2008/07/09(水) 00:40:250970デフォルトの名無しさん
2008/07/09(水) 00:54:320971デフォルトの名無しさん
2008/07/09(水) 00:55:00Can't locate 彼女.pm in @INC....
0972デフォルトの名無しさん
2008/07/09(水) 01:15:39ビルトインのデーターベースみたいで、
もしかしてこれ使えば
mysqlとか入れなくていいの?
0973デフォルトの名無しさん
2008/07/09(水) 01:32:29連想リスト/ハッシュを永続化する程度の機能しかないし、よく壊れるし。
まあ、DBMで済むことをmysqlとか使っててバカだなと思うことはあるが。
0974デフォルトの名無しさん
2008/07/09(水) 03:37:47と思っていた時期が私にもありました
0975デフォルトの名無しさん
2008/07/09(水) 03:46:17DBMで済むことなのか、
mysql入れないとだめなのか、
それを判断できるのはプロに
頼まないとだめなんじゃない?
0976デフォルトの名無しさん
2008/07/09(水) 04:05:45重すぎて論外だったので存在するようなもんだからな。
20年以上前に。
0977デフォルトの名無しさん
2008/07/09(水) 09:15:560978デフォルトの名無しさん
2008/07/09(水) 09:25:070979デフォルトの名無しさん
2008/07/09(水) 11:05:300980デフォルトの名無しさん
2008/07/09(水) 11:12:05>>233の普通の文字操作も入れておいたほうが良いんじゃないかな。
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
0981デフォルトの名無しさん
2008/07/09(水) 11:20:27Perlについての質問箱 36箱目
http://pc11.2ch.net/test/read.cgi/tech/1215569470/l50
>>980
ああ、そうですね。
もう立てちゃったんで、次からということで。
0982デフォルトの名無しさん
2008/07/09(水) 15:17:09use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
これは余計な混乱や誤解生むだけだから入れないほうがいいと思うよ
0983デフォルトの名無しさん
2008/07/09(水) 18:37:39「余計な混乱や誤解」って具体的に何?
0984デフォルトの名無しさん
2008/07/09(水) 23:14:47おまい perl 使ったこと無いのか?
0985デフォルトの名無しさん
2008/07/10(木) 00:09:370986デフォルトの名無しさん
2008/07/10(木) 00:26:09ドラマー乙。
0987デフォルトの名無しさん
2008/07/10(木) 17:59:10なにか問題あるの?
0988デフォルトの名無しさん
2008/07/10(木) 20:15:450989デフォルトの名無しさん
2008/07/10(木) 21:53:490990デフォルトの名無しさん
2008/07/10(木) 22:06:580991デフォルトの名無しさん
2008/07/10(木) 22:21:160992デフォルトの名無しさん
2008/07/10(木) 23:13:16それ、いわゆる 「悪魔の証明」 ってヤツだね。
0993デフォルトの名無しさん
2008/07/11(金) 00:20:54「問題あるだろ、常識で考えて」ってレスが付くもんに
「悪魔の証明だね」なんて言ったら鼻で笑われるぞ。
0994デフォルトの名無しさん
2008/07/11(金) 01:35:02設問: マルチの何が問題なの?
回答: 問題あるだろ、常識で考え
って事だな。ぜんぜん回答になっていない。
「常識」 で済むなら警察いらん。裁判いらん。
これ、中世の魔女裁判でよく使われたやりくちじゃないか!
じゃぁ、こんなのはどうだ?
設問: 光速に近いスピードで移動する物体は、なぜ時間が遅れるのか?証明せよ
回答: ふつう、そうだろ、常識で考え
おれって天才?
0995デフォルトの名無しさん
2008/07/11(金) 01:35:460996デフォルトの名無しさん
2008/07/11(金) 01:36:270997デフォルトの名無しさん
2008/07/11(金) 02:05:320998デフォルトの名無しさん
2008/07/11(金) 02:06:470999デフォルトの名無しさん
2008/07/11(金) 02:15:121000デフォルトの名無しさん
2008/07/11(金) 02:32:3410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。