Perlコーディング初心者質問スレ Part 55
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2007/05/30(水) 11:34:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc11.2ch.net/test/read.cgi/php/1171102883/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0002nobodyさん
2007/05/30(水) 11:34:51ID:???[プログラミング自体の経験が無い奴はまずココを読め]
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/detail/4-7561/4-7561-3057-7.html
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: ttp://search.cpan.org/dist/perl-5.8.8/
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/
0003nobodyさん
2007/05/30(水) 11:35:17ID:???[モジュール]
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
[Perl5.8Unicodeメモ]
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004nobodyさん
2007/05/30(水) 14:47:32ID:???web(charset=euc-jp)から入力された内容を送信し、Jcodeを通して、utf8でテキストファイルを
作成しています。
入力時に、例えば「りゅうべい(立方メートルの記号)」などを登録すると、㎥のような
記号でデータが送信されます。
この文字列(𘚟)から、Jcodeを通してutf8の文字列を取得するには、どうすればいいでしょう?
my $result = Jcode->new(■)->utf8;
■の部分をどうにかすれば可能かと思うのですが、どうすればよろしいでしょうか?
0006nobodyさん
2007/05/30(水) 21:42:29ID:???言われるまで気付かなかったよ。
0007nobodyさん
2007/05/31(木) 02:45:33ID:???use CGI;
use Jcode;
my $q = CGI->new;
my $result = Jcode->new($q->param('hoge'), 'euc')->utf8;
0008nobodyさん
2007/05/31(木) 04:54:07ID:???...
$result =~ s/?(\d+);/ucs2(pack('n', $1))->utf8/eg;
こういうことかしらん。
0010nobodyさん
2007/05/31(木) 18:33:42ID:5ZmU8rMz#!/usr/bin/perl
print "Content-type: text/html", "\n\n";
$folda = 5555;
opendir(DIR , '.');
@view = readdir(DIR);
$xx = pop @view;
until ($xx eq ()) {
$xx = pop @view;
if ($xx == $id) {
print "elrr end2";
exit;
}
open(IN,"./$xx");
while(<IN>){
$aaa .= $_;}
close(IN);
open(OUT,"> ./$folda/$xx");
print OUT $aaa;
close(OUT);
$xx = pop @view;
}
print "elrr end";
このようにやってみましたが、ファイルは出来てもフォルダができません。
0011nobodyさん
2007/05/31(木) 18:35:50ID:F65+C5fx0012nobodyさん
2007/05/31(木) 19:29:38ID:???再帰的にコピーするPerlモジュールがあった気がするが、Googleで
30秒探して見付からなかったので諦めた。邪道も道。
#! /bin/bash
mkdir 5555;
cp -fR ./* 5555/;
echo "Content-Type: text/html";
echo "";
echo "mission complete.";
0014nobodyさん
2007/05/31(木) 20:08:01ID:???----
#! /usr/bin/env perl
use File::Copy::Recursive qw(dircopy);
dircopy(".", "5555/");
print "Content-Type: text/html\n\n";
print "mission complete.";
----
うちのActivePerlにはモジュールが入ってないので入れた。
ppm install File-Copy-Recursive
0015nobodyさん
2007/05/31(木) 21:38:40ID:???0016nobodyさん
2007/05/31(木) 22:06:41ID:oHHUgLPV秘密鍵を入力したユーザだけが参照可能にしたいのですが、
何か良い方法はありますでしょうか?
0017nobodyさん
2007/05/31(木) 23:17:43ID:???0018nobodyさん
2007/06/01(金) 12:46:18ID:nf+wPUURという文字列(最大5種の半角英文字の羅列で最長50バイト)を
「A3コ、C2コ、B5コ、A1コ、E1コ、D1コ、A2コ、C4コ、B1コ」
というように、文字列の先頭から連続している部分を一区切りとして取り出したいんですが
何か良い方法はないでしょうか?
正規表現で可能かとも思って、チャレンジしてみたんですが頭が足りずできませんでした・・・。
答えに直結するレスがもらえれば最高ですが、
答えに近づくアドバイス(参考書籍・サイト等)でも構いませんのでよろしくお願いします。
0019nobodyさん
2007/06/01(金) 13:00:54ID:???print $hoge;
002018
2007/06/01(金) 13:17:33ID:???ありがとうございます!希望通りできました。
こういうのは、センスなんでしょうか、慣れなんでしょうか。
単に私の努力と勉強がまだまだ足りないだけかもしれませんが・・・。
本当にありがとうございました。
0021nobodyさん
2007/06/01(金) 13:32:29ID:???print join ',', @r[map $_*2,(0..$#r/2)];
>>19のほうがいいな。
0022nobodyさん
2007/06/01(金) 18:28:10ID:???コマンドラインから引数を渡してPHPファイルに生成されるprint文(HTMLタグ含む)を
また別のperlファイルで読み込んで使用したいのですが、
HTMLに表示させるところまではうまくいくのですが、
表示させる場所を思い通りの場所に配置することができません。
というか、<html>〜</html>の外(直前)に出力されてしまいます。
perlファイルのソースは、
$i = 引数
open(FP,"| /hoge/file.php $i");
while(<FP>){ $s .= $_; }
close(FP);
return $s;
としています。
http://flex.ee.uec.ac.jp/texi/perl/perl_86.html
こちらのページで、別プロセスに〜と書いてありますが
何かいい方法はありますでしょうか。
0023nobodyさん
2007/06/01(金) 18:37:34ID:???0024nobodyさん
2007/06/01(金) 18:43:46ID:???う・・・・
ちなみに上で長々と書きましたが、
open(|FILEHANDLE,EXPR)としたときの返り値はサブプロセスの pid になるので
うまくperlファイルで扱えないのですが、
対応方法を教えていただきたく書き込みました・・・。
またエスパーですね・・・
0025nobodyさん
2007/06/01(金) 18:55:51ID:???必要になるたび(といっても3回程度ですが)ファイルを読み込むのとどっちがいいですかね?
0026nobodyさん
2007/06/01(金) 19:13:11ID:???> open(FP,"| /hoge/file.php $i");
|を置く場所が違う。それじゃデータの流れがperlからサブプロセス。
その結果、出力をperlが受け取ることなくその場で表示される。
正しくはこの位置
open(FP,"/hoge/file.php $i |");
# ちなみに、openじゃ入力と出力両方を接続することは出来ない。
# そういう用途ではIPC::Open2とかが必要
0027nobodyさん
2007/06/02(土) 06:39:37ID:L1OVX2ULPOSTの中身って自分で調べることが出来るんでしょうか?
cgiのURLはソースを見れば、バレバレなんですが、変数の中身はswfから受け取ってるので、
htmlのソースには書かれてないんです。
フラッシュ内にパスワードとかを書いておきたいのですが、見られると意味ないので…。
0028nobodyさん
2007/06/02(土) 06:45:27ID:???ttp://www1.mahoroba.ne.jp/~mitt/itmemo/webappsecurity/02.htm
見られて困るデータの場合は GET でなく POST を使いましょう。
そのまんまですがこれしか思い浮かばないです)
一般にサーバ側の履歴はアクセス要求があった URL などは保持しますが、
POST されたデータの中身まで1つ1つ保持することはほとんどありません。
ブラウザの履歴にも URL しか残らないので、他人にパソコンを触られても
どんなデータを送信したかまでは見られる心配はないです。
とは、書かれてあったのですが、心配なもので…。
0029nobodyさん
2007/06/02(土) 07:11:54ID:???0030nobodyさん
2007/06/02(土) 07:53:56ID:???0031nobodyさん
2007/06/02(土) 08:02:12ID:???ttp://www.sothink.com/product/flashdecompiler/
003227
2007/06/02(土) 08:41:15ID:???知りませんでした。とにかくどういう手法を使っても、
「自分のブラウザから」送信するデータを見えなくするって無理ってことですよね。
ありがとうございました。
0033nobodyさん
2007/06/02(土) 08:57:40ID:???方法は無数にあるけどPerl関係無いからね
0034nobodyさん
2007/06/02(土) 11:27:15ID:???それでいいんじゃないの
0035nobodyさん
2007/06/02(土) 18:23:49ID:???0036nobodyさん
2007/06/02(土) 18:26:37ID:???0038nobodyさん
2007/06/02(土) 22:23:08ID:???pod のディレクトリで grep してやっと所在が分ったよorz...
0039nobodyさん
2007/06/03(日) 00:18:54ID:???こういうのもあり。
0040nobodyさん
2007/06/03(日) 12:18:02ID:???画像に文字を入れようと思って、
ttp://www.ss.iij4u.or.jp/~somali/web/im_example/character.html
こちらのサイトを参考にやってるのですが、
どうしても、styleやstretchが上手くいきません。
style=>'Italic',
stretch=>'SemiExpanded';
と入れると上手く画像は生成されるのですが、肝心の
styleとstretchの効果が見られません。
何が原因になってるかお分りになる方教えてください。
PerlはActivePerlの最新版を使ってます。
0041nobodyさん
2007/06/03(日) 13:52:19ID:???Cとかだと当たり前だけど…
0042nobodyさん
2007/06/03(日) 13:57:30ID:???0043nobodyさん
2007/06/03(日) 14:26:20ID:???0044nobodyさん
2007/06/03(日) 14:37:50ID:???以前にはサブルーチンによる定数定義に "()"(引数なし) を使っていたくらいかな。今は更に特別な目的がないと使わないと思います。
0045nobodyさん
2007/06/03(日) 15:18:04ID:???氏ね。
>>41
モジュールから引っ張って来れないことがわかってから使わなくなったな。
呼び出し側にプロトタイプ書かなきゃ使えないなんて無意味すぎ。
0046nobodyさん
2007/06/03(日) 16:04:05ID:???なので放置推奨。
0047nobodyさん
2007/06/03(日) 21:19:35ID:???親を一つ持つか複数持つか、の違いだとは分かるんですが、継承を繰り返す=多重継承ではないんですか?
0048nobodyさん
2007/06/03(日) 21:42:25ID:???CGIでSELECT文を実行すると上手くいきません。
環境はwindowsXP,MySQL5.0,文字コードはsjisです。型はtextです。
--------------------------------------------------------------------------
$db = DBI->connect('DBI:mysql:zipcode:localhost', $user, $passwd);
$sth = $db->prepare("SELECT pref, area, addr FROM zipcode where post=3240021");
$sth->execute;
$num_rows = $sth->rows;
print "該当 $num_rows 件\n";
for ($i=0; $i<$num_rows; $i++) {
@a = $sth->fetchrow_array;
print "$a[0] $a[1] $a[2] \n";
}
$sth->finish;
$db->disconnect;
---------------------------------------------------------------------------
この結果は、
---------------
該当 1 件
??? ???? ??
---------------
と表示されます。マルチバイト文字が文字化けというか、
?としか表示されません。(?一つが一文字に対応しているようです。)
コマンドプロンプトからは正常に表示されました。
一つ指南のほうをよろしくお願いします。m(_ _)m
0049nobodyさん
2007/06/03(日) 21:43:46ID:???> useとuse baseは継承と多重継承だそうですが、違いはなんでしょうか?
use はコンパイル時にモジュールをロードする構文であり、use base は「所定の場所から base.pm を探してきてロードしなさいよ」といった意味です。
この場合、たまたま base プラグマが継承に関する機能を持っているというだけで、use 自体は継承とは何の関係もありません。
> 親を一つ持つか複数持つか、の違いだとは分かるんですが、継承を繰り返す=多重継承ではないんですか?
親を複数持つのが多重継承です。継承を繰り返すのが多重継承であれば、少なくとも Perl ではほとんどの明示的な継承は暗黙の多重継承となります。そうだとしたら呼び分ける必要がありませんね。
皮肉ではなく純粋に心配なので、こういうでまかせをどこから仕入れてくるのか、参考までにお教え願えませんか。
0051nobodyさん
2007/06/03(日) 22:27:09ID:???Perlの質問と言うかMySQLの質問に近いが…
MySQL上のどこかの文字セット設定がまずいな。多分スクリプト側だと思うが。
$db->do('SET CHARACTER SET sjis');
接続直後にやって見れ。
後、本当にsjisでいいのか?
Windowsお得意の機種依存文字を受け入れたいならcp932使っとけ。
いや、解ってて確固たる信念を持って受け入れないならそれはそれでいいんだが。
0052nobodyさん
2007/06/03(日) 22:31:12ID:???my.cnf (Windows XP ということなので my.ini とかになるのかな?) の調整で解決しないかな。
いかにも自動変換が悪さをしている気配よ。
0053nobodyさん
2007/06/03(日) 23:30:46ID:???0054nobodyさん
2007/06/05(火) 03:15:21ID:???my $dir_name = "test";
opendir(DIR,"$dir_name");
closedir(DIR);
として、変数dir_nameに直接ディレクトリ名を入れると読み込めるのですが、
my @dir_list = (test,test2);
opendir(DIR,"$dir_list[0]");
closedir(DIR);
とすると読み込めないのは何故でしょうか?
my @dir_list = (test,test2);
my $dir_name = $dir_list[0];
opendir(DIR,"$dir_name");
closedir(DIR);
とした場合でも同様に読み込めず、原因が何なのかもわからず困っています…。
何か基礎的な部分で間違っているのかもしれませんが、教えて頂けると助かります。
宜しくお願い致します。
0055nobodyさん
2007/06/05(火) 04:59:46ID:???> my @dir_list = (test,test2);
ソースそのまま実行したのなら。
my @dir_list = ('test','test2');
opendir DIR, $dir_list[0] or die ;
する事もお勧め。
0056nobodyさん
2007/06/05(火) 13:41:17ID:???回答ありがとうございます。
こちらに書き込みをする時に""を付け忘れていました…;
実際のソースは↓の通りです。(サブルーチンの内容は省略)
my ($error,$th_max);
my (@thread,@response,@th_list);
unless(opendir(DIR,"testdir")){$error .= "魚";&error();}
@thread = readdir(DIR);
closedir(DIR);
splice(@thread,0,2);
pop @thread;
$th_max = @thread;
unless(open(FILE,"<testdir/list.dat")){$error = ."魚"; &error();}
@th_list = <FILE>;
close(FILE);
chdir("testdir");
unless(opendir(DIR,"$th_list[0]")){$error .= "魚"; &error();}
closedir(DIR);
最後の2行を消した状態では問題なく動作したので、最後のopendirの
ディレクトリ指定が間違っていると思うのですが…。
0057nobodyさん
2007/06/05(火) 13:57:55ID:???改行が残っているということではないか
0058nobodyさん
2007/06/05(火) 14:01:14ID:???の
$error = ."魚"
ここで死んでるだけだと思われ
use strict;
use warnings;
くらい付けましょう
005954
2007/06/05(火) 15:06:29ID:???@th_listは
1行目:001
2行目:002
3行目:
となっています。$th_list[0]には1行目の「001」が入っています。
opendir(DIR,"001") とした時は動作するのですが、
opendir(DIR,"$th_list[0]") とした時は動作しません…。
>>58
またまた下記間違えです…すみません;
>>56でも書きましたが、最後の2行を消した状態では問題無く動作しているので、
最後の2行に問題があると思うのですが…。
006054
2007/06/05(火) 15:10:42ID:???サブルーチン&errorに飛んでしまうという事です。
>>56の最後の2行目を除いた状態では、&errorに飛ばずそのまま次の処理へ映るのですが、
unless(opendir(DIR,"$th_list[0]")){$error .= "魚"; &error();}
closedir(DIR);
という記述をすると、$th_list[0]に入っている「001」というディレクトリが開く筈のところ、
何故かディレクトリを開けずに&errorに飛んでしまうのです。
006154
2007/06/05(火) 15:25:19ID:???勘違いしていました…各行に改行が入っているという事だったんですね;
chopを使って@th_listの各行の改行を削除したところ、解決しました。
長々とすみませんでした;
ありがとうございました。
0062nobodyさん
2007/06/05(火) 15:25:28ID:???自分の書き込みのチェックぐらいしろ。
てか、後出し情報多すぎ。
>>54のときと>>56のときと問題が微妙に変わってるし。
お前の書き込みを真に受けて付き合ってる方の身にもなれ。
結論は>>57が正解。
chomp使え。
006362
2007/06/05(火) 15:26:20ID:???0064nobodyさん
2007/06/05(火) 17:36:05ID:???老婆心ながら。
本当に「001」って名前のディレクトリを使ってないと思うが、
もし使ってるのなら用心した方がいいよ。ls を取りながら実際に
以下のワンライナーを実行してみると良い。
% perl -le 'mkdir 0101'
% perl -le 'mkdir q{0101}'
% touch 0101/foo
% perl -Mstrict -w -le 'opendir DIR, 0101 ; print readdir DIR '
0065nobodyさん
2007/06/07(木) 10:44:45ID:???どういう方法がよいのでしょうか?
よろしくお願いします。
0066nobodyさん
2007/06/07(木) 11:08:49ID:???詳しくはGoogle参照。
0069nobodyさん
2007/06/07(木) 11:51:14ID:???0071nobodyさん
2007/06/08(金) 12:26:55ID:???0073nobodyさん
2007/06/10(日) 03:46:48ID:???0074nobodyさん
2007/06/10(日) 15:23:21ID:m8gOFHaOnmakeもnmake15もmingw32-makeを使ってもダメなんですが、
WindowsでCPANを使う時には何が主流ですか?
0075nobodyさん
2007/06/10(日) 21:30:37ID:c+ghO5Jd>本当に「001」って名前のディレクトリを使ってないと思うが、
>もし使ってるのなら用心した方がいいよ。
というのはどういう事でしょうか?
ディレクトリ名に番号を使用するとエラーになる(?)可能性があるとかでしょうか?
>>54じゃないですが、ちょっと気になったもので…
0076nobodyさん
2007/06/10(日) 22:59:35ID:???ヒント: Perl的には0で始まる"数字"は8進数
0078nobodyさん
2007/06/11(月) 17:47:01ID:???今レンタル鯖でLWP::Simpleを使って、cronを仕組んで、100以上のurlを早朝にgetしてパースしています。
uptimeの値を見ても、全くといっていいほど、負荷はかかっていないように思えるのですが、getするのに一番時間が
かかっているためなのか、スクリプトの実行から終了まで2分程度掛かっているようです。
一般論として、レンタル鯖でやってはいけない負荷の高いスクリプトの使用とは、何をもって判断すべきでしょうか?
また、LWPで100以上のurlを一気に取得することは非常識なのでしょうか?
0079nobodyさん
2007/06/11(月) 18:26:54ID:???0080nobodyさん
2007/06/11(月) 19:52:40ID:???個々については鯖に聞かないといけないのはわかるけど、このスレには自分で書いたスクリプトを
走らせてる人も多いと思うんだけど、これはヤバいかな?みたいな定性的な判断ってどうしてるのかな。
0081nobodyさん
2007/06/11(月) 20:01:33ID:???0082nobodyさん
2007/06/11(月) 20:46:11ID:???GD : 大変微妙
fork ; sine
こんな感じ
0083nobodyさん
2007/06/11(月) 22:01:55ID:???当方何も思いつきませんので、何か思いついた方がいらしたら教えて下さい。
【入力例】
前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の
張り等は際立って良く見える。
【出力例】
見際体きいよ前
え立の毛がく走
るっ張ヅ、分の
。てりヤ引か大
良等やきら敗
くは馬続なが
、
実際は縦書き用の等幅フォントを使用します。
0084nobodyさん
2007/06/11(月) 22:57:17ID:???my $str = 'hogehoge,fugafuga,piyopiyo,barbar'x3 ;
my @word ;
my $cnt = 0 ;
for ( split //, $str ){
if ( $cnt == 10 and ! /^,$/ ){
push @{$word[10]}, q{ } ;
push @{$word[0] }, $_ ;
$cnt = 1;
next ;
}
push @{$word[ $cnt]}, $_ ;
$cnt == 10 ? $cnt = 0 : $cnt ++ ;
}
my $len = @{ $word[0] } ;
for my $line ( @word ){
push @{ $line }, q{ } if $len != @{ $line } ;
print join q{}, ( reverse @{ $line }) , "\n" ;
}
0085nobodyさん
2007/06/11(月) 23:01:51ID:???use warnings;
use utf8;
binmode STDOUT, ":utf8";
my $text = '前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の張り等は際立って良く見える。';
my $wrap = 6;
my ($i, @cols);
for my $str (split //, $text ) {
unshift @{$cols[$i++]}, $str;
$i=0 unless $i % $wrap;
}
my $len = @{$cols[0]};
for my $col (@cols) {
if (my $space = $len - @$col) {
unshift @$col, (" " x $space);
}
print join("", @$col), "\n"
}
俺の無い知恵を絞った力作
0086nobodyさん
2007/06/11(月) 23:21:40ID:???0087nobodyさん
2007/06/11(月) 23:37:43ID:LQaHOZkBよろしくおねがいします。
メールフォームで添付ファイルをつけて送信されるようにしたいと
思っているのですが、添付されたファイルが全て1バイトになっていまいます。
考えられる原因は何でしょうか?
サーバーの一時フォルダ(temp)にアップロードされているファイルは0バイト
になっています。
どうぞよろしくおねがいします。
0088nobodyさん
2007/06/11(月) 23:38:11ID:???ありがとうございます。恐縮です。
後で試してみます。
>>86
もしかして禁則無いですか?
まぁアイデアは貰えたのでそのへんは己で何とかします。
0090nobodyさん
2007/06/11(月) 23:45:39ID:???0091nobodyさん
2007/06/11(月) 23:52:48ID:LQaHOZkBSubject: $B%5%$%H$NEPO?(B
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="abcdefghijklmnopqrstu"
--abcdefghijklmnopqrstu
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encording: 7bit
こんな感じになっています。
これはマルチパートになっているということでいいんでしょうか?
0092nobodyさん
2007/06/11(月) 23:54:50ID:LQaHOZkBprint MAIL "To: $mailAdd\n";
print MAIL "From: $custAdd\n";
print MAIL "Reply-To: $custAdd\n";
print MAIL "$mailTitle\n";
print MAIL "Mime-Version: 1.0\n";
if($filename){
print MAIL "Content-Type: multipart/mixed; boundary=\"abcdefghijklmnopqrstu\"\n\n";
print MAIL "--abcdefghijklmnopqrstu\n";
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encording: 7bit\n\n";
} else{
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encording: 7bit\n\n";
}
print MAIL "$body";
if($filename){
print MAIL "--abcdefghijklmnopqrstu\n";
print MAIL "Content-type:";
print MAIL &filetype($filename2);
print MAIL "Content-Disposition: attachment; filename=\"$filename2\"\n";
print MAIL "Content-Transfer-Encoding: base64\n\n";
print MAIL "$encodetenp\n\n";
print MAIL "--abcdefghijklmnopqrstu--\n";
}
close (MAIL);
ソースの方はこんな感じにしています。
ファイル名は正しく添付されているのですが、なにせ中身がありません・・・
よろしくおねがいします。
0093nobodyさん
2007/06/12(火) 09:41:54ID:???あんまり長いURLの場合は、URLを省略して表示させたいのですが、
どうすればいいのでしょうか?
例えば30文字以上のURLだったら、後半を省略してリンクさせる。
【例】ttp://www.yahoo.co.jp/ex…
-----------------------------
sub auto_link {
$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\">$2<\/a>/g;
}
-----------------------------
0094nobodyさん
2007/06/12(火) 10:01:51ID:???その部分だけではなんともいえない。Perlプログラムがどうこうより、まずは
生成されたメールのソースをよく見て関連するRFCに照らし合わせて正しいか
どうか確認したほうがいいと思われる。
0096nobodyさん
2007/06/12(火) 10:28:43ID:???もとのURLの後半をcutしてから『…』くっつけて、
html出力するときにリンクタグではさめばいいだけじゃん
何を悩む必要があるのかわからないんですけど
0097nobodyさん
2007/06/12(火) 11:51:51ID:???俺は君の回答がさっぱりわからない。
cutしてからリンクタグだと、リンクの飛び先も…になるじゃない。
しかも>>93が言っている変換対象の変数にはURLがひとつというわけでもなさそうだし。
0098nobodyさん
2007/06/12(火) 12:40:01ID:???初心者にも程があるだろ
0099nobodyさん
2007/06/12(火) 12:43:17ID:???氏ね
$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1 . '<a href="' . $2 . '">' . (length $2 > 30 ? substr($2, 0, 30) . '…' : $2 ) . '<\/a>'/egx;
0100nobodyさん
2007/06/12(火) 12:44:13ID:???0102nobodyさん
2007/06/12(火) 13:12:38ID:???use String::Multibyte;
my $mcbs = String::Multibyte->new('shiftjis');
(my $str = <<"EOF") =~ tr/\r\n//d;
前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の
張り等は際立って良く、見える。
EOF
my $length = 6;
my @array;
my @str = $mcbs->strsplit('', $str);
while(@str){
foreach(0..$length-1){
unshift(@{$array[$_]}, shift(@str) || ' ');
}
unshift(@{$array[$length]}, ($mcbs->strspn($str[0], '、。') ? shift(@str) : ' '));
}
foreach(@array){
print @{$_}, "\n";
}
# つか、乗り遅れた感。
>>92
一度、MIME::LiteやMIME::toolsとかモジュール使ってみて比較してみれば。
0103nobodyさん
2007/06/12(火) 13:25:10ID:???ふつーに変数2つとか配列とかハッシュとかに突っ込んで片方cutすりゃいいだけだろ
ソースもクソもねえよ
0104nobodyさん
2007/06/12(火) 13:25:13ID:???一度にやらない方が見通しがよいんじゃないか? 前半はJcodeのjfoldとか
使えばいいわけだし。
0105nobodyさん
2007/06/12(火) 13:43:40ID:???文字の切り分けは、どこかで一文字単位にしないといけないので、一度にsplitした方がいいように思う。
my @str = $mcbs->strsplit('', $str);
my @array;
# 一定の長さで区切って配列を作る
while(@str){
my $l = [map{shift(@str) || ' '}(1..$length)];
push(@{$l}, ($mcbs->strspn($str[0], '、。') ? shift(@str) : ' '));
push(@array, $l);
}
# 縦横を変える
my @array2;
for my $i (0..$length){
push(@array2, [reverse map{$array[$_]->[$i]}(0..$#array)]);
}
foreach(@array2){
print @{$_}, "\n";
}
0107nobodyさん
2007/06/12(火) 13:51:06ID:???0108nobodyさん
2007/06/12(火) 13:54:55ID:???0110nobodyさん
2007/06/13(水) 07:53:10ID:???0111nobodyさん
2007/06/13(水) 09:14:14ID:???0112nobodyさん
2007/06/13(水) 18:24:42ID:???文字列だと1000文字まで、数値だと100桁まで...等
検索してもそれらしい情報が見つかりません…。
0113nobodyさん
2007/06/13(水) 18:59:02ID:???0114nobodyさん
2007/06/14(木) 19:22:36ID:???一定文字数を越えると文字化けしてしまう。。
誰かこの文字化けが何系の文字コードか分かる方います??
$"$($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($3$3$G2~9T$*$*$*$*$*$*$*$*$*$*$*$*$
0115nobodyさん
2007/06/14(木) 19:39:52ID:???そんな風に出るわけねーと思うけど
0116nobodyさん
2007/06/14(木) 19:52:43ID:???ヘッダに
Content-Transfer-Encoding: 7bit
を付加してみましたが結果変わらず。。
途中までは普通に文字が表示されてるんだけど途中から急に上みたいな文字列になってしまう。
メール分を生成してるところで本文が入っている変数をDumpしてみたけど
そこは特に文字化けも無く全ての文字が正常に格納されている状態。。。
メールのヘッダとかその辺の設定しか考えられる余地が無いのだけど、うーん。。。
0117nobodyさん
2007/06/14(木) 19:55:49ID:???見るからにJISのひらがなあたりだろ。EUCのMSB落ちかもしれない。
とりあえず頭にESC-$-B補ってnkfに食わせたら
あえええええええええええええええええええええええええええええええええええここで改行おおおおおおおおおおおお
と出ました。
0118nobodyさん
2007/06/14(木) 20:01:39ID:???>頭にESC-$-B補ってnkfに食わせたら
この部分がさっぱりですがググリながら実装方法を調べてます。
感動しましたw
0119nobodyさん
2007/06/14(木) 20:07:49ID:???0120nobodyさん
2007/06/14(木) 20:10:02ID:???0121nobodyさん
2007/06/14(木) 20:11:35ID:???わらたw
0122nobodyさん
2007/06/15(金) 09:18:42ID:???0123nobodyさん
2007/06/15(金) 10:00:59ID:???$content = <FH>;
$content or die;
close(FH);
みたいに、closeする前に終了する(可能性がある)のはあまりよろしくないでしょうか?
0124nobodyさん
2007/06/15(金) 10:09:53ID:???0126nobodyさん
2007/06/15(金) 23:57:47ID:???0127nobodyさん
2007/06/16(土) 02:33:58ID:???0128nobodyさん
2007/06/16(土) 03:01:26ID:???0129nobodyさん
2007/06/16(土) 03:12:20ID:???0131nobodyさん
2007/06/16(土) 04:25:42ID:???or のあとにブロック書ける?
0132nobodyさん
2007/06/16(土) 05:43:36ID:???0133nobodyさん
2007/06/16(土) 05:46:41ID:???こんな高い位置にブロック書くの?
ちょっと書いてみて。
sub error
{
my($str) = @_;
print $str;
exit;
}
sub main
{
open(FILE, "< uso.txt") or &error("そんなファイルないよ");
my @lines = <FILE>;
close(FILE);
$#lines < 0 and &error("中身ないよ");
# 以下略
}
はースッキリ快適。
0134nobodyさん
2007/06/16(土) 09:51:02ID:???「 can か cannot」かって聞かれて(と判断して) can と答えたんじゃね?
実際やるか とは別でしょ。
0136nobodyさん
2007/06/16(土) 12:43:25ID:???0137nobodyさん
2007/06/16(土) 13:49:35ID:???この板らしいっちゃらしいな
0138nobodyさん
2007/06/16(土) 17:06:40ID:???0139nobodyさん
2007/06/16(土) 17:39:20ID:???長らくの御愛顧ありがとうございました。
ttp://www.ayni.com/perldoc/
--完--
0140nobodyさん
2007/06/16(土) 17:51:06ID:???あ、ム板の方は高レベルなので残して置いて下さいね^^
0141nobodyさん
2007/06/16(土) 17:53:36ID:???どこにでも5.6以上のPerlが置いてあるなんて考えるのは甘い。
0142nobodyさん
2007/06/16(土) 18:25:16ID:???0143nobodyさん
2007/06/16(土) 18:25:26ID:???0144nobodyさん
2007/06/16(土) 18:36:36ID:???前スレの終わり辺りから何かあると盛んに出てくるけど
0145nobodyさん
2007/06/16(土) 18:50:25ID:???ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/
2chか。レベル高いってネタだよね?
105 デフォルトの名無しさん [sage] Date:2007/03/22(木) 22:45:19 ID: Be:
HTTP 500 - 内部サーバー エラー です
106 デフォルトの名無しさん [sage] Date:2007/03/22(木) 22:48:42 ID: Be:
なんでブラウザにエラーが出るわけ?
↑
いやApacheの設定なんですけどね…
前スレの終わりでuse Benchmark;使ったら全員で猿のようにベンチマーク。
未だに。2chばかり見てるとますますバカになるよ。
0148nobodyさん
2007/06/16(土) 21:08:54ID:???0149nobodyさん
2007/06/17(日) 00:01:52ID:???Win (no cygwin) + lighttpd + FastCGIでPerl 5.8を動かしたいのですが、ppmで引っかかりませんでした
0150nobodyさん
2007/06/17(日) 10:35:59ID:???Win32 PPM packages for "ExtUtils-Embed"
trouchelle.com Perl 5.8 repository [ v 1.14 ]
0151nobodyさん
2007/06/18(月) 00:25:21ID:k4WptDOcどうしたらよいでしょうか?
MovableTypeやWordPressのメール投稿のようなイメージです。
mail@hoge.comに送信して、www.hoge.comのCGIで
その投稿内容を読むといった感じです。
PerlでPOPクライアントを書いて、内容を取得して、
それをcronで回すくらいしか思いつかないのですが、
cronを回せるレンタルサーバも少ないですし、
回せても1時間毎くらいがせいぜいだったりしますし。
0152nobodyさん
2007/06/18(月) 00:46:35ID:???0153nobodyさん
2007/06/18(月) 05:55:05ID:???152 みたいなバカは死ぬとよい。
0156nobodyさん
2007/06/18(月) 06:45:55ID:???0157154
2007/06/18(月) 07:36:43ID:???まぁ、そうくるだろうと思ったよ。マジレスすると152は漏れじゃない。
信じなくても良いけど、>>153を援護すればする程、>>151の質問に
答える奴はいなくなるよ?(w
0158nobodyさん
2007/06/18(月) 07:57:34ID:???0159nobodyさん
2007/06/18(月) 08:46:27ID:???0160nobodyさん
2007/06/18(月) 09:05:53ID:???答える能力はないが煽っていますということ?
0161nobodyさん
2007/06/18(月) 09:30:18ID:???他のメールサーバーでも同じことはできるかと思う
0162nobodyさん
2007/06/18(月) 13:27:43ID:???0163nobodyさん
2007/06/18(月) 13:29:32ID:???それがどうしたの?
0164nobodyさん
2007/06/18(月) 13:59:19ID:???それがどうしたの、と言われましても…
ここはPerl"コーディング"質問スレな訳ですし。
ロジック的なことを聞きたいのならば、
この板にも適切なスレッドがありますし、
更に深い内容ならUNIX板とかに行けば良いでしょう。
しかし、そのロジックを理解した上でのコーディングに関する
質問はスレ違いではありませんが、レベル的に
"自分で考えれば分かる"程度なので、処理をアシストする
モジュールくらいしか案内出来ないでしょう。
少なくとも 151 の書き込みを読む限りでは。
0166nobodyさん
2007/06/18(月) 14:47:39ID:???0168nobodyさん
2007/06/18(月) 15:52:52ID:???0169nobodyさん
2007/06/18(月) 16:14:07ID:???0170nobodyさん
2007/06/18(月) 16:21:21ID:???システム構成によって方法が違うから。
禁止されてるかも知れないし、maildropが使われてるかも知れない。
ここからPerlコーディングについての質問。
0171nobodyさん
2007/06/18(月) 18:46:23ID:???>>153を援護する奴が>>151(質問者)だろ?
大体、質問した奴がこの流れで16時間も静観してる訳無いだろ?
しかも口調が一緒だし(w
>>151 = >>153 = >>155 = >>160 = >>163
質問に答えてもらおうと必死。
0174nobodyさん
2007/06/18(月) 19:39:27ID:???while( $intAnchor < 1001 ) {
>>172 += $intAnchor;
$intAnchor++;
}
0175nobodyさん
2007/06/18(月) 19:57:19ID:???0176nobodyさん
2007/06/18(月) 20:07:15ID:???>>152 = >>154 = >>157 = >>165 = >>171もなんか必死すぎて嫌いだ
お前ら皆どっかいっちゃえ!!!11
0177nobodyさん
2007/06/18(月) 21:04:16ID:???CGIで読むってことは、CGIがメーラー(POPクライアント)の役割をするわけだから、
CGI起動時にメールボックスから届いたメールを読み出せばいいのでは。
Net::POP3でも使ったらどうですか? 読み出したらサーバから削除するなどの
処理はすべて自分で書く必要があります。GUIのないメーラーを作るようなもんです。
…ていうことではなくて、届いたタイミングで、届いたメールデータを処理したい
ってことかしら。であれば、perlというよりは、.forwardまたはdot-qmailファイル
にでもプログラムにパイプで渡す設定をしておけば、プログラムから標準入力
を読んで処理すれば済む。MIME::Parserを使うと便利。
まずはコードを書いてみることです。
0178nobodyさん
2007/06/18(月) 21:31:22ID:???CGIで、場合によってLocationヘッダを返した場合、
ユーザからみると、即座にページを飛ばされるんですが、
そのCGIはLocationヘッダを返したあともexitしない限り、
以後の処理をし続けるんでしょうか。
0179nobodyさん
2007/06/18(月) 21:41:57ID:???use strict;
print "Location: http://www.yahoo.co.jp/\n\n";
sleep(10);
exit;
0180nobodyさん
2007/06/18(月) 21:45:01ID:???飛ばした後にファイル出力できたので、ちゃんと最後まで処理しますね。
てことは飛ばした場合もちゃんとexitしたほうが無駄が少ないということ
ですよね??
0181nobodyさん
2007/06/18(月) 21:57:32ID:???0182nobodyさん
2007/06/18(月) 22:27:24ID:???例えば、通常、ウェブページをきちんと出力するルーチンの途中で例外的に
飛ばした場合の、その後のページ出力処理、とか。
0183nobodyさん
2007/06/18(月) 23:07:27ID:???飛ばないんですね。面目ない。
0184nobodyさん
2007/06/18(月) 23:15:58ID:???0185151
2007/06/18(月) 23:52:23ID:k4WptDOc普通に帰るのが遅い人間&出先から書きにくい状態でした。
意図としては>>177さんが書いてくださったような、
「届いたタイミングで、届いたメールデータを処理したい」、
つまり、メールを受けたことをトリガとしてバックエンドの処理を動かすという
というものでした。
例えば、メールで「1+1」と送ると、バックエンドで計算処理をして、
答えを「2」で返す、というような。
ご指摘いただいたように、Perlコーディングという内容ではないので、
いただいたお答えを元に、うちの環境で確かめることにしてみます。
ほんとうにありがとうございました。
0186nobodyさん
2007/06/20(水) 13:54:26ID:???kani
kanimiso@
kanikama
上のような文字列(@部分がいろいろ変わる)からmiso@を抜き出したいんだけど
s/.*kani(.*)\n/$1/;
みたいにするとmiso@\nkanikama\nまでが取れてしまいます。
0187nobodyさん
2007/06/20(水) 14:25:25ID:???0188nobodyさん
2007/06/20(水) 14:53:02ID:???0189nobodyさん
2007/06/20(水) 18:37:42ID:???<html>
<head></head>
<body>
</body>
</html>
になってるファイルに<p>hogehoge</p>を書き込んで
<html>
<head></head>
<body>
<p>hogehoge</p>
</body>
</html>
にしたいのですがどうしたらよいでしょうか。
0191nobodyさん
2007/06/20(水) 18:40:41ID:???0193nobodyさん
2007/06/20(水) 18:43:32ID:???<body>〜</body>に<p>hogehoge</p>以外に既に何か文字が入っていても
それを消さずにその下に追記するようにしたいのです。
<body>
<p>fugafuga</p>
</body>
を
<body>
<p>fugafuga</p>
<p>hogehoge</p>
</body>
こんな感じです
0194nobodyさん
2007/06/20(水) 19:04:32ID:???0195nobodyさん
2007/06/20(水) 20:24:57ID:???my $html = <FILE>;
close(FILE);
$html =~ /<\/body>/;
my $top = $`;
my $bottom = $';
$top .= "<p>追加する文字列</p>\n";
$top .= $bottom;
open(FILE,">index.html");
print <FILE> $top;
close(FILE);
exit;
This is not confident.
Please point it out when the mistake is found.
0196nobodyさん
2007/06/20(水) 21:07:55ID:???0197nobodyさん
2007/06/20(水) 21:32:55ID:???0198nobodyさん
2007/06/20(水) 22:14:26ID:???ご飯食べてお風呂入ってるあいだ自分でもこんなの思いついたんですけど
>>195さんのとかのほうがスマートでしたね
if (-e $xmlfile && -s $xmlfile) {
open (FILE, "<test.htm") or die "$!";
@file = <FILE>;
close (FILE);
foreach $line (@file){
if($line =~ /<\/body>/){
$line =~ s/$追加する文字列\n$&/;
}
}
open (FILE,">test.htm");
print FILE @file;
close(FILE);
} else {
open (FILE, ">test.htm") or die "$!";
print FILE "<html>\n<head>\n</head>\n<body>\n$追加する文字列</body>\n</html>\n";
close (FILE);
}
0199nobodyさん
2007/06/20(水) 22:45:40ID:???0202nobodyさん
2007/06/21(木) 00:03:24ID:???if ($line =~ m{</body>})
こんな感じにしたほうが読みやすいだろ、ってこと
0203nobodyさん
2007/06/21(木) 00:04:59ID:???別にいいだろwww
0204nobodyさん
2007/06/21(木) 00:15:52ID:???0205nobodyさん
2007/06/21(木) 00:35:30ID:???ってまた彼が言ってるだけか。
0206nobodyさん
2007/06/21(木) 01:03:59ID:???えじゃん)って事と、>>195のふざけた態度みて(なにが添削しろだよ、
せめてsyntax errorなくしてからレスれ)寛大で居られるおまえらは凄い。
氏ねとは思わんが消えろとは思うぞ、心の底から。
0207nobodyさん
2007/06/21(木) 01:06:53ID:???0210nobodyさん
2007/06/21(木) 01:17:03ID:???一応>>193の答えにはなってるからいいんじゃないのか?
自分で書けた〜のくだりは同感だが、そんなのにいちいち目くじら立ててもな。
ついでに言うと、>>206は海外に行かない方が良さそうだな。
0212nobodyさん
2007/06/21(木) 01:25:23ID:???正確な和訳は出来てたが、つい勢いで。
>>210
どっちかってーと質問者よりも195の方が消えて欲しい。
一回くらいは実行してから、レスするのが礼儀じゃないか?
特に自信ないならなおさら。
最後の一行は同意。
0213nobodyさん
2007/06/21(木) 01:27:55ID:???そう書いたつもりなんだろうけど「俺じゃなくてこのコードさんが、自信がない、と」に
なってたりでいろいろアレなことになってる。
>>206
俺は寛大じゃないけどめんどくさいので>>195はほったらかしてた。
>>210
辞書で confident 引いて用例眺めろ、ってあんたに言えば>>195に伝わりそうな気がする。
0214nobodyさん
2007/06/21(木) 01:53:11ID:???ろくな回答もできない低脳どもの集まるスレはここですか?
0215nobodyさん
2007/06/21(木) 10:11:00ID:???お前が一人で荒らしてるスレ。
0216nobodyさん
2007/06/21(木) 10:22:50ID:???tp://0-9.sblo.jp/article/4439458.html
0218nobodyさん
2007/06/21(木) 13:21:32ID:???「1」という要素が含まれているかどうかを知りたいのですが、
splitで配列化してハッシュに入れる方法以外には無いでしょうか?
最短マッチで
$data = '1,21,10,100,1';
if ($word =~ /(1?,)/) { print "存在します¥n"; }
とやったら最後にある「1」がチェックできませんでした。
0219nobodyさん
2007/06/21(木) 13:47:27ID:???それと$dataと$wordのtypo
0220nobodyさん
2007/06/21(木) 13:53:22ID:???0221nobodyさん
2007/06/21(木) 14:35:54ID:???0222nobodyさん
2007/06/21(木) 14:51:26ID:???0223218
2007/06/21(木) 14:57:47ID:???ググって勉強し直しました。typo_| ̄|○
文字列なのだからわざわざ分割せずに正規表現を使って調べる方法は無いかと
思ったのですが、素直に分割した方が早そうですね。
221さんもありがとうございました。
0224nobodyさん
2007/06/21(木) 16:08:32ID:???0225nobodyさん
2007/06/21(木) 16:14:09ID:???0226nobodyさん
2007/06/21(木) 16:22:39ID:???0227nobodyさん
2007/06/21(木) 16:28:11ID:???0228nobodyさん
2007/06/21(木) 16:52:54ID:???>CGI.pmをラップしてMyCGI.pmを作った。
>CGI::Varsを上書きして定義し、最後に「return $this->SUPER::Vars()」とかした。
>帰ってきたのはhashに見える別物。参照を突っ込むと「'ARRAY(nnnn)'」って文字列で保存しやがる。
>保存できねぇなら半端にやらずにいっそ死んでくれ。。。
ってどういうこと?
0229nobodyさん
2007/06/21(木) 17:06:27ID:???CGIの処理で、別のCGIを呼び出すにはどうしたらいいのでしょうか?
例えばセッションを確認して、有効じゃなかったので、ログインページを表示するCGIに
飛ばす場合などです。
現状ではレスポンスヘッダーのlocationに、呼び出したいCGIのパスを指定して渡していますが、
そうするとサーバはperlの起動を2回してることになって負荷的にスマートじゃない気がします。
何か定番のやり方があれば教えてください。
0230nobodyさん
2007/06/21(木) 17:22:50ID:???俺はlocationにしてるな。
locationをブラウザに渡してからリクエストを受けるから2回起動してるわけじゃないぞ。
0231nobodyさん
2007/06/21(木) 17:33:17ID:???で、飛ばす先(CGI)へのパラメータとして、元のページのURLを渡す。
0235nobodyさん
2007/06/21(木) 18:33:45ID:e31j4SZZの必要性について教えて下さい。
色んなサイトを見てみても、書いてあることがまちまちで混乱しています。
要はグローバル変数を認めないということだと理解しているのですが、
それは変数名をタイプミスすることによるエラーの回避や
可読性を考慮してのことなのでしょうか?
それともその他に重要な部分があるのでしょうか?
例えば、
$hoge = '2ch';
print $hoge;
という内容で、どこからも呼び出されないfuga.cgiがあった場合、
use strict;
my $hoge = '2ch';
print $hoge;
とする必要性はあるのでしょうか?
0236nobodyさん
2007/06/21(木) 18:42:32ID:???習慣をつけておくという意味ではやっといたほうがいいという人も
いる。好きにしろ。
0237nobodyさん
2007/06/21(木) 18:43:32ID:???0238nobodyさん
2007/06/21(木) 18:43:38ID:???可読性を考慮してのことなのでしょうか?
↑で9割正解かと
0239nobodyさん
2007/06/21(木) 18:53:29ID:???Template Toolkit で EVAL_PERL オプションを付け、
テンプレートの中にPERLのコードが書けるようにしました。
で、下記のように書いてテンプレートフォルダ内の count.txt を読み込むよう記述したのですが
その内容が全く出力されませんでした。
Template Toolkitではパールのコードは書けるけどファイルハンドルは扱えない等、
そういう制限があったりするのでしょうか?
[% PERL %]
open FH,"count.txt";
my @count = <FH>;
print @count;
close FH;
[% END %]
0240235
2007/06/21(木) 18:59:48ID:???これから新たに書く場合は心掛けた方が良いけど
既に書き上げてしまったものの中で、自分でコードを全て把握しており
第三者に読ませることがないものについては放置でも良い
という方針でいこうと思います。
>>237
「そのCGIだけで完結していて、他のCGIから呼び出されない」という意味です。
>>238
ありがとうございます。
「とりあえずuse strict;は必須!」と書いてあるところは多いのですが
そのメリットやデメリットについてまで詳しく書かれているところは少なく
自分の理解が合っているのか不安だったので助かりました。
0241nobodyさん
2007/06/21(木) 19:05:29ID:???そんな制限はきいたこともないな。よくわからんがファイル開けて
ないんじゃねーの?
printやcloseのエラーまで厳密にチェックしろとまではいわないが、
openのエラーチェックだけは省略しないほうがいいよ。
0242nobodyさん
2007/06/21(木) 19:18:14ID:???ありがとうございます。
エラーチェックしてみたところ、openの段階でファイルが開けていませんでした。
しかしパスも間違えていないのに何故に開けないんだか。。
原因不明です(´・ω・`)
0244nobodyさん
2007/06/21(木) 19:52:32ID:???ちょこっと検証したけど挙動が変だわw
何れも当環境下なので、あなたの所で上手く行くかどうかは保証外。
以下、成功例
#!/usr/bin/env perl -w
use strict ;
use Template ;
my $tt = Template->new({ EVAL_PERL => 1}) ;
$tt->process(\*DATA, ) ;
__DATA__
[% PERL %]
open FH , 'hoge.pl' or die ;
my @line = <FH> ;
close FH ;
print @line ;
[%- END -%]
'hoge.pl' という名前で保存。これは上手く動いた。ちなみに $/ が undef されてるっぽいので、
@line を $line に変更しても動く。最終改行の制御がどうしても一個多かった。
0245244
2007/06/21(木) 19:54:53ID:???my $tt = Template->new({ EVAL_PERL => 1}) ;
$tt->process(\<<"EOF", ) ;
[% PERL %]
open FH , 'hoge.pl' or die ;
my @line = <FH> ;
close FH ;
print @line ;
[% END %]
EOF
Possible unintended interpolation of @line in string at hoge.pl line 9.と
Global symbol "@line" requires explicit package name at hoge.pl line 9.が出る。
かといって my @line を普通に先に宣言しても上手く動かない。
0246nobodyさん
2007/06/21(木) 20:22:49ID:???0247nobodyさん
2007/06/21(木) 20:24:59ID:???それはttが動く以前の話だろ。
use strict;
print <<"EOF";
@line
EOF
と同じこと。
0248nobodyさん
2007/06/21(木) 20:35:19ID:???わざわざ検証して下さってありがとうございます!
環境の違いがありますが試してみます!
大変参考になりました、感謝です!
0249nobodyさん
2007/06/21(木) 21:06:24ID:???> かといって my @line を普通に先に宣言しても上手く動かない。
ってこっちの例を出すべきでしたね。失礼。
0250244
2007/06/21(木) 22:19:28ID:???アホでした。245以降の私の戯言は消去してください。バルス!!
ああああああ、穴があったら入りたい。ったらありゃしない。
0251nobodyさん
2007/06/21(木) 23:04:05ID:???flock(FILE,2);
my @test = <FILE>;
flock(FILE,8);
close(FILE);
として、test.dat(↓)を読み込み、
テスト1
テスト2
テスト3
unshift(@test,"テスト\n");
と先頭に文字列を追加して
unless(open(FILE,">test.dat")){&error();}
flock(FILE,2);
print FILE @test;
flock(FILE,8);
close(FILE);
という様に書き込んだのですが、見てみると
テスト4 テスト1
テスト2
テスト3
の様に改行されず出力されている様ですが、これは何故でしょうか?
0252251
2007/06/21(木) 23:24:48ID:???\nではなく\r\nとしたら、理想どおりの結果になりました。
スレ汚しすみませんでした…。
0253nobodyさん
2007/06/23(土) 11:05:34ID:???0254nobodyさん
2007/06/23(土) 16:43:39ID:???2: トイレに行って踏ん張ってみたが
3: うんこがでない
0255nobodyさん
2007/06/23(土) 20:09:32ID:???use strict;
my $a = 1;
print "$a\n";
これは正しいのに
# b.pl
my $a = 1;
1;
#a.pl
use strict;
require "b.pl";
print "$a\n";
これは正しくないのは何故ですか?
b.plで変数を宣言し、a.plでb.plをrequireしたら、b.plで宣言した変数が使えるのではないですか?
0256nobodyさん
2007/06/23(土) 20:13:58ID:???0257nobodyさん
2007/06/23(土) 23:12:26ID:???ちったぁ考えろヴァカが!!!!!
0258nobodyさん
2007/06/24(日) 00:04:21ID:???オマエモナー
以下無限ループ
0259nobodyさん
2007/06/24(日) 03:10:40ID:???> 最も外側のスコープであるファイルスコープで宣言されたのであれば、
> レキシカル変数はCのファイルにstaticなものと同じように振る舞います。
> 同じファイルの、宣言の後にある全ての関数から参照可能でありますが、
> そのファイルの外側から参照することはできません。これはモジュールの中で
> モジュールにプライベートな変数を作るために使われます。
0260nobodyさん
2007/06/24(日) 03:11:31ID:???いつからここは初心者罵倒スレにかわったの?
質問に答える気ないなら繰るなよ
0261nobodyさん
2007/06/24(日) 03:13:38ID:???眼科池よ
0262nobodyさん
2007/06/24(日) 03:23:31ID:???眼科池よ
0263nobodyさん
2007/06/24(日) 06:49:32ID:???なんか最近こういうの多くないか…意図的な偽者な気もするけど。
普通に別ファイルでmy付で宣言したら参照出来ないのは当たり前な気がするが
0264nobodyさん
2007/06/24(日) 08:29:54ID:???普通の変数で実行したら、きちんとエラーメッセージが出る
(compilation errors)し、そしたらここで質問せずに済む。
0265nobodyさん
2007/06/24(日) 16:08:49ID:???>>262だが、>>260の3行目は確かにおかしいが、それに対する>>261の
「回答してるからいいじゃん」的な発言もどうかと思うのでレスしただけ。
ここは初心者質問スレなわけで、当たり前の事でもわからない人が来る訳で。
それに対していちいち馬鹿だのなんだのと余計な一言つけないと回答できない
>>257 = >>261 = 263 は来なくていいと思う。
0266nobodyさん
2007/06/24(日) 16:35:34ID:???0268nobodyさん
2007/06/24(日) 17:18:27ID:???0269nobodyさん
2007/06/24(日) 18:02:44ID:???暴言が嫌ならmixiとかでやれよ。ここはそこまで平和な掲示板じゃないっての。
わたくすは普段は回答に罵倒なんか付けない善良な回答者ですが、何か。
0270nobodyさん
2007/06/24(日) 18:10:57ID:???馬鹿扱いされた質問者が
必死になってるとしか思えないww
0271nobodyさん
2007/06/24(日) 18:27:57ID:???0272nobodyさん
2007/06/24(日) 19:03:18ID:???自分の事を棚に上げる>>269の脳味噌はさぞ凄いんだろうな。
暴言が嫌とか、そもそも俺は質問者じゃないからどうでもいい。
ただ単に>>261が、>>260のレスに対してあほなレスして、
それに俺があほなレスを返したところで善良な(笑)>>263様が登場したわけさ。
>>270みたいな安直な考えしか浮かばないなら、勝手にそう思っとけ^^
0273nobodyさん
2007/06/24(日) 19:30:15ID:???0274nobodyさん
2007/06/24(日) 19:35:46ID:???どこが自分のことを棚に上げてるの?
もしかして>>263の1行目のこと? "なのか?"って読める?
しかもまた>>270と同一人物だと認定するの? どこまで自己中なの?
0275nobodyさん
2007/06/24(日) 19:37:42ID:???0277nobodyさん
2007/06/24(日) 20:21:05ID:???ゆとり〜童貞〜中卒〜在日〜部落〜
もうこの手のレッテル貼りは飽きたわ…
0278nobodyさん
2007/06/24(日) 20:40:42ID:???>>258,260,262は特に質問者を擁護している訳でもないのだが、
>>263は根拠もなく自演を思わせるレスをしている。
なのか?が該当者或いは他の閲覧者に対する疑問文なら相当な池沼。
>>261,263は>>257を擁護しており、
>わたくすは普段は回答に罵倒なんか付けない善良な〜
が「罵倒したのは257の時だけ」とも取れる内容なので、自演と疑われる要素はある。
そして、>>272の末行の内容は269のみに宛てたレスではなく、
270と同様の考えをしている者に向けられたものである。
よって自演を指摘するものではないが、>>274は自己な解釈のみで
自演を指摘するものと判断し、それを根拠に自己中呼ばわりしている。
また、「同一人物だと認定」発言や、それらしい発言が無いにも関わらず「自己中」等という
レスを返す>>274は「ゆとり」或いはそれと同程度の知的レベルであると推測される。
さらに、>>277が269や274と同一人物であるかは定かではないが、
>>276が272であると、やはり自己の解釈のみで判断し、レスをしている。
思考に似た点が多い為、恐らくは同一人物であると推測されるが、いずれにせよ
「自分を非難する者を同一人物とし、レスを勝手に解釈し批判する」という
自分の自己中心的思考に気付かずにレスを繰り返す理解し難い有機生命体には
何を言おうが無駄だと推測できるので、これにて閉店とさせて頂きます。
またのご来店をお待ちしております^−^
0279nobodyさん
2007/06/24(日) 21:06:02ID:???[1~] 2chに限らず周りに意見を求めるのを知的障害者と認定するなんて、
余程あなたは世間知らずなのですね。社会に出ましょう。
[6~] 罵倒自演云々はあなたの勘違いですね。反省して下さい。
[10~] 何度も言いますが、日本語読めますか。私は疑問系で書いてるのに、
君は265で断定して書いてる訳で。一緒にしないで下さい。
[15~] 自分のレスを読み返せばあなたが自己中なのは明瞭です。
[18~] 自己矛盾してますね。自分で妄想で語ってるのに気付きませんか。
[21~] 同一人物化云々も君の妄想の域を出ませんね。何を言おうが無駄なら
これ以上私にレスしないで下さいね。閉店とか言って顔文字使ってるのから
必死さが伝わってきて、個人的に気持ち悪いです。初心者みたいで。
0280nobodyさん
2007/06/24(日) 21:11:20ID:???0281nobodyさん
2007/06/24(日) 21:25:13ID:???余程自身が自己中扱いされるのを嫌ってる様だけど、事実なんだよね。
>>265を自分で読み返せば分かると思うけど、一応書いて置くね。
罵倒が嫌なら温いコミュニティに行けば良い訳。それで、自分の掲示板でもないのに
『いちいち馬鹿だのなんだのと余計な一言
つけないと回答できないxxxは来なくていいと思う。』
これは、誰がどう見ても自己中心的な考えだよね、回答者を排除する。
2chは自由な掲示板なんだよ。質問者も自由、回答者も自由。
もちろん、君も意見を言うことは自由だよ。しかし、それによって
住人に叩かれたら、それは事実として認めないといけない訳。
0283nobodyさん
2007/06/24(日) 21:35:43ID:???つまり、何を言いたいかと言うと、君は2ちゃんねるには不向きなんだよ。
こんな些細な「馬鹿」とか「阿呆」に反応してる様ではまだまだ未熟な訳ですよ。
いわゆる半年ROMれっていう。適当な板で経験積んでからお越し下さい。
それでも君がこんな2chの体質は異常だと主張するなら、批判要望板にでも行って下さい。
板違いです。 [2ch批判要望] http://ex21.2ch.net/accuse/
0285nobodyさん
2007/06/24(日) 21:49:30ID:???文脈から低脳さが滲み出てる奴多いよね〜
0287nobodyさん
2007/06/24(日) 22:22:04ID:???0288nobodyさん
2007/06/24(日) 22:31:22ID:???Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
Perlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろPerlコーディングの話をしろ
0291nobodyさん
2007/06/25(月) 11:35:07ID:???0292nobodyさん
2007/06/25(月) 13:12:47ID:???0293nobodyさん
2007/06/26(火) 07:28:23ID:QSRpPplO2:以下のようにやってみました。
open(OUT,"> ./$id/g4.cgi");
print OUT $Buf4;
close(OUT);
chmod 0775,'./$id/g4.cgi';
3:エラー表示発生せず、なぜか属性644で作成される。
以前もどこかのスレに相談させていただいたのですが、
chmod 0775,'./$id/g4.cgi';
↑これでいけるとの事でしたが動きません><
サーバーはジオプラス→ロリポップ→さくらインターネットと乗り換えてみました
いずれも動きません。
0294nobodyさん
2007/06/26(火) 08:31:12ID:???chmod 0775,'./$id/g4.cgi';
''
と
""
の違いについて調べれ。
chmod 0775,"./$id/g4.cgi";
これなら動く。
0295nobodyさん
2007/06/26(火) 08:31:38ID:???1
って出るんですが、これはどういうことでしょうか?
0296nobodyさん
2007/06/26(火) 10:20:52ID:???ソースも無く、再現する状況を並べるでもなく、どうすればいいのか。
0297nobodyさん
2007/06/26(火) 10:25:23ID:???use DBI;
$sth = $db->prepare("SELECT seller, Sum(price) FROM hogehoge GROUP BY seller");
$sth->execute;
while (my $hash_ref = $sth->fetchrow_hashref) {
print "$hash_ref->{seller} $hash_ref->{Sum(price)}<br>\n";
}
fetchrow_hashrefで、Sum(price)の値を見たいのですが、$hash_ref->{ } の { }中にはどう書けばいいのでしょうか?
0298nobodyさん
2007/06/26(火) 10:31:16ID:???require するファイルの末端に 1; って書くけど、もしかして
実行させる CGI 本体のファイル末端にも 1; を書いていませんか?
0300nobodyさん
2007/06/26(火) 10:40:05ID:???foreach (keys %$hash_ref) { print; } で見てみると、sellerとSum(price)っぽいんだけど、
$hash_ref->{Sum(price)} って書くとエラーになります…
0301nobodyさん
2007/06/26(火) 10:47:43ID:???0302nobodyさん
2007/06/26(火) 10:55:12ID:???でもだめなようです。スレ違いですが、SQL文を工夫して
use DBI;
$sth = $db->prepare("SELECT seller, Sum(price) AS sumprice FROM hogehoge GROUP BY seller");
$sth->execute;
while (my $hash_ref = $sth->fetchrow_hashref) {
print "$hash_ref->{seller} $hash_ref->{sumprice}<br>\n";
}
とすることで一応の解決はみたのですが、直接参照する方法はないのでしょうか?
0303296
2007/06/26(火) 11:13:42ID:???書いてません。__END__はありますが・・・
外部ファイルはuseで読み込んでます。
そっちには1;って書いてます。
一体どうしたらいいのか・・・出るのは毎回じゃなくて時々です。
0304nobodyさん
2007/06/26(火) 12:42:27ID:QSRpPplOありがとうございました
自作に行き詰まって業者に制作依頼の見積もりしたら40万だったので諦めて
いたのですが、0円ですみましたほんとうにありがとぉ。
0305nobodyさん
2007/06/26(火) 13:58:53ID:???これでどう?
$hash_ref->{'Sum (price)'},
# 一度、use Data::Dumper; して print Dumper($hash_ref); してみるといいかも。
0306nobodyさん
2007/06/26(火) 14:45:38ID:VwPHcZDuどのように組めばよいですか?
---------------------------
sftp hogehoge
get /home/member/110
bye
-------------------------
0308nobodyさん
2007/06/26(火) 14:50:33ID:???0309nobodyさん
2007/06/26(火) 23:20:42ID:???普通、お前がやったように
Sum(price) AS sumprice
こうする。これが「直接」でないというお前の感覚が腐っている。
0310nobodyさん
2007/06/28(木) 11:56:41ID:YXGDvJmiHTML::Template.pm を使うようになって便利さを感じています。
そこで、フォームの入力の取得も cgi-lib.pl から CGI.pm に変更しようと思い
&ReadParse;
## タグ処理
foreach (keys %in) {
$in{$_} =~ s/</</g;
(略)
}
としているのを、
my $q = new CGI;
my $in = $q->Vars;
foreach (keys %$in) {
$in->{$_} =~ s/</</g;
(略)
}
としてみたのですが、変わった気がしません。
これくらいなら、CGI.pm に変更するメリットはないのでしょうか?
0311310
2007/06/28(木) 11:59:09ID:YXGDvJmiです。
0312nobodyさん
2007/06/28(木) 12:00:42ID:???これはこれで大きいんじゃないの?
0313nobodyさん
2007/06/28(木) 13:46:44ID:5j7nThKQwavファイルをアップしようとしたらこのようなエラー表示が出てアップできません
Short Read: wanted 194, got 0
これがなんなのか教えてください。
0314nobodyさん
2007/06/28(木) 14:05:04ID:???0315nobodyさん
2007/06/28(木) 16:29:12ID:???何のためにOOインタフェースも用意してあんだよ
0316nobodyさん
2007/06/29(金) 13:30:50ID:FzkfeL60今でもやはりjcode.plが一番なんでしょうか?
Jcode.pmだとEUCを通してから変換を行っているせいか
一部文字化けが避けられませんよね。
何かおすすめの方法とかモジュールとかあれば是非教えて下さい。
Perlは5.8.6です。
よろしくお願いします。
0317nobodyさん
2007/06/29(金) 13:55:16ID:???jcode.pl使ってるけど、文字コードをEUCに揃えておいて、出力するときにShift_JISじゃだめかな。
ついでに、俺も似たような質問。
文字列に全角ひらがな [ぁ-ん]以外が含まれていないことをチェックしたくなりました。
文字コードはEUC-JPです。
あまりいい方法が思いつかないので、下記のページを参考にして、文字を1文字ずつ分割して
チェックしようかなと思うのですが、他にエレガントな方法はないでしょうか?
Perlメモ
ttp://www.din.or.jp/~ohzaki/perl.htm
# 全角ひらがな [ぁ-ん] # EUC-JP
$Zhiragana = '(?:\xA4[\xA1-\xF3])';
# $str を文字単位に分割して配列 @chars に代入する
$ascii = '[\x00-\x7F]';
$twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]';
$threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
@chars = $str =~ /$ascii|$twoBytes|$threeBytes/og;
if ((grep { $_ =~ /$Zhiragana|\s/ } @chars) != ($#chars + 1)) {
print "全角ひらがな以外がある!";
} else {
print "全角ひらがなしかない!";
}
0318nobodyさん
2007/06/29(金) 13:57:36ID:???>>316
jcode.pl使ってるけど、文字コードは全てEUCに揃えておいて、出力するときにShift_JIS変換じゃだめかな。
ついでに、俺も似たような質問。
文字列に全角ひらがな [ぁ-ん]以外が含まれていないことをチェックしたくなりました。
文字コードはEUC-JPです。
あまりいい方法が思いつかないので、下記のページを参考にして、文字を1文字ずつ分割して
チェックしようかなと思うのですが、他にエレガントな方法はないでしょうか?
Perlメモ
ttp://www.din.or.jp/~ohzaki/perl.htm
# 全角ひらがな [ぁ-ん] # EUC-JP
$Zhiragana = '(?:\xA4[\xA1-\xF3])';
# $str を文字単位に分割して配列 @chars に代入する
$ascii = '[\x00-\x7F]';
$twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]';
$threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
@chars = $str =~ /$ascii|$twoBytes|$threeBytes/og;
if ((grep { $_ =~ /$Zhiragana/ } @chars) != ($#chars + 1)) {
print "全角ひらがな以外がある!";
} else {
print "全角ひらがなしかない!";
}
0319316
2007/06/29(金) 14:10:58ID:???>jcode.pl使ってるけど、文字コードをEUCに揃えておいて、出力するときにShift_JISじゃだめかな。
全く問題ないと思います。
質問の趣旨としてはjcode.plに代わる新たなモジュールとか方法とかが
出てきてないかな、ということだったんですが分かりにくかったらすみませんでした。
できたら標準モジュールで済ませたいという思いがあって
Jcode.pmを見てみたんですが、ちょっと問題ありだったのでそのことについても
対策があるのか聞いてみました。
やはりjcode.plは今でも全半角変換の定番なんでしょうか?
0320nobodyさん
2007/06/29(金) 14:25:23ID:???decode('euc-jp', $s) =~ /[^\p{Hiragana}]/
0322nobodyさん
2007/06/29(金) 16:09:18ID:???0323nobodyさん
2007/06/30(土) 14:49:08ID:taxZDsiL元のファイルを空にしようと思うんだけど、どの程度の容量を超えた場合にリネームするのが適切?
0324nobodyさん
2007/06/30(土) 15:37:16ID:???0325nobodyさん
2007/06/30(土) 17:34:51ID:???0326nobodyさん
2007/07/03(火) 14:19:01ID:8gn4hJb2常に判定式が真になるという条件付きで$aに乱数をセットしたいです。
my $a = rand 1;
これでは0が入る可能性がありますのでアウトということです。
unless($a>0 and $a<=1){ $a+0.000001 }
などのように乱数の公平性を崩しかねない方法は避けたいです。
unless($a>0 and $a<=1){ $a = rand 1 }
これをループ処理でやっても多分公平性を損ないますよね。
(最低でも小数点第9位までと考えていますが、多くても困らないので*1億→int→/1億などはしていません。)
賢い方どうぞよろしくおねがいします。
0327nobodyさん
2007/07/03(火) 14:22:12ID:???$a>=0 and $a<1;
0329326
2007/07/03(火) 14:32:53ID:8gn4hJb2???
http://perl.misty.ne.jp/function02/rand.html
ここを見る限りでは0~1ということなので0も1も出てくるみたいですが。
解釈が間違ってるでしょか?
0330nobodyさん
2007/07/03(火) 14:35:08ID:???0332nobodyさん
2007/07/03(火) 14:38:23ID:???そのページの記述はいい加減なのでちゃんと付属のマニュアル嫁
rand EXPR
rand Returns a random fractional number greater than or equal to 0
and less than the value of EXPR. (以下略)
0334326
2007/07/03(火) 14:43:10ID:8gn4hJb2つまりrand 1の返り血が1であることは100%ないということですか?
なるほど。0~1というのは自分の勘違いですね。
>>328
これはどうなるんですか?
-1から始まって0までが選択される?
つまり -1<rand(-1) and 0<=rand(-1) ということですか?
なんかこんがらがりそうorz
0335326
2007/07/03(火) 14:45:30ID:8gn4hJb20以上1未満ということで。感謝ですm(__)m
0336328
2007/07/03(火) 15:51:45ID:???そうなの?
use strict;
use warnings;
print rand(-1); # -0.689697265625 が出た。strict も warnings も何も言わない。
>>334
rand(1) が返すのは0以上1未満の値。なので>>330へのお返事についてはそのとおり。
>>328は、上で負数を食わすな的に言われてるから忘れてください。
0337328
2007/07/03(火) 15:53:35ID:???perldoc -f rand
> Returns a random fractional number greater than or equal to 0
> and less than the value of EXPR. (EXPR should be positive.)
知らなんだ。>>333ありがとう。
0338nobodyさん
2007/07/03(火) 16:08:03ID:???望ましい(should be)だから絶対だめというわけではない
ねばならない(must be)ならだめだけど
0339nobodyさん
2007/07/03(火) 18:04:35ID:???今の実装なら負でも特に問題なさそう。
0340326
2007/07/03(火) 22:37:20ID:8gn4hJb2# 設定
my $set = 0;
# 各役確率設定別
my @rep = 1/7.29, 1/7.29, 1/7.29, 1/7.29, 1/7.29, 1/7.29;
my @che = 1/39.20, 1/39.15, 1/39.10, 1/39.03, 1/38.99, 1/38.92;
my @mus = 1/5.26, 1/5.22, 1/5.18, 1/5.14, 1/4.95, 1/4.88;
my @zou = 1/168.0, 1/166.3, 1/165.0, 1/162.6, 1/160.6, 1/159.0;
my @bel = 1/291.2, 1/286.1, 1/282.4, 1/275.3, 1/269.7, 1/265.3;
my @big = 1/1598.4, 1/1560.3, 1/1489.4, 1/1424.7, 1/1337.4, 1/1260.3;
my @reg = 1/2259.8, 1/2114.0, 1/1872.4, 1/1771.2, 1/1598.4, 1/1489.4;
# 決定各役確率
my $rep = $rep[$set];
my $che = $che[$set];
my $mus = $mus[$set];
my $zou = $zou[$set];
my $bel = $bel[$set];
my $big = $big[$set];
my $reg = $reg[$set];
# 各初期値
my $medal = 0;
my $in = 0;
my $out = 0;
my $game = 10000;
0341326
2007/07/03(火) 22:41:20ID:8gn4hJb2# 乱数取得
my $a = 1 - rand(1);
# コインを入れた
$in += 3;
# 取得乱数に応じた挙動
if($a>0 and $a<=$rep){
$out += 3;
}elsif($a>$rep and $a<=$rep+$che){
$out += 4;
}elsif($a>$rep+$che and $a<=$rep+$che+$mus){
$out += 7;
}elsif($a>$rep+$che+$mus and $a<=$rep+$che+$mus+$zou){
$out += 10;
}elsif($a>$rep+$che+$mus+$zou and $a<=$rep+$che+$mus+$zou+$bel){
$out += 15;
}elsif($a>$rep+$che+$mus+$zou+$bel and $a<=$rep+$che+$mus+$zou+$bel+$big){
$out += 350;
}elsif($a>$rep+$che+$mus+$zou+$bel+$big and $a<=$rep+$che+$mus+$zou+$bel+$reg){
$out += 104;
}elsif($a>$rep+$che+$mus+$zou+$bel+$big+$reg and $a<=1){
# ハズレなので何もない
}else{
print "error";
}
}
これを実行したところerrorがprintされてしまうのです。
0342326
2007/07/03(火) 22:42:43ID:8gn4hJb2my $a = 1 - rand(1);
この方法での乱数取得が
$a>0 and $a<=1;
を満たせない時が存在してることになってしまいます。
単純にそのほかの部分の自分のミスだと思うのですが見つけられません。
アドバイスお願いできますでしょうか?
もしよろしければ上記のコードを数度実行してみて確認もしてみてください。
0343326
2007/07/03(火) 23:34:12ID:8gn4hJb2activeperl 5.8.1
windowsXP
遅ればせながらこちらの実行環境になります。
0344nobodyさん
2007/07/03(火) 23:45:02ID:???my @rep = 1/7.29, 1/7.29, 1/7.29, 1/7.29, 1/7.29, 1/7.29;
これは
my @rep = 1/7.29;
に等しいって気付いているか?
0345nobodyさん
2007/07/03(火) 23:55:10ID:???0346nobodyさん
2007/07/03(火) 23:58:23ID:???0347nobodyさん
2007/07/04(水) 00:07:43ID:???とりあえず、変数の並びが法則に反してるとこ一か所あるけど、
それで正しいの?
0349nobodyさん
2007/07/04(水) 00:21:06ID:???名前がないものは当然取得できないですが、
名前のあるものも取得する手段はないということでしょうか。
0350326
2007/07/04(水) 00:36:21ID:GRubSazoなるほど。確認したところ、0.342-0.343あたりの時にerrorになってるようです。
$musのあたりになるはずですが・・・なんでこんなことになるのでしょう。
>>344
すいません、たまにしか触らないのでどうしても細かい部分は忘れて無難な方法を取りガチです。
>>347
ぜひどこなのか教えてください。
0351326
2007/07/04(水) 00:41:01ID:GRubSazo}elsif($a>$rep+$che+$mus+$zou+$bel+$big and $a<=$rep+$che+$mus+$zou+$bel+$reg){
ここでしたorz
0352326
2007/07/04(水) 00:52:15ID:GRubSazo0353nobodyさん
2007/07/04(水) 01:54:39ID:1Rhv3smG404を返したいんですが、その後の表示(ErrorDocument)を
htaccessなどの指定に従う方法はあるでしょうか。
CGIにエラーページを持たせたくないという理由です。
apacheに丸投げできればいいんですが、何らかの方法で
htaccessに指定されたパスを取得して自分で出力してもいいです。
よろしくお願いします。
0354nobodyさん
2007/07/04(水) 02:00:20ID:???それ見た10人が10人ともCGIスクリプトが存在しないと思うだろうけど。
0355nobodyさん
2007/07/04(水) 02:22:20ID:???例えば、検索ロボットがblog.cgi?a=1を見に行って、404だったら、
blog.cgiが消えたものとしてblog.cgi?a=2もDBから削除するでしょうか。
実際はそんなことしないとは思いますが、
世の中のルール的には、そうされてもやむなしでしょうか。
0356nobodyさん
2007/07/04(水) 02:30:20ID:???リダイレクトだと301を返すことにならないでしょうか。
読み込む場合、パスをハードコーディングしたくないのです。
0357nobodyさん
2007/07/04(水) 02:41:56ID:???世の中のルール的になんちゃらとかもよくわかんないけど、
とりあえず400は違うだろうし(410のこと?)、301だけがリダイレクトじゃないと思うよ。
つーか、Perlはあまり関係なさそうですよ。
CGI: Common Gateway Interface part 13
http://pc11.2ch.net/test/read.cgi/php/1126436361/
△▲ WebProg 初心者の質問 Part15 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1169725490/
0358nobodyさん
2007/07/04(水) 02:53:29ID:???404でよかったみたいですね。
やっぱり、blog.cgiの設定項目として
ErrorDocumentを指定させるような仕様に
してみようと思います。ありがとうございました。
0359nobodyさん
2007/07/04(水) 02:58:38ID:???0360nobodyさん
2007/07/04(水) 04:31:59ID:???0361nobodyさん
2007/07/04(水) 17:36:06ID:???@hogeは値が帰ってくるものの、末尾に2つ空の要素が入り、$hoge1と$hoge2に値を返すことが出来ていません。
このような場合どう記述するのでしょうか?
sub main {
my (@hoge, $hoge1, $hoge2) = &hogehoge();
}
sub hogehoge {
return (@ho, $ho1, $ho2);
}
0362nobodyさん
2007/07/04(水) 17:41:24ID:???0363nobodyさん
2007/07/04(水) 17:46:44ID:???つまり、(@hoge, $hoge1, $hoge2)っていう書き方だと、配列の末尾に値を追加するという意味になってしまうのでダメ
ということでしょうか。
# でも、配列が2つ以上だったらどうするんでしょう…
0364nobodyさん
2007/07/04(水) 17:49:00ID:???0365nobodyさん
2007/07/04(水) 17:59:20ID:???リファレンスはよくわかってないですが、そういう時に使うんですか。ありがとうございました。
# と、今回は配列1個だけだから、>>362の方法で乗り切りましたw
0366nobodyさん
2007/07/04(水) 18:40:00ID:???見た目ならリファレンスのが綺麗かなぁ
0367nobodyさん
2007/07/04(水) 19:19:57ID:???0368nobodyさん
2007/07/05(木) 04:46:34ID:Ees4tlLi1.ソースの冒頭の方で呼び出す
2.その特定の処理の中で呼び出す
どちらが一般的なんでしょうか?
0369nobodyさん
2007/07/05(木) 04:55:41ID:???0370368
2007/07/05(木) 05:16:30ID:???配布前提の場合は、ライブラリのパスを設定したり、どのモジュールを使用するかを
利用者に分かりやすく書く必要があるのでまた特別かなと思ったりもするんですが
やはり冒頭にまとめて書くのが普通なんですかね。
めったに使われない処理のためだけにモジュールを毎回呼び出すのって
何か妙に無駄な気がしてしまうんですが、どうなんでしょうか。
0371nobodyさん
2007/07/05(木) 05:58:33ID:???そこで必要なモジュールや処理の補則をすれば問題ないじゃない
0372nobodyさん
2007/07/05(木) 06:25:44ID:???0374nobodyさん
2007/07/05(木) 10:45:56ID:???プラグインみたいな使い方じゃない限り素直に読み込ませた方がいいんじゃないかな
0375nobodyさん
2007/07/05(木) 11:06:56ID:???ってバニング大尉が言ってた
0376nobodyさん
2007/07/05(木) 11:33:04ID:???使ってる変数全部まとめて最初にmy宣言、ってのはアリ?
例えば
$title = 'タイトル';
$hoge01 = '値1';
$hoge02 = '値2';
.......
ってのを
my $title = 'タイトル';
my $hoge01 = '値1';
my $hoge02 = '値2';
とせずに
my ($title,$hoge01,$hoge02);
$title = 'タイトル';
$hoge01 = '値1';
$hoge02 = '値2';
ってやると、何かマズイとこありますか?
あまり美しくない程度ですか?
0377nobodyさん
2007/07/05(木) 11:45:14ID:???変数名しらべて書き並べるより楽じゃない?
0378nobodyさん
2007/07/05(木) 11:46:32ID:???my ($title,$hoge01,$hoge02) = qw(タイトル 値01 値02);
0380376
2007/07/05(木) 12:03:58ID:???どっちでも良いと分かって一安心。
前半同じ名前で後半の数字が違うだけ、って変数名が多いんで
調べる手間はそんなかなぁ、と思ってたけど、結局全部網羅するとなると
大して作業量は変わらないかな・・・。
>>378
それはムチャクチャ長くなりそうなんで、ちょっと勘弁w
アドバイス感謝!
0381378
2007/07/05(木) 12:15:33ID:???my ($authID, $authPASS, $authEXP) = qw(〜); # 認証関連
my ($htmlTITLE, $htmlSUBTITLE, $htmlCSS) = qw(〜);
のように似てるもの同士でまとめて書くのよ
0382nobodyさん
2007/07/05(木) 13:21:28ID:rw6MBlh965,536byteは60KB以上で間違いありませんか?
0383nobodyさん
2007/07/05(木) 13:23:29ID:???0384nobodyさん
2007/07/05(木) 13:49:32ID:rw6MBlh9答えたことはあるけどな。>>19と>>362の二回だけ。
もういいや。ありがとうございます。たしかGNOME電卓にそんな機能が・・・
0385nobodyさん
2007/07/05(木) 13:58:27ID:???our
0387nobodyさん
2007/07/05(木) 14:06:19ID:???0388nobodyさん
2007/07/05(木) 14:08:13ID:???0389nobodyさん
2007/07/05(木) 14:10:35ID:???>前半同じ名前で後半の数字が違うだけ、って変数名が多いんで
俺も変数名で悩んで、そういう名前をつけてしまうことがたまにあるけど、それはやめたほうがいい。
自分の頭の中でも整理がつかなくなってしまうから。
俺は実は、use strict;してないんだけど、変数名を整理して、局在化して書くことだけ気をつけていれば、
仕様書を書かなければ整理がつかないような大きなスクリプトを書くのならともかく、そんなに問題はないと思うけどね。
0390378
2007/07/05(木) 14:43:43ID:???と釣られてみる
0391nobodyさん
2007/07/05(木) 17:42:15ID:/MBCt40Zuse Benchmark;
sub test{ 色々 }
timethis(1,&test);
というplファイルをwinのcmdから実行させると、ちゃんとtest内に掛かれてる処理はされてるようなのですが、
timethis 1: 0 wallclock 〜
なんてことになってしまいます。timetheseでやるとちゃんと秒数が出てくるのに。thisだと出ない。
countを10回にしても実際には一杯時間掛かってるのに1分くらい待って出てくる表示は
timethis 10: 0 wallclock 〜
使い方間違ってますか?お助けくださいませ。
0392nobodyさん
2007/07/05(木) 22:09:43ID:???サブルーチンのリファレンスか
evalして実行できる文字列だけだにょ
0393391
2007/07/05(木) 22:56:26ID:/MBCt40Zopen FH,"bench.txt";
my @line = <FH>;
close FH;
sub test1{
my %get;
while (@line){
$csv->parse($_);my @fields = $csv->fields();
for (my$i=0 ; $i<=1 ; $i++){
$get{$fields[0]}->[$i] = $fields[$i];
}
}
}
sub test2{
my %get0;
my %get1;
while (@line){
$csv->parse($_);my @fields = $csv->fields();
$get0{$_} = $fields[1];
$get1{$_} = $fields[2];
}
}
timethese(100,{ PatternFast => 'test1', PatternSlow => 'test2',});
おかしいんです。今度はこれまでも0.00秒になってしまう。
どこをどう直せばいいのですか?
0394nobodyさん
2007/07/05(木) 23:33:45ID:???0.00秒になるのは分からんけど
無限ループだにょ
0395391
2007/07/06(金) 10:06:20ID:oyGEvxOpforeachと間違えました。すいません。危うく死亡するところでした。
benchの中で大助かりです。
ところで無限ループが始まった時って賢い対処法はありますか?
いつもはwindowsの終了をやってますが、タスクマネージャあけてアプリケーションの終了させればいいだけなのですか?
とりあえず問題は解決しました。benhの花井で卯s。
なんか数がすくないよってことだったらしいです。50000000とかにしたらようやく比較できました。
0396nobodyさん
2007/07/06(金) 18:49:11ID:???if($name eq ""){&er_("名前が未記入");}
if($name eq " "){&er_("名前が未記入");}
if($name eq " "){&er_("名前が未記入!");}
・
・
if($name eq "連続する半角全角スペースいっぱい"){&er_("名前が未記入!");}
とやっていくとキリがないです。
そこでパターンマッチ演算子というのを使ってみたのですが↓のであってますでしょうか?
if($name=~ /^ /){&er_("名前が未記入");}#半角スペースが先頭の時
if($name=~ /^ /){&er_("名前が未記入");}#全角スペースが先頭の時
とりあえず判定できてるっぽいですが
もっとスマートな方法があれば教えてください。
0397nobodyさん
2007/07/06(金) 19:01:01ID:???正規表現ド素人なんであんまり自信ない。
0398nobodyさん
2007/07/06(金) 19:03:58ID:???フォームに入力される文字がどういう文字なのか(2バイト文字とかを含むのか)とか、
スクリプト中での文字コードの扱いにもよると思うけど、古典的には以下の内容がかなり役立つかと。
http://www.din.or.jp/~ohzaki/perl.htm#JP_RmSpace
# 半角スペース
$space = '\x20';
# 全角スペース
$Zspace = '(?:\xA1\xA1)'; # EUC-JP
$Zspace_sjis = '(?:\x81\x40)'; # SJIS
0401nobodyさん
2007/07/06(金) 21:30:46ID:???&hoge($bar);
&hoge($bar{'id'});
&hoge($bar[0]);
sub hoge {
return $_[0];
}
真ん中の例のように、ハッシュを入れると値が帰ってきません。このような場合に、値を返すようにするには、どう記述するのが
一般的なのでしょうか?(試していませんが、一番下の配列の1要素を入れてもダメかもしれない?)
0402nobodyさん
2007/07/06(金) 21:36:05ID:???0403nobodyさん
2007/07/06(金) 21:46:38ID:???&hoge('hoge','hoge');
みたいに呼び出したときに、@_をshiftして呼び出すのはわかるのですが、同じ$_[0]で何故、$barの値は渡るのに、
$bar{'id'}の値は渡らないのでしょうか、という疑問です。
0404401=403
2007/07/06(金) 22:04:57ID:???問題は解決しましたが、>>401は依然疑問かも。恐らく
&hoge($bar{'id'});
でも
&hoge($bar[0]);
でも$_[0]に値は入ると思う(思いたい)という、もやもやは残りましたがw
0405nobodyさん
2007/07/06(金) 22:20:23ID:???> いつもはwindowsの終了をやってますが、タスクマネージャあけてアプリケーションの終了させればいいだけなのですか?
そんな面倒なことやってるんですか?
パソコンのコンセントを抜くだけですよ!
0406nobodyさん
2007/07/06(金) 22:36:49ID:???0407nobodyさん
2007/07/07(土) 00:38:24ID:???入力フォームを再度表示して、エラーのある箇所に赤文字でエラーメッセージを出力する。
この板的にはそういうスクリプト書くことが多いと思いますが、そういう場合に便利なモジュールなどはあるのでしょうか?
0410nobodyさん
2007/07/07(土) 09:38:06ID:???hiraZ2H(STRING)
hiraZ2H(SCALAR REF)
というのが出てきたんですけど使い方がわからないです
0411nobodyさん
2007/07/07(土) 10:04:34ID:???0412nobodyさん
2007/07/07(土) 10:33:19ID:???&jcode'z2h_sjis(\$foo);
で全角の$fooを半角にできました
でもひらがなをカタカナにしないと使えないです
0413nobodyさん
2007/07/07(土) 10:53:15ID:???print qq{$bar \n $bar{id} \n $bar[0]};
sakini kore yatte atai ga tyanto haitteruka checksitemite gomen ime okasiikara konnna kannji dakedo
0414nobodyさん
2007/07/08(日) 08:31:07ID:???print hira2kata_sjis("あめんぼ赤いなあいうえお");
exit;
BEGIN {
require 'jcode.pl';
my $from_code = 'sjis';
my $kata = 'ァ-ン';
my $hira = 'ぁ-ん';
jcode::convert(\$hira, 'euc', $from_code);
jcode::convert(\$kata, 'euc', $from_code);
sub hira2kata_sjis
{
my $str = shift;
jcode::convert(\$str, 'euc', $from_code);
jcode::tr(\$str, $hira, $kata);
jcode::z2h_euc(\$str);
jcode::convert(\$str, $from_code, 'euc');
return $str;
}
}
0415nobodyさん
2007/07/08(日) 11:06:02ID:???shift_jisで書かれたperlスクリプトをeucに変えてるのだけど、
文字コードをeucに変更して保存とjcode.plでshift_jisにしてる部分をeucに変更で
とりあえずは表面的には問題なさそうに見えるのだけど、ちょっと不安。
で、ここから質問なんだけど、他にやっておいた方がいい事とか注意する点とかってあるかな。
0416nobodyさん
2007/07/08(日) 11:22:52ID:???化石のようなライブラリを使わない
0417nobodyさん
2007/07/08(日) 11:31:27ID:???ぶっちゃけ、どんなスクリプトなのか、どういう人のアクセスを想定しているのか、
ぐらいの情報すら書かずに、ちょこちょこ後出しの駄レスが続くことに嫌気がさしてきた。
不特定多数の携帯からのアクセスがあるならUTF-8はまだダメだろうな。
まぁ、4、5年以上前の携帯だとそもそもEUCもダメなのあるけど。
0418nobodyさん
2007/07/08(日) 12:17:04ID:???utf8で書いてshiftjisで吐けばいいじゃん
0419nobodyさん
2007/07/08(日) 20:22:14ID:???utf-8はファイルサイズが増えるから・・・って思い込んでたけど思ったより増えないんだね。
これならそっちでも問題ないな。
どんなスクリプトとかアクセス方法によってそんなに変わるもの?
基本抑えておけば色々な場合に対応できると思ってたんだけど、
やっぱノウハウに違いが出てくるのかな。
ちなみにちょっとした掲示板系スクリプトとゲーム系スクリプト混ぜた感じの自作だったり。
アクセス数少ないし多分携帯も問題ない筈。
0421nobodyさん
2007/07/09(月) 06:10:18ID:???jcode.pl+EUCで書いてますがw
perlがいいのは、web上に情報が多いことで、さらに、ある程度化石級の書き方のほうが、
情報量が多くて便利なこともあるような。
0422nobodyさん
2007/07/09(月) 10:47:47ID:???古いライブラリだと新しい規格に対応してないなど不都合もある。
とりあえずjcode.pl+EUCでいいよ
0423nobodyさん
2007/07/12(木) 01:50:40ID:???2度目以降に動作しません。テスト用のpmファイルでは変数は一切使っておらず、
ただprint "test2"としているだけですが、最初の1回だけ出力されます。
main側もただtest1とだけ出力していますが、こちらは毎回出力します。
どのような原因が考えられましょうか。
0424nobodyさん
2007/07/12(木) 01:56:28ID:???見つかりませんでした…
どうかよろしくお願いしますm(_ _)m
0425423
2007/07/12(木) 02:01:32ID:???よろしくお願いします。
#!/usr/bin/speedy -w
use strict;
use warnings;
print "Content-type: text/plain; charset=utf-8\n\ntest";
require './lib/test.pm';
# test.pm
package test; print 'test2'; 1;
0426423
2007/07/12(木) 02:04:16ID:???http://72.14.235.104/search?q=cache:7-pqqTdFRYgJ:www.kent-web.com/perl/chap6.html+perl+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E5%A4%89%E6%9B%B4&hl=ja&ct=clnk&cd=1&gl=jp
0429423
2007/07/12(木) 03:13:50ID:???関数だとちゃんと出力されました。
グローバル変数の初期化から前述のコードに迷い込んだのですが、
要するに初期化もパッケージの直下にour $a = 0なんて書くのではなく、
INITとか初期化用関数とかを用意しないとならないのですね。
グローバルという言葉をよく理解できてないようです。勉強します。
ありがとうございました。
0430nobodyさん
2007/07/12(木) 15:38:50ID:???http://www.au.kddi.com/test.cgi?atai=apple
のように、受け取った値を利用したURLにアクセスさせたいのですが、
今はやり方が分からずアンカータグを返して1クッション置いているのですが、ダイレクトで表示させるにはどのようにすれば良いのでしょうか?
よろしくお願いします。
0431nobodyさん
2007/07/12(木) 16:13:05ID:???それでダメならLocationなりで飛ばせばいいじゃない
0432nobodyさん
2007/07/12(木) 18:46:36ID:???文字コードをEUC-JPに変換して半角文字を全角文字に変換する場合、
&jcode::convert(\$value,"euc","","z");
これと
&jcode::convert(\$value,'euc');
&jcode::h2z_euc(\$value);
これは、
同じなんですか?
後者のはよく見かけるんですが、
前者のはあまり見かけないような印象があるんですが
何か理由があるのでしょうか?
0433432
2007/07/12(木) 18:51:01ID:qGszHv4Y質問なのにsageてしまったのでage直します。
0434nobodyさん
2007/07/12(木) 19:02:56ID:???もうね・・・
0435432
2007/07/12(木) 19:23:06ID:???&jcode::convert(\$value,'euc');
は
&jcode::convert(\$line, $ocode [, $icode [, $option]])
の第三と第四の引数(?)を省略した形ということですよね?
だとすると、なぜわざわざ省略したのに
&jcode::h2z_euc(\$value);
とするのかが理解できません。
最初から
&jcode::convert(\$value,"euc","","z");
で良いのでは?と思ってしまうんですが・・・。
0436nobodyさん
2007/07/12(木) 19:28:52ID:???0437nobodyさん
2007/07/12(木) 20:15:35ID:???ありがとうございます。
LocationはJavaScriptのことですよね?携帯端末向けなのでスクリプトは使用できませんm(_ _)m
GETで値を受け取って変数に入れて、それをアンカーで排出することまでは出来たのですが、
ダイレクトでの飛ばし方が分かりません…
0438nobodyさん
2007/07/12(木) 20:37:59ID:???0439nobodyさん
2007/07/12(木) 21:49:17ID:???複数あるダウンロード対象を複数選択し、
ダウンロードボタンを押したら順次ダウンロードできるようなものを作りたいんだが
1ファイルダウンロードするのは
print "Content-Disposition: attachment; filename=\"hige\.tar\.gz\"\n";
print "Content-type: application/octet-stream\n\n";
open(FILE, "hige.tar.gz");
binmode(FILE);
while(<FILE>){
print "$_";
}
close(FILE);
でいけるんだけど、複数ファイルとかどうやるか知ってる方いませんか?
0440nobodyさん
2007/07/12(木) 22:38:50ID:???複数のファイルをサーバで固めてから1回で落とすとか。順次というのは無理っぽい。
まあ、ふつう落とすファイルのリンクを並べたページをまず出力して、クライアント側で1つずつ
クリックして落としてもらうのが妥当なのでは?
それから、
while(<FILE>){
print "$_";
}
は
print <FILE>;
で済むよ。
0441nobodyさん
2007/07/12(木) 22:59:03ID:???0442nobodyさん
2007/07/12(木) 23:22:07ID:???ありがとうございます
固めるのも考えたんですが、素のtar.gzですでに1G超えファイルがあるので
別々にダウンロードしたかったんですね
#サーバが32bitなので最大6Gのファイルしか生成出来ない
そして、現状ひとつずつぽちぽち押してダウンロードする仕様なんですが
それがめんどくさいからまとめようぜ?見たいな乗りになった末での質問でした(_O_)
0443nobodyさん
2007/07/13(金) 00:21:04ID:???sysreadを使うのとreadを使うのでは、
一見、同じように見えますが、どういうときに違いますか?
お願いします。
0444443
2007/07/13(金) 00:34:18ID:???ttp://www.tohoho-web.com/lng/199907/99070330.htm
0445nobodyさん
2007/07/13(金) 02:24:03ID:???0446nobodyさん
2007/07/13(金) 04:18:38ID:???0447nobodyさん
2007/07/13(金) 07:42:31ID:???君が言う様な1GBのファイルを読み込んだらメモリが物凄いことになりそうだけどね
バッファを用意してsysreadとかsyswriteでチョコチョコ出す方が良いと思うのだけど
0448nobodyさん
2007/07/13(金) 19:25:41ID:rAe1S2vbモジュールとクラスの違いがよく分かりません。
クラスだとnewするので、その分メモリが多く使われるなど
メリット、デメリットってありますか?
0449nobodyさん
2007/07/13(金) 19:54:44ID:???0450nobodyさん
2007/07/13(金) 20:34:44ID:???モジュールは外部ファイルを読み込んで実行する機構の、外部ファイル。
クラスはオブジェクト指向プログラミングで使われる、データと操作手順をまとめて雛形にしたもの。
よって比較できない。
0451nobodyさん
2007/07/13(金) 20:53:17ID:rAe1S2vb共通部分はモジュールかクラスかにするんだな。と単純に考えていて
どっちがいいのかな?と思っていたのですが考え方が違うと。
クラスのほうがスッキリしそうですけど、遅いとかメモリ食うとか
あるのかなと思いました。
0452nobodyさん
2007/07/13(金) 20:55:36ID:???0454nobodyさん
2007/07/13(金) 22:59:52ID:???0455nobodyさん
2007/07/13(金) 23:02:35ID:???ApacheのモジュールもPerlで書けるとオライリー(Apache拡張ガイド 上)に書いてあったよ。
mod_perl云々言ってるんで、Apache解説本でも読んでるのかと思ったんで一応聞いてみたんだが。
0456nobodyさん
2007/07/14(土) 02:19:51ID:???たとえを出すと、自動車とタイヤキ型を比べてるようなものだから、
比較が出来ないという話。
それで、オブジェクト指向と非オブジェクト指向のどちらがいいかという質問か?
0457nobodyさん
2007/07/14(土) 07:44:47ID:???それって例えがちょっと違わね?
クラスの方は型っていうのはほぼ良いとしても、
モジュールは、部品の切り分け方(取り付け方)だから、例えで言えばネジ止めみたいな事じゃね?
つまり、
「鋳造型とネジ止めを比較するようなもので、鋳造された部品だってネジ止めする事はあるから比較できない。」
って感じじゃね?
0458nobodyさん
2007/07/14(土) 08:17:22ID:???こうやってぐだぐだになるんだよな
0459nobodyさん
2007/07/14(土) 13:05:26ID:???どうせ違うとしても大した差じゃない。見通しよく書けるかどうか
のほうが重要だよ。
0460nobodyさん
2007/07/14(土) 13:23:11ID:XODLozhP旧サーバでは動いているのが、新サーバでは以下のようなSocket接続でこけています。
$remote = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => $server,
PeerPort => $port,
) || &error("error");
IO:Socket:INETD.pmを1行ずつ進捗printしてみたところ、コンストラクタ(sub new)の
「return $class->SUPER::new(@_);」で止まってしまいます(長い時間かかったあと"error"が帰ってくる)。
この$class->SUPER::new(@_);って親クラスのコンストラクタを
呼び出していると思うんですが、INETD.pmの親クラスって何になるんでしょうか?
perl初心者につき変なこと言ってるかもしれませんが、
よろしくご教授ください。。。
0461nobodyさん
2007/07/14(土) 13:40:14ID:???ソースを読んでuse baseか@ISAをいじってるところをさがす
or
そのパッケージの@ISA配列の値を調べる
0462nobodyさん
2007/07/14(土) 13:50:10ID:???0463nobodyさん
2007/07/14(土) 15:18:54ID:???>>451がどれだけドンチキな話をしてるのか理解してもらえればそれでいいのよ。
>>460
IO::Socketが親で、さらに上をたどるとIO::Handle。
0464460
2007/07/14(土) 15:20:34ID:XODLozhPありがとうございました。親クラスはIO:Socketでした。
今のところ、IO:Socket:connect()まで入ってきているのを確認できたので、
connect()の中を色々探ってみたいと思います。
(connectのどこかで止まっている状態)
0465460
2007/07/14(土) 15:24:56ID:???>>464
Hanndleとか行ったりきたりして、今のところ463のような状態なので
引き続き調べます。ありがとうございます。
0466nobodyさん
2007/07/14(土) 15:55:23ID:???0467トラハムちゃん
2007/07/14(土) 16:32:18ID:M6VlwpzHユーザーエージェントに「AAA」または「BBB」という文字が
含まれていなかったらエラーを表示したいと思っています。
if(not $ENV{'HTTP_USER_AGENT'} =~ /AAA/) {
&error("エラーです");
}
「AAA」だけでしたら作れたのですが、うまく「BBB」が追加できなくて困っています。
初心者なりにor等を使ってみても、入れ方が悪いのかうまくいきませんでした。
どなたかご教授いただければと思います。
よろしくお願いします。。
0468nobodyさん
2007/07/14(土) 16:35:18ID:???0469トラハムちゃん
2007/07/14(土) 17:14:18ID:M6VlwpzHできました!
ありがとうございました!!
助かりました!!
0470nobodyさん
2007/07/14(土) 17:54:00ID:???慣れないうちは、&errorとかサブルーチン作った方が、本人の!可読性がいいと思うし、
webprog的には、エラーが発生したときにブラウザに表示させることも多いので、別に構わないというか
俺はそうしてる。
特殊変数なんかも同じで、慣れないうちは使ってなかった。
foreach my $str (@hoge) { print $str; } みたいに。
0471460
2007/07/14(土) 18:53:18ID:???IO:Socket:connect()の↓のconnect関数から反応が返ってこないということが
分かりました。
if (!connect($sock, $addr)) { }
connect()関数を使うにあたって、
サーバ側で何か設定が必要だったりするでしょうか?
今回自宅サーバのため、同じcgiが動いているレン鯖と何か設定が
違うのかもしれないと思いまして。
もしくは、ポート開放関係?一応メールの110ポートはあけているんですが。。。
すみませんが、よろしくお願いします。
0473448
2007/07/14(土) 19:25:34ID:ybwwq6evその点が気になってたとこです。
実行効率か、可読性かみたいな。
ただ、どっちがどうかは良く分かってませんが。
すんません。
0474nobodyさん
2007/07/14(土) 23:24:23ID:???0475nobodyさん
2007/07/15(日) 00:16:49ID:tgDYqhX7普通にやるとアクセス元のcgiのあるフォルダにファイルが作られてしまいます。
ライブラリであるplのあるフォルダにファイルを作りたいのですが、
どのようにすればいいのでしょうか?
0476nobodyさん
2007/07/15(日) 00:32:58ID:???0477nobodyさん
2007/07/15(日) 00:50:43ID:???0478nobodyさん
2007/07/15(日) 02:37:03ID:???0479nobodyさん
2007/07/15(日) 08:06:39ID:???アマグラマの回答でよければ。
library.pl 側で、自分の位置を変数に保持するか、それを調べて返すサブルーチンを用意してはどうでしょう。
私も初学者ゆえ、パスの調べ方については分からんのですが、たぶんやり方はあると思います。
で、そうやって取得したlibrary.plのフルパスを、ファイル操作ルーチンに突っ込む。
0480479
2007/07/15(日) 08:08:13ID:???× そうやって取得したlibrary.plのフルパスを、〜
○ そうやって取得したlibrary.plが存在するディレクトリのフルパスを、
0481nobodyさん
2007/07/15(日) 09:19:49ID:???http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlvar.pod#%25INC
しかし普通はそんな変な仕様にせず、内容が変化するファイルのパス
なり親ディレクトリなりをスクリプト内や設定ファイルで明示的に指定
できるようにするべきだろう。
0484460
2007/07/15(日) 18:30:54ID:???PerlのSocket:connect()を使えるかどうかは
自宅サーバなので自分で設定できるんですが、
設定する箇所がわからない・・・。
httpdのconfigにもそれらしき箇所はないし、
perlってconfigファイル的なものがなさそうなんですが、
設定とかってどこでするんでしょうか?
0485nobodyさん
2007/07/15(日) 19:30:10ID:???etherealかなんかでやり取り眺めて切り分けしろ。
0486nobodyさん
2007/07/18(水) 19:25:52ID:???アップローダでアップされたファイルなど、CGIを使ってバイナリ単位で編集したいのですが、どのように行えばよいのでしょうか?
0487nobodyさん
2007/07/18(水) 19:42:48ID:???0488nobodyさん
2007/07/18(水) 19:44:38ID:U8dvSnpWCGI::Session、Apache::Session(mod_perl2に対応していない?)
以外の方法ってありますか?
自前で実装になる?
0489nobodyさん
2007/07/18(水) 19:45:15ID:???0492nobodyさん
2007/07/18(水) 20:38:08ID:???C、C+、tcl、lisp、sh、perl、PHP、java、ruby、ほか好きな言語、スクリプトで
open か fopen でもしていじってくださいな
0494nobodyさん
2007/07/18(水) 21:10:34ID:???0495nobodyさん
2007/07/18(水) 21:21:38ID:???ワロスww
0496nobodyさん
2007/07/18(水) 21:33:02ID:???0497nobodyさん
2007/07/18(水) 22:11:24ID:???> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
0499nobodyさん
2007/07/19(木) 02:03:02ID:???>>495は、>>490が日本語云々言ってるのに「よいよ」って書いてるのにつっこんでんのに、
自演とか言ってる>>496は何だ?
>>497は質問者に>>1嫁と言っているだけだと思うのだが、>>498のつっこみは何だ?
何だ( ゚д゚)何だ(゚д゚ )何なんだ(゚д゚)???
0500nobodyさん
2007/07/19(木) 02:27:41ID:???0504nobodyさん
2007/07/19(木) 17:23:44ID:???http://pc11.2ch.net/php/dat/1180492441.dat
0505nobodyさん
2007/07/19(木) 20:27:45ID:???どのような表記になるのでしょうか?
この場合「ー」や「〜」も含めたいです。
0506nobodyさん
2007/07/19(木) 20:29:49ID:???で使うのは !~ を使ってください
0507nobodyさん
2007/07/19(木) 20:38:30ID:???if( $test !~ '^[\82\9e-\82\ef]+$' )
{
//ひらがなの場合
}
0508nobodyさん
2007/07/19(木) 20:41:15ID:???わからん
0509nobodyさん
2007/07/20(金) 01:10:35ID:???0510nobodyさん
2007/07/20(金) 10:31:22ID:???0511nobodyさん
2007/07/20(金) 17:57:06ID:???つ ttp://www.din.or.jp/~ohzaki/perl.htm#Character
EUCかSJISの場合
0513nobodyさん
2007/07/20(金) 22:12:15ID:???0514nobodyさん
2007/07/21(土) 20:05:13ID:???0515nobodyさん
2007/07/22(日) 02:05:22ID:???0516nobodyさん
2007/07/22(日) 10:54:01ID:???サーバーで実行されることを想定して
作られているCGIゲームを、自分の
windowsのパソコン上で一人で実行したいのですが、
perl+アパッチ+アクtィブパール
という構成になるのでしょうか?
アパッチは必須ですか?
0517nobodyさん
2007/07/22(日) 11:16:44ID:???0518nobodyさん
2007/07/22(日) 11:21:20ID:???0520nobodyさん
2007/07/22(日) 11:32:56ID:???0521nobodyさん
2007/07/22(日) 12:30:49ID:???特に、ImageMagickとかでそういう機能ありますか?
0522nobodyさん
2007/07/22(日) 13:28:00ID:???0523nobodyさん
2007/07/22(日) 14:12:18ID:???初心者はAN HTTPDとActive Perlでいいだろ
つーかぐぐれ
0524nobodyさん
2007/07/22(日) 14:27:23ID:???0525nobodyさん
2007/07/22(日) 15:17:51ID:???超ヤサシイ俺が。
左右上下に動かすって、ボタンを押すたびに動かす事は出来るかもな。
基本的にPerlが動くのはボタン押したりアドレス開いたりした直後だけ。
つーかCGIの入門書でも嫁。
0526nobodyさん
2007/07/22(日) 16:26:43ID:???いや、それでもいい。
フォームでボタン押してパラメタ送信、受け取ったら画像が右に少し移動してるって状態で十分。
空白文字分を入れて右にずらしたりはできるけど、上下左右に細かく描画位置を変えれる方法が知りたす。
0527nobodyさん
2007/07/22(日) 16:46:42ID:???超ヤサシイ俺が。
テーブルで囲んで上下左右にセルを用意して透明画像(幅、高さ指定して)を挿入すりゃいいんじゃね?
それか、GD使って元画像を編集するか・・・。マンドクサイな。
ってかなんでCSS+JavaScriptでやらねえのか、かなり疑問。
CGIの出力なんてHTMLなんだから、そこをDynamicHTMLにしちゃいけないって決まりはないんだし。
0528518
2007/07/22(日) 16:52:24ID:JZmpPZ9RActivePerlと別途にPerlが必要、ってのは何かおかしくないか?
と思ってたのだけど、俺が勘違いしてたかもしんない。
0529nobodyさん
2007/07/22(日) 16:56:58ID:RK22sjeKforeachを使わない方法があったと思うのですが、忘れてしまいました。
foreach(@list){$_*=2;}
以外の、foreachを使わない、全ての要素にアクセスする関数か何かあったと思うのですが・・・教えてエロイ人。お願いいたします。
0530nobodyさん
2007/07/22(日) 17:13:41ID:???0532nobodyさん
2007/07/22(日) 18:24:04ID:???CSSとJavaScriptもいいんだけど、俺の知り合いが携帯しか持ってない奴ばっかりで。
携帯じゃCSSもJavaScriptも無理だから。
つーか超ヤサシイもまいは超ヤサシイ俺という名前なのか気になた
0533nobodyさん
2007/07/22(日) 18:42:34ID:???中野一人が言うんだから間違いない。
0534nobodyさん
2007/07/22(日) 19:39:53ID:???0535nobodyさん
2007/07/22(日) 22:18:20ID:???0536nobodyさん
2007/07/23(月) 15:42:25ID:???パスワードをcryptで暗号化して、ファイルに保存しておいたものを、$CRYPTとして読み出して、
フォームから入力された$form{'pass'}と一致するかをチェックしようとしたところ、
$CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
if (crypt($form{'pass'}, $CRYPT) eq $CRYPT) {
# $CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
}
こういうのは
if (crypt($form{'pass'}, $CRYPT) eq $CRYPT) && ($CRYPT)) {
# $CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
}
0537途中で書き込んじゃったスマソ
2007/07/23(月) 15:43:52ID:???パスワードをcryptで暗号化して、ファイルに保存しておいたものを、$CRYPTとして読み出して、
フォームから入力された$form{'pass'}と一致するかをチェックしようとしたところ、
$CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
if (crypt($form{'pass'}, $CRYPT) eq $CRYPT) {
# $CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
}
こういうのは、以下のような対策でいいと思いますか?
if ((crypt($form{'pass'}, $CRYPT) eq $CRYPT) && ($CRYPT)) {
# $CRYPTが空だと、通らないはず。
}
0538nobodyさん
2007/07/23(月) 15:55:07ID:???その対策だとパスワードに「0」を設定されると問答無用でfalseになりますね。
$CRYPT eq "" のほうがいいかも?
というかそれ以前にif( crypt($form{'pass'}, $CRYPT) eq $CRYPT )で常にtrueになるのが変です。
本当にやってることはそれだけ?
0539nobodyさん
2007/07/23(月) 16:29:20ID:???cryptを通した後の暗号化された文字列$CRYPTが、一文字の"0"になるってことはあるんでしょうかね。
if (($form{'id'} eq $ID) && (crypt($form{'pass'}, $CRYPT) eq $PASS)) { }
みたいにIDも照合してます。
0540nobodyさん
2007/07/23(月) 16:29:38ID:???それともundefだったかな?
0541nobodyさん
2007/07/23(月) 16:37:49ID:???蛇足は間違えてるし本題はなんの役にも立たないしで恥ずかしいので無視してください。
0542537=539
2007/07/23(月) 16:41:51ID:???ちゃんと、値のチェックを行っていなかった自分に反省…
0543nobodyさん
2007/07/24(火) 09:20:42ID:???my %file = map { chomp; $_ } <f>;###こんな感じで一旦chompして改行取っ払って、、、
delete $file{'$blogFileName'};###こんな処理をしたあと、、
また改行をくっつけてもどしたいのですが、どうすればいいか教えていただけませんか。
0544nobodyさん
2007/07/24(火) 09:53:00ID:???0545nobodyさん
2007/07/24(火) 09:58:11ID:???ありがとうございます
言葉足らずですいません
一番最後の要素にも改行コード付けて戻したいんですが、どうすればいいでしょうか…
0546nobodyさん
2007/07/24(火) 10:26:09ID:???0547nobodyさん
2007/07/24(火) 10:30:34ID:???あと連想はやめろ
0548nobodyさん
2007/07/24(火) 11:26:52ID:???0549nobodyさん
2007/07/24(火) 11:28:33ID:???0550nobodyさん
2007/07/24(火) 12:03:01ID:???0551nobodyさん
2007/07/24(火) 18:09:32ID:???とかじゃダメ?
0552nobodyさん
2007/07/24(火) 18:56:17ID:???print f $name, "\n", $value, "\n";
}
0553nobodyさん
2007/07/24(火) 20:59:43ID:???正しくないIDやDB名を入れた場合はきちんと
DBI::errstr にそのエラー文言が入るのですが、
正しくないパスワードを入れた時は何故かそのまま通っちゃいます。
帰ってきた中身を見ても、パスを入れた時、入れない時でどちらもハッシュが入っています。
これは不可思議な事に何故か両方繋がってしまっていると見た方がいいですよね??
0555nobodyさん
2007/07/24(火) 22:06:21ID:???ありがとうございます。
セキュリティをかなりガチガチにしているところなのでちょっと考えにくいような。。。
パスワードの値を変更したらハッシュの値も微妙に変わりますがこれは仕様でしょうか?
何にも入れない時と入れた場合で±8くらい差があります。
文字数でハッシュも変わる!?
0556nobodyさん
2007/07/24(火) 22:35:34ID:???DBI->connectの復帰値はデータベースへの接続ハンドル(接続者の識別コードみたいなもの)なので、
接続毎に違う値になる事もあるし、disconnect → 再connect で同じ番号が割り当てられないとは限らない。
ってか、値自体に意味はない。(0ならエラーって意味以外は人間様が解析するべき内容じゃない。)
レン鯖でも、ポスグレがlocalhostを無条件トラストしてる事は十分考えられる。
コンソール前に座って、コンソールの管理者ログインパスワード知ってても
DBパスワード知らなきゃメンテナンス出来ないんじゃ、管理コスト高くつくからな。
その状態で、ポスグレ鯖とHTTP(CGI)鯖が同じマシンだったら、
localhost(=HTTP(CGI)鯖)は無条件トラストされてるから、ユーザー名さえあってりゃコネクトできる。
試しにテーブル作ってダミーデータぶち込んで、それを表示するプログラムを
パスワードありなし両方で動かしてみれば良いんジャマイカ?
それでパスワードなしで繋がっちゃったら鯖缶に問い合わせれば良いと思われ。
0557nobodyさん
2007/07/24(火) 22:44:50ID:???ポスグレ鯖とWeb鯖は同一PCです!
さっそく今からためしにテーブル作ってデータぶちこんで表示させてみます!
0558554=556
2007/07/24(火) 22:51:24ID:???役に立ててよかった。
漏れ、ポスグレ+アパッチの鯖缶兼CGI開発やってるから多少は分かるが、
鯖缶としてはシロウトに近いんで(テスト用2台、本番用1台しかやってない)
切り分けぐらいまでしか役に立てない。スマソ。
もし設定やらについて必要ならポスグレスレででも聞いてみてくれ。
0559nobodyさん
2007/07/24(火) 23:13:21ID:???試してみたところ、仰せの通りパス無条件設定でした。
原因が分かってすごく安心してます。
ポスグレスレの方にもこれから常駐させて頂きます!
テスト用2台と本番用1台って十分すごいですw
助かりましたありがとうございます!
0561nobodyさん
2007/07/26(木) 10:17:46ID:6zNTEP+lそれぞれがラジオボタンで○・×などを選択して、一つのページに結果を表示させたいです。
初心者なので調べても、文字の表示程度の簡単なことしかできなくて困っています。。
どなたか土台になるものを作って頂けませんか。
工程をご教授していただけるだけでもあり難いです。よろしくお願いします。
0562nobodyさん
2007/07/26(木) 11:32:11ID:???0563nobodyさん
2007/07/26(木) 11:47:35ID:???エラーメッセージ at ./test.pl line 123
とか出ますが、どこから呼ばれてエラーが出てるのか
(サブルーチン又はrequireのスタック?)わかる方法はありますか?
例えば
hoge.pl line 234 で呼ばれて
fuga.pl line 564 で呼ばれて
test.pl line 123 でエラー
…みたいな
0564nobodyさん
2007/07/26(木) 11:53:05ID:???予算を述べよ
0565nobodyさん
2007/07/26(木) 12:06:15ID:???スレ違い
http://pc11.2ch.net/test/read.cgi/php/1157787046/
0566nobodyさん
2007/07/26(木) 13:14:45ID:???__FILE__
>>563
コード:
use Carp qw[confess];
foo();
sub foo { bar() }
sub bar { baz() }
sub baz { confess "moemoe" }
実行結果:
moemoe at - line 5
main::baz() called at - line 4
main::bar() called at - line 3
main::foo() called at - line 2
参考サイト:
http://perldoc.perl.org/Carp.html
0568nobodyさん
2007/07/26(木) 20:22:43ID:???0569nobodyさん
2007/07/26(木) 20:56:44ID:Im3nlar7WWWサーバはwww-dataユーザ権限で動いているのですが,パスワードなどの認証を行った上で,
そのCGIを呼び出したユーザ個人の持っているファイルに中身を書き込みたいのです.
su などを呼び出してなんとかするという方法は思い付くのですが,なんかもっと簡単にする方法はないでしょうか?
; というか,以前どこかでそういう目的のモジュールを見掛けた気がするのですが,思い出せなくて困っているのが真相なんですけど.
>>569
作戦1.
ファイルを書き込む wrapper を作成して、setuid root する。
(この wrapper はその中で対象のユーザに setuid する。
十分注意して作成しないとセキュリティホールになる。)
CGIプログラムからはwrapperを呼び出す。
作戦2.
FTPサーバが動いていれば、入力されたIDとパスワードを使って接続する。
作戦3.
CGIプログラムでは一時ファイルを作成するまで。
定期的にroot権限で動作するプログラムで各ユーザごとにコピーする。
作戦4.
ウェブサーバとして動作するプログラムを作成し、rootで動作させる。
これも十分に注意しないと危険。
0572nobodyさん
2007/07/28(土) 00:47:16ID:AqKfoxxhしかし、これをブラウザからアクセスしてもInternal Server Errorになります。
#!C:/perl/bin/perl
$ perl -v
kentwebの掲示板は正常に動きますので、perlのインストール事態には問題ありません。
どこを手直ししたらブラウザにperlのバージョンを表示できるでしょうか?
0574nobodyさん
2007/07/28(土) 02:26:06ID:???0575nobodyさん
2007/07/28(土) 02:49:38ID:???0576nobodyさん
2007/07/28(土) 03:09:03ID:???Perlで実行すると決めたからには、
スクリプトはperlの言語に従って書かなければいけない。
print `perl -v`;
と書けば表示できると思う。
その前にちょっと訊きたいけど、コマンドプロンプトを知っているかい?
ちょっと古めかしいけど、perlと付き合うには、もってこいの奴なんだ。
知らなかったら、ぜひ、このサイトを見て欲しい。
http://cmd-pro.com/
そして、コマンドプロンプトで
perl -v[ENTER]
([ENTER]はエンターキーを表す。)
を入力すれば、バージョンを知ることができる。
どうだいイカしてるだろ?
0577nobodyさん
2007/07/28(土) 04:09:46ID:AqKfoxxhおかげさまで無事バージョンをしることができました。
PHPからはじめて、今日からPERLの勉強をはじめたばかりですが、
このスレのお世話になります。
0578nobodyさん
2007/07/28(土) 04:51:04ID:???___
/ \
/ ⌒ ⌒ ヽ _________
/ (●) (●) | /
| ::: ⌒(__人__)⌒:: | < ま、お断りしますけどね
| |r┬| i \_________
\ ー―' _/. | | |
⌒ヽ ヽノ ヽ | | |
/ ノ::::::::::::::::::l\. | | |
ヽ `ー― ⌒、ヽ |_|______|
ー――、_ヾ⌒ヽ〜== | | |
0579nobodyさん
2007/07/28(土) 16:42:17ID:bc1YYpxVFTPサーバ経由は目から鱗でした.LWPとの組合せで簡単に実現できそうですね.もう少し考えてみます.
0580nobodyさん
2007/07/28(土) 17:13:28ID:FChki3sWまた時代が変わってきたな
0581nobodyさん
2007/07/28(土) 18:50:02ID:AqKfoxxhなのでperlはじめてみました。
0582nobodyさん
2007/07/28(土) 20:18:21ID:???失礼な!プンスコ!
0583nobodyさん
2007/07/28(土) 20:51:25ID:FChki3sWPerlはドラクエみたいな感じだな。なかなか次期バージョンが出ない。
Rubyは
板違いスマソ
0584nobodyさん
2007/07/28(土) 21:06:05ID:???open FH, "count.txt";
$count = <FH>;
close FH;
open FH, "+>$ct";
print FH ++$count;
close FH;
こんな感じなのですが、2回openせずにできますか?
0585nobodyさん
2007/07/28(土) 21:23:42ID:???0586nobodyさん
2007/07/28(土) 21:38:15ID:???http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq5.html#i_still_don_t_get_locking__i_just_want_to_increment_the_number_in_the_file__how_can_i_do_this
0587nobodyさん
2007/07/28(土) 21:42:09ID:FChki3sWopen(FH, "+< $datafile");
$count = <FH>;
seek(FH, 0, 0); # ファイルポインタを先頭にセット
print FH $count++; # 書き込む
truncate(FH, tell(FH)); # ファイルサイズを書き込んだサイズにする
close(FH);
0588名無しさん@そうだ選挙に行こう
2007/07/29(日) 00:40:21ID:???0589名無しさん@そうだ選挙に行こう
2007/07/29(日) 17:41:22ID:4RCBobOYPostgresqlとPerlの組み合わせってあんまり良くないんですか?
参考書とかもあまり深く説明が無いのですが。。
今更PHPを覚えなおすのも厳しいかなと思ってます。
この辺りとかとか♪
0591名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:46:31ID:???DBIで接続して、SQL投げるだけでしょ?
SQL内容はPostgresを解説してるサイトがあるので、
そこを見ればいいんじゃないか。
0592名無しさん@そうだ選挙に行こう
2007/07/29(日) 19:28:58ID:???それSQL使いこなせてないってレベルなんじゃ?
0593名無しさん@そうだ選挙に行こう
2007/07/29(日) 19:48:26ID:???0594nobodyさん
2007/07/29(日) 21:08:12ID:???0595nobodyさん
2007/07/29(日) 21:10:01ID:???超ヤサシイ俺が。
Perl好きは重いのキライが多いから話題にのぼりにくいだけで、組み合わせが悪いとかは全くない。
で、もし藻前が重いDBがキライならMySQLを使えばいい。
今となってはPgもMySQLもそれほど変わらんと俺は思うけどね。
あと、せっかくDB使うならビジネスロジック(データの処理)はストアードプロシージャに任せて
Perlはフロントエンド(入力チェックや画面遷移など)に徹した方が、
例えば帳票用にMS-ACCESSからもデータを見たい・いじりたいって時に便利だ。
0596nobodyさん
2007/07/29(日) 21:40:07ID:???print <<tekitou;
aaaaaaaaaaa
$2chaaaaaaaaaaa
aaaaaaaaaaa
tekitou
printの中で$2chを表示させるのってどうすればいいんですか??
aaaaaaaが続くからこれだと表示されないTT
0600nobodyさん
2007/07/30(月) 04:51:28ID:???フォームに入力されたメールアドレス宛てに、sendmailで送信しているのですが、
例えば、hogehoge@yahoo.co.jpと入力しようとして、誤ってhogehoge@yahooと入力すると、
hogehoge@yahoo.sakura.ne.jpのように、レン鯖のホスト名が補完されるのは仕様なのでしょうか。(レン鯖はさくらです。)
0601nobodyさん
2007/07/30(月) 04:55:48ID:???0602nobodyさん
2007/07/30(月) 09:53:03ID:???0603nobodyさん
2007/07/30(月) 16:13:02ID:9vd3BgBNClass::DBI で Postgres にアクセスしているのですが、
任意のデータの "stat" というカラムのデータを書き換えるために
$self->stat("now()::text || ',$stat'");
としたところ、書き換え後のデータ内容は
now()::text || ',00000001'
となってしまいました。
2007-07-30 16:09:47+09,00000001
↑こうしたいのですが、どうすればいいでしょうか?
SQL の UPDATE文でないとだめですか?
0604nobodyさん
2007/07/31(火) 11:45:26ID:???特に理由があるならSQL文発行すればいいんじゃないの
0605nobodyさん
2007/07/31(火) 15:58:20ID:???now()::text.','.$stat
0606603
2007/07/31(火) 17:21:44ID:???>604
1行で書ければラクかなと思ったのですが・・・
Perl の localtime で文字列 $new_stat を生成してから、
$self->_stat($new_stat);
とすることにしました。
>605
syntax error って怒られました。
0607nobodyさん
2007/07/31(火) 17:40:25ID:???$self->stat(now()::text || $stat);
0608nobodyさん
2007/07/31(火) 18:19:29ID:???$self->sql_stat(do{ref($self)->set_sql('stat',q{UPDATE __TABLE__ SET stat = now()::text||%s});",$stat"})->execute;
0609nobodyさん
2007/08/01(水) 11:03:14ID:cHuXo2mz/home/mydirectory/
Bサーバ
/var/saitama.txt
Bサーバの/var/saitama.txtを
Aサーバの/home/mydirectory/以下にコピーした後に
/var/saitama.txtを削除する
と言う動作を1つのスクリプトを作りたいと思います。
サーバ間のファイルの転送はSFTPです。
どのようにしたらよいでしょか?
perlのバージョンは5.8 RedHatです。
0610nobodyさん
2007/08/01(水) 11:07:27ID:???>>1
> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
>
> 最低でも1と3が無いと誰も答えられないよ。
1はわかったので、2と3を書いてくれ
0611nobodyさん
2007/08/01(水) 11:17:25ID:???0612nobodyさん
2007/08/01(水) 17:34:49ID:???ftpだけかと思ってた。
0613nobodyさん
2007/08/01(水) 21:53:07ID:EB3VEkPE一応PostgresqlとDBIモジュールをインストールし、localhostでテストを行ってます。
sampleというDBを作成してperlから以下のように接続しようとしていますが、
うまく行きません。
use DBI;
$dbh = DBI->connect("dbi:Pg:dbname=sample");
エラーログをみると、
install_driver(Pg) failed: Can't locate DBD/Pg.pm in @INC (@INC contains: C:/usr/local/lib C:/usr/local/site/lib .) at (eval 7) line 3.
Perhaps the DBD::Pg perl module hasn't been fully installed,
or perhaps the capitalisation of 'Pg' isn't right.
Available drivers: DBM, ExampleP, File, Gofer, Proxy, Sponge, mysql.
at C:/Apache2/htdocs/testdb.cgi line 24
となっています。
これって、DBIモジュールのインストールがうまく行っていないのでしょうか?
ちなみにDBIモジュールはhttp://www.jisaba.net/xp/mt3/05.htmから行いました。
なんか質問自体も正しいのか分からない状態ですが、よろしくお願いします。
0614nobodyさん
2007/08/01(水) 22:34:28ID:???エラーメッセージよく読め。
Perhaps the DBD::Pg perl module hasn't been fully installed,
と親切に指摘してくれてるじゃないか。
0615nobodyさん
2007/08/02(木) 00:15:05ID:???0616nobodyさん
2007/08/02(木) 01:27:36ID:???0617nobodyさん
2007/08/02(木) 04:14:18ID:???0618nobodyさん
2007/08/02(木) 07:34:23ID:???夏夏夏夏
0619nobodyさん
2007/08/02(木) 10:13:28ID:???0620nobodyさん
2007/08/02(木) 13:13:49ID:???愛愛愛愛
0621nobodyさん
2007/08/02(木) 13:14:46ID:???0622nobodyさん
2007/08/02(木) 13:24:37ID:???0623nobodyさん
2007/08/02(木) 13:29:13ID:???0624nobodyさん
2007/08/03(金) 01:21:20ID:HqqiKgboprint "<br><br><br><br>\n";
print "<form>\n";
print "<input type=\"button\" value=\"戻る\" onClick=\"javascript:history.back()\">\n";
print "</form>\n;
どこが間違っているのかご指摘お願いできないでしょうか?
よろしくお願いします。
0625nobodyさん
2007/08/03(金) 01:30:15ID:???"" で囲まれた中で " を使う場合は \" のようにエスケープしてね♪
0626nobodyさん
2007/08/03(金) 01:34:14ID:???バックスラッシュが全角なのはわざと置き換えていて本物はちゃんとしてる
んだろうけど、どうみても最後の行の「"」が閉じていない
0627624
2007/08/03(金) 01:34:55ID:HqqiKgboありがとうございます。
上記はエスケープしきれてないのでしょうか?
0628624
2007/08/03(金) 01:37:08ID:HqqiKgboおはずかしい…
できました。ありがとうございました。
0629nobodyさん
2007/08/03(金) 01:37:12ID:???print '<br><br><br><br>'."\n";
みたくするか、ヒアドキュメントを使ってみては?
0630nobodyさん
2007/08/03(金) 01:37:25ID:???その人はたぶん \ を勝手に\に変換してしまうあのブラウザを使ってるんでしょう。
>>624
> print "</form>\n;
ここ。何かが足りない。
「500エラーが出ます」じゃなくて、せめて use CGI::Carp qw(fatalsToBrowser); してほしい。
もっと言えばコマンドラインでチェックして syntax OK. が出てから CGI として動かしてほしい。
0631630
2007/08/03(金) 01:38:06ID:???0632629
2007/08/03(金) 01:45:51ID:???氏ねって書かれるんだろうけど、ローカルでテストできる環境を整えたり、
telnetでperl -cできる環境を持てる初心者って、あまりいなそうな気がするけどね。
この人だって、エスケープしたり、"を閉じ忘れるくらいの初心者なわけだし。
俺は未だにローカルでテストできる環境を持ってなかったりするし、排他処理にflockを使ってたりするから、
windowsで書いてて、なかなか満足するテスト環境にも恵まれてない。
今はようやくtelnetが使える外部鯖が手に入ったから、コマンドラインでチェックできるけど、
何がいいたいかというと、文法をチェックできる環境を整えるのって、cgiをいじったりするより、
案外難しいんだってこと。
0633nobodyさん
2007/08/03(金) 01:57:50ID:???えと、いちおうその辺も想定しまくったうえで
せめて use CGI::Carp qw(fatalsToBrowser); でも入れてね
「500エラーです」では何もわからないけど、まともなエラーメッセージ出るようになるよ
という気持ちで書いたわけですよ。
「氏ね」と思う人も当然いるだろうし、「環境構築とかわかんねーよ」な人もいるんだろうけど
それについてあーだこーだ言うつもりはないんです。少なくとも「氏ね」とは思ってません。
0634629
2007/08/03(金) 02:06:36ID:???いや、別に俺もそんなに反論的な意見でもなかったです^^
use CGI::Carp qw(fatalsToBrowser);
は俺も使ってますが、結構ダメなこともあるんで、正直微妙ですw
0635nobodyさん
2007/08/03(金) 02:11:08ID:???勉強の為に
> use CGI::Carp qw(fatalsToBrowser);
のダメなところを教えていただけませんか?
0636nobodyさん
2007/08/03(金) 02:15:29ID:???俺も初心者だから、よくわかんないけど、
> use CGI::Carp qw(fatalsToBrowser);
って書いてても、500が出るときは出るってこと。
perl -wcより、出てくるメッセージは親切だと思う。使って損はない。
0638nobodyさん
2007/08/03(金) 08:20:11ID:???できもしないこといわないでくださいw
0639nobodyさん
2007/08/03(金) 08:49:48ID:???流行ってんの?
http://pc11.2ch.net/test/read.cgi/tech/1150900544/78n
http://pc11.2ch.net/test/read.cgi/tech/1181500187/757n
0640nobodyさん
2007/08/03(金) 08:57:50ID:???0641nobodyさん
2007/08/03(金) 09:47:07ID:???俺のバックには○○がついてるんだぜ!みたいな…
ねらー気取ってんじゃねぇよカス厨
自分で何もできないくせに虚勢張ってんじゃねぇよばーか^^
0642nobodyさん
2007/08/03(金) 09:54:48ID:???> use CGI::Carp qw(fatalsToBrowser);
を入れて500が出るなんて、シェバング間違えてるぐらいじゃないか。
0643nobodyさん
2007/08/03(金) 10:26:00ID:???2ちゃんねら総力を挙げて。
0644nobodyさん
2007/08/03(金) 11:22:32ID:???0646nobodyさん
2007/08/03(金) 15:05:53ID:???0647nobodyさん
2007/08/03(金) 16:08:03ID:???0648nobodyさん
2007/08/03(金) 17:19:15ID:???どんなけ長い用語だよ
0649nobodyさん
2007/08/03(金) 22:35:25ID:oY004xfPさらにplがあるところからDBにアクセスする
ということをしたいのですが、うまくいきません。
手法としては、plから相対でDBにアクセスするか、
plの絶対アドレスからアクセスしたいと思っているのですが、
どのようにすれば可能でしょうか?
0650nobodyさん
2007/08/03(金) 22:53:25ID:???0651nobodyさん
2007/08/03(金) 22:56:09ID:???おまえは文章もまともに書けないのか?
0652nobodyさん
2007/08/03(金) 23:21:30ID:oY004xfPライブラリ自身の絶対パスを取得する方法はありませんか?
0653nobodyさん
2007/08/04(土) 00:01:01ID:???0654nobodyさん
2007/08/04(土) 00:21:38ID:???use File::Spec;
use Cwd;
print File::Spec->catfile(getcwd, __FILE__);
0655nobodyさん
2007/08/04(土) 00:33:18ID:TU5rHtE+ありがとうございます。問題解決しました
0656nobodyさん
2007/08/04(土) 16:32:08ID:???bbbb
aaaa ←ここをggggにしたい
dddd
eeee
cccc
aaaa
ffff
って感じで改行(\n)で区切られたデータファイルがあって、
そこに新データggggを書き込みたいのですが、
その際にaaaaが存在すれば一番最初にあらわれるaaaaのところに
ggggを上書きしたいんですが、どうすればよいでしょうか。
・aaaaが存在しなければ通常通りにデータ末尾にggggを
・二番目以降のaaaaはそのまま置き換えない
を実現したいのです。
下だと失敗してしまいます。
よい方法をお願いできませんでしょうか。
open(f,"+<hoge.dat");
flock(f,2);
$data = <f>;
if($data =~ m/aaaa/){$data =~ s/aaaa/gggg/;}
else{$data .= "gggg\n";}
seek(f,0,0);
truncate(f,0);
print f $data;
flock(f,8);
close(f);
exit;
0657nobodyさん
2007/08/04(土) 17:05:20ID:???$hoge_of{aaaa} == 1のとき $data = 'gggg'
$hoge_of{aaaa} != 1のとき $data .='gggg'
0658nobodyさん
2007/08/04(土) 17:13:18ID:???で終わり
0659nobodyさん
2007/08/04(土) 17:16:52ID:+PxwZdc+flock(FILE, 2);
my @dat = <FILE>;
my $hit;
foreach(@dat){
if(/^aaaa$/){
$_ = 'gggg';
$hit = 1;
last;
}
}
push @dat, "gggg\n" if !$hit;
seek(FILE, 0, 0);
print FILE @dat;
truncate(FILE, tell(FILE));
close(FILE);
0660nobodyさん
2007/08/04(土) 17:30:25ID:RQKCxjR+(Windows使用)
ttp://www.activestate.com/downloads/
0661nobodyさん
2007/08/04(土) 17:36:26ID:+PxwZdc+http://www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca
0662nobodyさん
2007/08/04(土) 17:43:21ID:RQKCxjR+どれを選択すればいいんですか?
Windows (x86)
AS package
MSI
Windows 64-bit (x64 AMD64)
AS package
MSI
0663nobodyさん
2007/08/04(土) 18:25:57ID:???http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.msi
0664nobodyさん
2007/08/04(土) 18:30:12ID:???64bit は OS が 64bit である場合のみ
既に開発してて過去の古いソースが有りソレを何が何でも生かしたいのであれば 5.6 系がいいかもしれないけど
そうでなければ Perl は Ver 5.8 系をオススメ
0666nobodyさん
2007/08/04(土) 19:53:57ID:???build815もいいけど、816はバイナリ互換がないから死ぬ。
0669nobodyさん
2007/08/05(日) 05:40:21ID:ZbLLWuy9jcode.plって必ずつかわなければいけないのでしょうか?
文字コードはeucで作る予定です。
0671nobodyさん
2007/08/05(日) 09:31:45ID:???0672nobodyさん
2007/08/05(日) 10:59:54ID:???# 新しいJcodeはEncodeのラッパーだったっけ?
0673nobodyさん
2007/08/05(日) 11:07:42ID:???です
Encode.pm が全部やってるはず
0675nobodyさん
2007/08/06(月) 17:56:09ID:???入荷毎の履歴から古いものから順番に在庫を減らす工程がわかりません。
$num='30';
---log
1<>29<>
2<>4<>
3<>16<>
---
というログをwhileで読み込んで行き、
$readline_num-$num がマイナスになるようなら
差分数値を次のreadline_numに…
という流れだと思うのですが
どうにもこうにも形にできません。
結果的には最初のlogが
---log
1<>0<>
2<>3<>
3<>16<>
---
という風になり、最終的に全部が0になるようならエラーを返したいのです。
アドバイスよろしくお願いいたしますm(_ _)m
0676nobodyさん
2007/08/06(月) 18:03:22ID:???0677nobodyさん
2007/08/06(月) 18:06:59ID:???テキスト系DB作ってる人って、区切り文字は何にしてる?
俺はタブなんだけど、<>って良く見るけど、どういう意味があるんだろう。
データに<>を含まないからっていうのは、もちろんだけど。
0679nobodyさん
2007/08/06(月) 18:32:44ID:???全部排除する前提だから<>という入力は
100%ありえないという前提で<>にしている、と思う
0680nobodyさん
2007/08/06(月) 18:37:53ID:???フィールドが数十個あって、レコードが1000以上とかあると、バカに出来ないような気がする。
まあ、大量のデータ扱うなら、DB使えっていうことでFAなんだろうけどw
0681nobodyさん
2007/08/06(月) 18:43:51ID:???DB使うかといったあたりで場合に応じて使い分けだな。独自形式でテキストに保存って
いうのは基本的にやらない。
0683nobodyさん
2007/08/06(月) 18:59:48ID:???whileでループ作って1行ずつマイナス処理してマイナスなら数値を0に置き換えて次の行、
プラスならその数値に置き換えてループ脱出して終了
ファイル(または配列)の終端に達したら、エラー送出してループ終了
でいいんじゃないの?
とりあえずなんかコード書いてみれば?
0685nobodyさん
2007/08/07(火) 02:30:26ID:???0686669
2007/08/07(火) 02:43:38ID:???たくさん回答頂いてしまい恐縮です。
Encode.pmを使ってみることにします。
ありがとうございました。
0687nobodyさん
2007/08/07(火) 09:10:50ID:???0688nobodyさん
2007/08/07(火) 10:41:18ID:???日本語入力がある場合は結局jcode.plが最適だったのでは。
0689nobodyさん
2007/08/07(火) 10:50:16ID:???0690nobodyさん
2007/08/08(水) 08:23:14ID:???何をもって「完全」かは知らんけど、Encode::JP::H2Z のような実装は
用意されている。jcode.pl は UTF-8 扱えない時点で選択肢外なので、
1. Encode + 自前の補助コード
2. Jcode Ver 0.88
3. Unicode::Japanese
の優先順位で使ってるかな。
0691nobodyさん
2007/08/08(水) 10:53:06ID:???みなさんどうしてますか?
0692nobodyさん
2007/08/08(水) 21:52:51ID:???cp932にしたら大分マシになると思う。
0693nobodyさん
2007/08/08(水) 23:28:38ID:???シフトJIS使うときは、
2バイト文字の後半部分がC5のもの、
たとえば表とかつかうときは
表¥
ってしないと文字化けするから!
とかって書いてあって、はぁ?とおもった
これってperlでなくてもwebアプリつくるひとは
全員必須の知識なの?
0694nobodyさん
2007/08/08(水) 23:34:32ID:???0695nobodyさん
2007/08/09(木) 00:51:15ID:???0696nobodyさん
2007/08/09(木) 00:55:40ID:???0697nobodyさん
2007/08/09(木) 01:01:57ID:???0698nobodyさん
2007/08/09(木) 01:22:31ID:???0699nobodyさん
2007/08/09(木) 01:59:23ID:???0700nobodyさん
2007/08/09(木) 03:02:11ID:???設置サーバや運用者の技術レベルによってはありかもね。
「文字コードって何?」ってレベルだと Shift_JIS で問題が
出ないよう作った方が後々面倒が無くていいけど。
0701nobodyさん
2007/08/09(木) 08:19:14ID:???表示される文字が変更されない
my $msg="abcdefg ".$DT->{unkoname}."あいうえお".$count."かきくけこ";
このあいうえおの部分を
test
に変更して
my $msg="abcdefg ".$DT->{unkoname}."test".$count."かきくけこ";
にしたのに、表示されるのはあいかわらずあいうえおのまま。なんで?
0702nobodyさん
2007/08/09(木) 09:15:01ID:4ANcM0VHどのようにしたらいいのでしょうか?
0704nobodyさん
2007/08/09(木) 09:47:24ID:???スクリプト更新したからデーターが壊れたかも
「スクリプトをいじるときには
必ず管理モードにしてください、そうでないと
最悪、データーが壊れます」
って説明書読んだら書いてあった
0706nobodyさん
2007/08/09(木) 11:14:03ID:???0707nobodyさん
2007/08/09(木) 11:17:39ID:???0709nobodyさん
2007/08/09(木) 12:31:51ID:UyK8ofDd0710nobodyさん
2007/08/09(木) 13:28:54ID:???0711nobodyさん
2007/08/09(木) 13:57:44ID:???インストール先を別ディレクトリにして、環境変数PATHの設定や
PPMの設定ファイルをちょこちょこ変更するだけで普通に使えている。
0712nobodyさん
2007/08/09(木) 18:13:34ID:???0713nobodyさん
2007/08/09(木) 19:18:02ID:???0714nobodyさん
2007/08/09(木) 20:28:15ID:qod+hj3tくれるものなのでしょうか。
ご教示いただけますと幸いです。
0715nobodyさん
2007/08/09(木) 20:33:12ID:???0716nobodyさん
2007/08/09(木) 20:33:24ID:???0717nobodyさん
2007/08/09(木) 20:42:53ID:???今からでは試すのにちと間に合わなかったので(あさって納品)
質問させていただきました。
>>716
なるほど。
危なそうなので別の方式をとります。
有難うございました。
0718nobodyさん
2007/08/09(木) 20:44:14ID:???タブ区切りにしている。
タブは空白文字に置換しても差し支えない場合が多いことと、CSV程ではないけどExcelで読み込みやすいため。
>>680
せこいこと言うと、Perlなんて遅いから全部アセンブラで書くべき。:-p
>>702
Cygwin入れて、片方は
/usr/local/perl5.6
みたいなディレクトリにインストールする作戦も。
エスパーになって考えてみた。(在庫減らすところだけ。)
@zaiko = ({id => 1, num => 29}, {id => 2, num => 4}, {id => 3, num => 16})
という配列に読み込んだと想定。
my $i = 0;
while($herasu and $i < @zaiko and $zaiko[-1]{num}) {
my $s = min($zaiko[$i]{num}, $herasu);
$zaiko[$i]{num} -= $s;
$herasu -= $s;
$i++;
}
0723nobodyさん
2007/08/10(金) 11:00:12ID:???実物の在庫管理をどうするか、という問題の方が大きいような希ガス。perlの話と離れてスマソ
0724nobodyさん
2007/08/10(金) 12:55:11ID:???そうですね、排他処理は色んな方のスクリプトを参考にしていきます。
どの段階、実在庫管理、というのは永遠の課題です。アドバイス感謝です。
0725nobodyさん
2007/08/10(金) 18:54:38ID:???廃業するべき。
0726nobodyさん
2007/08/10(金) 19:01:05ID:???0727nobodyさん
2007/08/10(金) 23:52:43ID:???発想を逆転させるんだ。
0728nobodyさん
2007/08/11(土) 03:10:13ID:???0729nobodyさん
2007/08/12(日) 12:56:10ID:???0730nobodyさん
2007/08/12(日) 21:21:39ID:sl0Dt6RW$byte = length($char)とすると当然ながら答えはどれも1になります。
現在は
utf8::encode($char);
$byte = length($char);
urf8::decode($char);
として凌いでいますが、もう少しスマートなというか、
違う書き方できますか?
0731nobodyさん
2007/08/12(日) 21:38:11ID:???0732nobodyさん
2007/08/12(日) 21:41:18ID:???0733730
2007/08/12(日) 22:01:23ID:sl0Dt6RWありがとうございます!
そんなuse文があったとは知りませんでした。
パッケージ内のサブルーチンでの扱いでしたので、
サブルーチン(ブロック)の先頭にuseを置いてみましたm(_ _)m
0734nobodyさん
2007/08/14(火) 17:47:49ID:???正規表現で
($prm !~ /(?:\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55])/)
と書くことによって一応ひらがなを識別できるようにはなったんですが、
他の文字も混ざってしまうと判定ができなくなります。
例えば「aaaaaaあaaaa」のように一文字だけひらがなが入っていた場合エラーにする事ができないのです。
全て英字なら問題はないのですが。。。
ひらがなのみを受け付けるようにするにはここからどう改造すればよろしいのでしょう?
0735nobodyさん
2007/08/14(火) 17:56:04ID:???で
0737nobodyさん
2007/08/14(火) 18:38:42ID:???0738nobodyさん
2007/08/14(火) 20:44:26ID:5P93CXGl#!/usr/bin/perl -w
use strict;
my $a="Hello, world.";
my $s=substr($a, 0, 5, "Goodbye");
print $s;
を実行したところ、
Hello
と出力されました。
『初めてのPerl』第3版254ページによると、
Goodbye,world
になるはずなのですが、そうなりませんでした。
Perl 5.8.8を使っていますが、これはどういうわけなのでしょうか?
部分文字列を指定した文字列で置換して代入することをやるにはどうすればいいのでしょう?
宜しくお願い致します。
0739nobodyさん
2007/08/14(火) 20:51:37ID:???戻りは置換された文字列
$a を出力してください
ついでに書くと $a と $b は使用しないように
0740nobodyさん
2007/08/14(火) 20:56:14ID:5P93CXGlありがとうございます。
教えてくださったようにやると、うまくいきました。
$a,$bの件、気をつけます。
ありがとうございました。
0741nobodyさん
2007/08/16(木) 01:34:19ID:???実体参照を出力するんだけど
&アンパサンドと
;セミコロンを含んじゃうので、
この場合、”ダブルクオーテーションで囲むのと、
’シングルクオーテーションで囲むのと、
どちらがより適切ですか?
ページの閲覧者はアメリカ人で
文字コードのデフォルト設定はたぶんUS-asciiとかで、
ソースファイル自体の文字コードはシフトJISです。
0742nobodyさん
2007/08/16(木) 01:38:20ID:???;セミコロンだったらどっちでもいい。
個人的には変数展開しない’シングルクオーテーションの方が軽くていいかなと思うけど、
$hoge = 'ぬるぽ';
print 'ぬるぽ'.$hoge;
print "ぬるぽ$hoge";
ってどっちが軽いんだろう。
0743nobodyさん
2007/08/16(木) 01:52:58ID:???perlが、
「ああ、、、ここでこの行は終わりなんだな(ニヤリ」
とかって解釈して、勝手に行が終わるかと思ったんですよ。
0744nobodyさん
2007/08/16(木) 01:56:19ID:???エスケープしたりとか、
&アンパサンド自体を実体参照にしたりとか、
なにか特別な処理をしなくてもいいんですか?
0745nobodyさん
2007/08/16(木) 05:28:27ID:???0746nobodyさん
2007/08/16(木) 09:58:58ID:???>>741-744 は
Perlについての質問箱 32箱目
http://pc11.2ch.net/test/read.cgi/tech/1186995713/
プログラム板の上記のスレで暴れてる
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
クンなので、ここの住人の皆さんも華麗にスルーする事をオススメします。
もしくは、このスレの低レベルさを証明する為答えてやっても結構です。
何卒、ご協力宜しくお願いします。
0748nobodyさん
2007/08/16(木) 11:58:57ID:???0749nobodyさん
2007/08/16(木) 21:38:37ID:IWfAsW1Mprint "Content-Type: text/html\n\n";
と出力してしまったHTTPヘッダを次の行で削除することは
できないものでしょうか。
もし方法があればどうかご教示ください。
0750nobodyさん
2007/08/16(木) 21:46:32ID:???0753nobodyさん
2007/08/16(木) 21:57:42ID:???ある奴は俺だけじゃないはずw
0754nobodyさん
2007/08/16(木) 22:42:00ID:???事情は、>>753のとおりです。
一番先頭に出力させてしまい、500行目くらいでlocation使わなけれ
ばならなくなってしまい、どうにかできないものかと思った次第です。
できないとわかっただけで収穫です。
感謝です。
0755nobodyさん
2007/08/16(木) 22:52:41ID:???あるあrw
>>754
そういう場合は先に条件判定させて、真偽によってサブルーチン使ったりして別々にすればおkかと。
0756nobodyさん
2007/08/17(金) 00:55:10ID:NJG0WVbrperlからpostgresqlを利用したいと思いpostgresqlを調べ始め、なんとかローカル上
ではサンプルDBとか作成できたんですが、DBって1つのファイルじゃないんですか?
perlのcgiファイルみたいにサーバへアップロードするにはどうすればいいんでしょうか?
それと、ローカル上で作成したDBにperlから接続しようとしてるのですが、
Perhaps the DBD::Pg perl module hasn't been fully installed
というエラーが出てしまいます。
DBIモジュールはppmからインストールしいて、再インストールしようとしても
Package 'DBI' is already installed となっています。
DBIモジュール以外に何か足りないのでしょうか?
0757nobodyさん
2007/08/17(金) 01:14:19ID:???0758nobodyさん
2007/08/17(金) 02:05:15ID:???ひとつのファイルとしてDBを組んで、
アップロードしたいならSQLiteでも使いなさい。
DBIだけでなくDBDのインストールも必須。
0759nobodyさん
2007/08/17(金) 02:15:56ID:???こっちの方がスマートじゃない? そうでもないかな?
(1) 変数 $output を用意する
(2) ソースの途中でprintは使わず、代わりに $output へ文字列を追加するようにする
(3) 最後に$outputを出力
変数に代入するだけなら、幾らでもやり直しができる。
0760nobodyさん
2007/08/17(金) 02:38:15ID:???0761nobodyさん
2007/08/17(金) 10:52:09ID:???pg_dumpして、ファイルをアップロードが一番安全だろうけど、権限が必要。
専用鯖なら問題なしだけどね。
DBD::Pgは、theoryx5をリポジトリに追加で行けると思う。
追加方法については、ぐぐってくれ。
0762nobodyさん
2007/08/17(金) 12:05:57ID:kNB1PTWdhttp://aaa.com/
というURLに
http://aaa.com/aaa/aaa.cgi
とくっ付けたいのです。
$url ="http://aaa.com/";
$url = $url."aaa/aaa.cgi";
とやっても
2行に表示されてしまいます。
http://aaa.com/
aaa/aaa.cgi
こんな感じになってどうすればいいのやら・・・
0763nobodyさん
2007/08/17(金) 12:17:14ID:???$url ="http://aaa.com/";
の一番最後に改行コードが混じってないか調べる。
0765nobodyさん
2007/08/17(金) 19:23:59ID:5ZhoqBhgピュアパールのモジュールを使いたいのですがどのようにしたら良いでしょうか?
0766765
2007/08/17(金) 19:30:54ID:???0767nobodyさん
2007/08/17(金) 19:43:10ID:???use lib qw(./path);
で
そんなの糞環境にしかならないですし use が使えないわけ無いのでは?
0768nobodyさん
2007/08/17(金) 20:07:18ID:???って設定のサーバーが結構あるよ。
0769nobodyさん
2007/08/17(金) 20:44:42ID:???Perlインストール時にuse使えないようにコンパイルした可能性がないとも言えない
0770nobodyさん
2007/08/17(金) 20:51:26ID:???0771nobodyさん
2007/08/17(金) 22:20:54ID:???0772nobodyさん
2007/08/18(土) 00:34:04ID:???0773nobodyさん
2007/08/18(土) 12:44:15ID:???0774nobodyさん
2007/08/18(土) 12:47:38ID:???・専鯖、ハウジング系
・自宅鯖(Windows系)
・自宅鯖(UNIX系)
・レンタル鯖(月5000円以上)
・レンタル鯖(月1000円以上) ○
・レンタル鯖(月500円以上)
・レンタル鯖(月500円未満)
・無料のレンタル鯖
・プロバイダーの無料スペース
0775nobodyさん
2007/08/18(土) 12:53:27ID:???0776nobodyさん
2007/08/18(土) 14:09:22ID:???サーバー管理は出来ない知り合いに管理するの約束でただで使わせてもらってる
知り合いはつてで小さい会社のホームページ(静的なページのみ)とメール預かって金作ってるみたい
0777nobodyさん
2007/08/18(土) 17:19:19ID:???・レンタル鯖(月1000円以上)
この2つかなー。片方は仕事だが。
0778nobodyさん
2007/08/19(日) 15:53:31ID:t6VsRWnY@ABCD等の数字を対応出来なくて困ってます。
utf8のままで解決出来るんでしょうか?
0779nobodyさん
2007/08/19(日) 16:42:09ID:???0780nobodyさん
2007/08/19(日) 17:04:05ID:pOFLTECe今でもフォームからの受け取りは CGI.pm 等がデファクトスタンダードでしょうか?
cgi-lib.pl とか古い知識しかないので、CPANなどで最新の方法など御教示ください。
0781nobodyさん
2007/08/19(日) 17:44:44ID:???0785nobodyさん
2007/08/20(月) 11:49:55ID:O2ADjgGzSearch::Namazuを使用して得たNamazuの検索結果(オブジェクトの配列)をダンプしました。
ですが、このダンプしたデータの呼び戻し方がどうしてもわからないです・・。
検索結果(@result)内のデータは例えば以下のとおりです。
$VAR1 = bless( { 'name' => 'hoge', 'score' => '82' }, 'Search::Namazu::Result' );
$VAR2 = ・・・
次のようにすると上記したような文字列としては読み込めますが、できたのはそこまで。
for (@result) { print $_, "\n"; } # => $VAR1 = ・・・
ダンプせず直接書き出す場合は$_->nameでhogeが出力されるんですが・・・
0786785
2007/08/20(月) 11:52:52ID:O2ADjgGz×文字列としては読み込めますが
○文字列としては書き出せますが
0787765
2007/08/20(月) 18:34:36ID:U/5QePTjありがとうございます。また、すみません。
useが使えないというのは勘違いで、@INCに何も入っていないだけでした;
けれど、BEGIN { unshift(@INC, 'hogehoge'); }してもコンパイル時の
モジュール見つかりませんエラーに表示される
@INCの中にはhogehogeは入りませんでした。
スクリプトの中で@INCを(printなどして)参照すると確かにhogehogeは@INCに入っているのですが。。
どうにかしてモジュールを使う方法は無いでしょうか?
0788785
2007/08/21(火) 10:37:32ID:???案外ちょっとしたコーディングのミスだったりしない?
例えばModule名と中のPackage名が違ってて、use Package名にしてるとか・・・
あとは指定したパスが地味に間違ってるとか。
use FindBin qw($Bin);
use lib "$Bin";
とすると@INCの先頭にカレントディレクトリのパスが入るから確認してみては。
例えばuse lib "$Bin/../hogehoge"とすると、相対パスでひとつ上にあるhogehogeが指定される。
>>785で質問させてもらったんですが、解決しました。
Storableでファイルへの保存、呼び出しをしてたのですが、
表示する際にData::Dumperで整形してたのです。(バカな話だけど)
それで当然、もとのオブジェクトとしては扱えなくて。
Storableで戻した配列に対してそのままアクセスしたら復元できましたm(_ _)m
ファイルから呼び出したオブジェクトの配列リファレンス($result)に対して
for my $i (0..$#{$$result}) { printf "%s : %s\n", $$result[$i]->name, $$result[$i]->score; }
みたいな感じで。
というか質問自体がわかりにくかったですね。スマソ
0789nobodyさん
2007/08/22(水) 02:37:38ID:pj3xRAc/どうすればいいのでしょうか?
0791789
2007/08/22(水) 02:44:24ID:???次のページに瞬時でリンクした時、次のページに
データを渡したいのですがどうすればいいのでしょうか。
0793nobodyさん
2007/08/22(水) 10:48:13ID:???0794nobodyさん
2007/08/22(水) 10:50:22ID:???0796nobodyさん
2007/08/22(水) 12:16:22ID:???>>791の2行目の事じゃね?
>>791
「次のページ」が2つ出てきているが、それらは何なのか。またリンク元から見てどこに位置するのか。
「瞬時でリンク」とは何か。
これがわからないと答えようが無い。
0797789
2007/08/22(水) 12:19:59ID:???レスありがとうございました
0798nobodyさん
2007/08/22(水) 22:14:48ID:sWD+Yq++日本語のバイト数拾うのはどうすると良い?
0799nobodyさん
2007/08/22(水) 23:19:26ID:???お望みのコードにencodeしてlengthとるのが正攻法。
perlの内部表現(utf8)のバイト数でよければbytes::length
0800nobodyさん
2007/08/23(木) 00:35:43ID:???0801nobodyさん
2007/08/23(木) 07:54:48ID:uXF+dyLCなるほど。ありがとうございました。
0802nobodyさん
2007/08/23(木) 18:57:09ID:uXF+dyLCうほ!
0803nobodyさん
2007/08/24(金) 18:26:53ID:rvbxrzrr移動平均原価法で原価計算をしたいと思ってます
@COST=(
'2000','3','6000',
'3000','4','12000',
'1000','5','5000',
'4000','3','12000'
);
左から単価、個数、合計という@COSTの配列を作りました
ここからがわかりません。。foreachでまわしてはみたものの、
最初は2行で区切り計算をしてその結果を次の行と計算・・・という流れが作れません
どなたかヒントくださいますでしょうかm(_ _)m
0805nobodyさん
2007/08/24(金) 18:47:18ID:???上の例から行くと
1| (6000+12000)/7=2572
2| 2572*7=18004
3| 1000*5=5000
4| (18004+5000)/12=1917
5| 1917*12=23004
6| 4000*3=12000
7| (23004+12000)/15=2334
という順番に計算していき結果的に2334と出したい状況です。
0806nobodyさん
2007/08/24(金) 19:04:13ID:???0807nobodyさん
2007/08/24(金) 19:09:19ID:???> せめてもっとソースを示して、こうやりたいと書くべき。
坊やはつまんないKENT CGIでも改造してオレすごいぜーとか思いつつ引きこもっておけばいいじゃん。www
人様に迷惑かけんなよ。wwww
0808nobodyさん
2007/08/24(金) 19:18:28ID:???(2000*3+3000*4+1000*5+4000*3)/(3+4+5+3)
わかりやすいような気がするのだが。
各ステップで小数点以下を丸めてわざと誤差を余計に
蓄積させるのが肝??
0809nobodyさん
2007/08/24(金) 19:20:09ID:???use strict;
my @COST = (
['2000','3','6000'],
['3000','4','12000'],
['1000','5','5000'],
['4000','3','12000'],
);
use Data::Dumper;
my ($avarage_cost, $total_pieces, $total_price);
for my $param (@COST) {
my ($unit_cost, $pieces, $price) = @$param;
$total_pieces += $pieces;
$total_price += $price;
$avarage_cost = $total_price / $total_pieces;
print "$avarage_cost\n";
}
0811nobodyさん
2007/08/24(金) 19:26:14ID:???use strict;
use POSIX;
my @COST = (
['2000','3','6000'],
['3000','4','12000'],
['1000','5','5000'],
['4000','3','12000'],
);
my ($avarage_cost, $total_pieces, $total_price);
for my $param (@COST) {
my ($unit_cost, $pieces, $price) = @$param;
$total_pieces += $pieces;
$total_price += $price;
$avarage_cost = $total_price / $total_pieces;
$avarage_cost = ceil($avarage_cost);
$total_price = $total_pieces * $avarage_cost;
print "$avarage_cost\n";
}
0812nobodyさん
2007/08/24(金) 19:35:19ID:???でぐぐれ
0814nobodyさん
2007/08/24(金) 19:44:36ID:???0815nobodyさん
2007/08/24(金) 19:52:53ID:???0816nobodyさん
2007/08/24(金) 20:47:14ID:???馬鹿なのは珍しいな
見物させて貰うよ
0817nobodyさん
2007/08/24(金) 20:50:44ID:???> 馬鹿なのは珍しいな
> 見物させて貰うよ
馬鹿であると認識しつつ見物するというのは何らかの精神障害でもお持ちですか?
0818nobodyさん
2007/08/24(金) 21:55:07ID:???use POSIX qw(ceil);
my @cost = ([2000,3],[3000,4],[1000,5],[4000,3]);
my ($avg, $num) = @{$cost[0]};
foreach(1..$#cost){
$avg = ceil(($avg*$num+$cost[$_]->[0]*$cost[$_]->[1])/($num+$cost[$_]->[1]));
$num += $cost[$_]->[1];
}
print $avg, "\n";
0819nobodyさん
2007/08/24(金) 22:07:07ID:???0820nobodyさん
2007/08/25(土) 00:34:26ID:???0821nobodyさん
2007/08/25(土) 10:30:06ID:???ヒントというかコピペで使える答えを有難う御座います!!
全て試しましたところ3つとも希望通りの動きをしてくれました。
すごくわかりやすくて綺麗なソースです。感謝です
0822nobodyさん
2007/08/26(日) 13:21:03ID:???はエラーになるけれど、
$obj = Pkg->new();
または
$obj = Pkg::new('Pkg');
はエラーにならない原因は何が考えられるでしょうか。
0823nobodyさん
2007/08/26(日) 14:14:37ID:???package main;
sub new { print "main::new\n" }
Pkg->new();
new Pkg();
package Pkg;
sub new { print "Pkg::new\n" }
0825nobodyさん
2007/08/27(月) 01:16:35ID:/FKQmVjf掲示板をPerlで作るとき、データは皆さんどのようにして保存しますか?
私が考えたのは
・連番テキストファイル
・連番XMLファイル
・一つのXMLファイル
ぐらいですが、他にもいい方法などありますか?
0826nobodyさん
2007/08/27(月) 01:17:26ID:???0827nobodyさん
2007/08/27(月) 01:35:16ID:???0828nobodyさん
2007/08/27(月) 01:43:22ID:/FKQmVjf外部からも、元データを簡単に参照できるようにしたいので、SQLなどは除外して考えています
0829nobodyさん
2007/08/27(月) 01:51:46ID:???0830nobodyさん
2007/08/27(月) 01:57:04ID:???0831nobodyさん
2007/08/27(月) 01:57:55ID:???外部からの参照時は1枚被せる
0832nobodyさん
2007/08/27(月) 02:10:27ID:/FKQmVjfでは、これを機にSQlite+Perlでも勉強してみます
0833nobodyさん
2007/08/27(月) 03:13:28ID:???どうせいっぱいいっぱいになって途中で投げ出すよw
0834nobodyさん
2007/08/27(月) 07:19:52ID:???まあ、冗談は別として。
なんで連番ファイルにしようと思ったん?
0835nobodyさん
2007/08/27(月) 12:21:06ID:???DB入力だけ別鯖へ投げようと思ってます。
(そのDB鯖は外部からのDB接続は許可してない)
それでLWP::UserAgentで外部鯖へPOSTさせた場合の動作で、
CSVが100行あった場合、ループ内で100回のPOSTになりますが
その時に外部鯖の処理速度もループに影響しますよね?
0836nobodyさん
2007/08/27(月) 12:25:46ID:???0837nobodyさん
2007/08/27(月) 12:54:31ID:???0838835
2007/08/27(月) 12:57:01ID:???ループ内に処理は書いてなく、LWP::UserAgentでPOSTしてるだけですが、
結局DB鯖での処理が終わってreturn受けてから次のループ というフローでOKでしょうか?
0839nobodyさん
2007/08/27(月) 13:31:30ID:???フォームでどうやって投げてると思ってんだろうね
0840nobodyさん
2007/08/27(月) 13:50:36ID:/hovVpUg0841nobodyさん
2007/08/27(月) 13:51:18ID:???0842nobodyさん
2007/08/27(月) 14:09:38ID:???0844835
2007/08/27(月) 15:03:22ID:???ただDB鯖の方は全く操作できない(させてもらえない)環境なので、
CSV処理のCGIを1つかまして、そこから個別に1件ずつPOSTするフローにしました。
こういった場合、何かこうしろみたいな方法はありましたら御教示よろしくお願いします。
※外部DB鯖の管理元に解決のお願いをするのは無しの方向でw
0845nobodyさん
2007/08/27(月) 15:23:24ID:???0846835
2007/08/27(月) 15:55:05ID:???未熟すぎで申し訳ないです。全部いっぺんにというのはLWP::UserAgentの処理方法でしょうか?
それとも全く別の方法でしょうか?今現在はこういった感じになってます。
# リクエスト生成
my $url = 'http://example.com/index.cgi';
my %formdata = ('Name'=>$Name[0], 'Age'=>$Age[0]);
my $request = POST($url, [%formdata]);
# UserAgent生成処理
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
0847nobodyさん
2007/08/27(月) 16:00:44ID:???0848ミューズイングリッシュ
2007/08/27(月) 16:21:52ID:???小さな英会話教室をしていて、ホームページを作っています。
そこでスケジュールカレンダーをphpで、できるとのことだったので、
友人からもらったプログラムをリンクさせましたが、
ログインすると、
Parse error: parse error, unexpected T_STRING in /www/a-mail/muse-eng.jp/public_html/schedule/Calendar.class.php on line 85
と、このようにでます。
ド素人なのでプログラムの書き換えもわかりません。
デザインは出来ていています。
phpプログラムを見て適正に修正して頂ける方探しています。
もちろん謝礼贈呈します。予算がないので10,000円で考えていますが、
お力添えいただける方、宜しくお願いいたします。
対象のホームページ www.muse-eng.jp
ご連絡先メールアドレス aimaniajp@yahoo.co.jp
宜しくお願いいたします。
0849nobodyさん
2007/08/27(月) 16:52:11ID:???0850840
2007/08/27(月) 16:55:57ID:/hovVpUguse HTTP::Request::Common qw(POST);
my $url = 'http://yyyyyy';
my %formdata = ('uuu' => 'uuuuuuuu', 'iiiii' => 'iiiiiii');
my $request = POST($url, [%formdata]);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
my $ua = LWP::UserAgent->new;の記述でscriptエラーでるのですが
これはサーバーの不備でしょうか?
0852835
2007/08/27(月) 17:21:20ID:???通常の入力フォームはありますが、1件ずつが大変だしデータフォーマットを合わせるために、
CSVのデータからCGIで各値の変換(英数字を半角など)をしてからPOSTする予定です。
0853nobodyさん
2007/08/27(月) 17:32:31ID:???上から言われたら反抗もせずに無駄な労力を費やすと。www
0854nobodyさん
2007/08/27(月) 17:35:01ID:???普通にDBに接続しろってw
0856840
2007/08/27(月) 18:50:06ID:/hovVpUg目的の外部HTMLはいろいろ処理(タイトルが変化や色が変わる)していて
表示処理が完全に終わったソースを
perl側から見ることはできないでしょうか?
0857nobodyさん
2007/08/27(月) 18:51:22ID:???0858nobodyさん
2007/08/27(月) 20:37:22ID:???それにしても、未だに CGI なんか作ってる人たちっているのかぁ。
0859nobodyさん
2007/08/27(月) 21:09:29ID:???0860nobodyさん
2007/08/27(月) 22:15:58ID:???0861nobodyさん
2007/08/27(月) 22:56:41ID:???あとスレ違いだからこの辺にしとこうぜ
0862nobodyさん
2007/08/28(火) 03:36:17ID:???> あとスレ違いだからこの辺にしとこうぜ
答えれなくなるとそうやって逃げるんだよな。www
0863nobodyさん
2007/08/28(火) 08:26:21ID:???信じられん、、、
0864nobodyさん
2007/08/28(火) 11:02:31ID:???0866nobodyさん
2007/08/28(火) 12:13:31ID:???0867nobodyさん
2007/08/28(火) 13:59:00ID:???0868nobodyさん
2007/08/28(火) 17:03:57ID:???0869nobodyさん
2007/08/29(水) 01:05:13ID:???0870nobodyさん
2007/08/29(水) 01:11:29ID:???0871nobodyさん
2007/08/29(水) 06:39:40ID:XYYl0jHZコマンドプロンプトからActivePerlを使っていますが、
perldoc Jcode::Nihongo
とした時に文字化けします。
どうしたら正常に表示されますか?
それから、CygwinからもPerlを使ってますが、
$ perldoc
Segmentation fault (core dumped)
$ perl -V
Segmentation fault (core dumped)
$ cpan
Segmentation fault (core dumped)
といった表示が多発しています。
これはどうしたら直りますか?
0872nobodyさん
2007/08/29(水) 10:44:32ID:???0873nobodyさん
2007/08/29(水) 12:32:27ID:???perldoc -T Jcode::Nihongo | perl -MJcode -p -e "$_ = Jcode->new($_, q(euc))->sjis"
Cygwinは使ったことないが、
それだけでは、誰にも分からないだろう。
0874nobodyさん
2007/08/29(水) 13:27:36ID:???0875nobodyさん
2007/08/29(水) 13:53:19ID:???0876nobodyさん
2007/08/29(水) 14:01:41ID:???0877nobodyさん
2007/08/29(水) 16:47:36ID:???0878nobodyさん
2007/08/29(水) 21:19:54ID:???どうでもいいなら、どうしてここに反応を書き込むの?
キモい2次元絵見ながら黙ってチンコでもいじってればいいだろ。
0879871
2007/08/29(水) 21:44:47ID:P8i/jgkh回答ありがとうです。
勉強なります。
>>876
Encodeのほうが最近向きなんですね。
ちょっと調べてみました。
もう1つの質問は自己買い付けしました。
我ながらとちくるった質問の仕方でした。w
0880nobodyさん
2007/08/30(木) 13:15:57ID:???jcode'convert(*name, 'euc');
これでEUCに変換してるんですが、
半角カタカナを入れると文字化けしてしまします。
どうすればいいのでしょうか。
0881nobodyさん
2007/08/30(木) 13:29:38ID:???0883nobodyさん
2007/08/31(金) 18:10:59ID:???0884nobodyさん
2007/09/01(土) 09:16:04ID:???>Use of POE::Component::IRC->new() is deprecated, please use spawn().
>Called from main /home/xxxx/perl-lib/dicebot.pl 100
と怒られてしまいました。
これは、
POE::Component::IRC->new( 'dicebot' ) と書いてある部分を
そのまま POE::Compenent::IRC->spawn( 'dicebot' ) に書き直せばOKという意味なのでしょうか?
0885nobodyさん
2007/09/01(土) 12:15:25ID:???0886nobodyさん
2007/09/02(日) 00:16:36ID:1H6hgBEMどういうコード書けば良いんでしょうか?
例えば公開されてるIP帯域が127.0.0.0/24だとするなら
$ENV{'REMOTE_ADDR'} =~ /^127.0.0.[0-9]+$/
のように上位24ビットだけマッチするなら真で良いんですか?
(例の帯域はあり得ないかも知れませんがサブネットマスクについて良くわからないんで勘弁してください)
0887nobodyさん
2007/09/02(日) 00:17:53ID:1H6hgBEM0888nobodyさん
2007/09/02(日) 00:21:59ID:???my $ipdec = 0; # 10進に変換された IP
my $basedec = 256 * 256 * 256 * 256; # ベースとなる値
for(my $i = 0; $i < 4; $i++){
$basedec = $basedec / 256;
$ipdec += $basedec * $quadip[$i];
}
これで $ipdec に10進数にされた IP アドレスが入るので、同じように公開されてる IP アドレスの範囲も10進数に変換して
その範囲内に収まってるかどうかで確認できる。
0889nobodyさん
2007/09/02(日) 00:23:50ID:???## IP の範囲やサブネットから IP の最小値と最大値を10進数で返す
sub getipminmax{
my($ip) = $_[0] || "";
my(@retip) = (0, 0);
# $ip に数字、/、- 以外があればエラーリターンする
if($ip =~ /[^\d\.\-\/]/){ return @retip; }
# - か / で分割する
if($ip =~ /\-/){ # IP の範囲
my ($ipaddr1, $ipaddr2) = split(/\-/, $ip);
$retip[0] = &ip2dec($ipaddr1);
$retip[1] = &ip2dec($ipaddr2);
}elsif($ip =~ /\//){ # サブネット
my ($ipaddr, $subnet) = split(/\//, $ip);
my $subnetdec = (2 ** 32) - (2 ** (32 - $subnet));
my $ipaddrstart = &ip2dec($ipaddr) & $subnetdec;
$retip[0] = $ipaddrstart;
$retip[1] = $ipaddrstart + (2 ** (32 - $subnet)) - 1;
}else{ # 単一の IP
$retip[0] = &ip2dec($ip);
$retip[1] = 0;
}
return @retip;
}
0891nobodyさん
2007/09/02(日) 01:22:15ID:???質問です。
ユニークな6〜8文字の英数字文字列があるのですが、この文字列を他の文字列(英数字10文字)にしたいんですが、
それもユニークにしたいんです。
ならべく元の文字列がわからないようにしたいんですが、何か方法はありますでしょうか?
ユニークな文字列は5万行ぐらいあります。
0893nobodyさん
2007/09/02(日) 01:33:55ID:???0894nobodyさん
2007/09/02(日) 01:38:33ID:???2行目は初期化してるだけ
3行目は
111.222.333.444 という IP をループさせないで素直に書くと
(111 * 256 * 256 * 256) + (222 * 256 * 256) + (333 * 256) + 444
となります
これじゃ見た目がアレなのでループで回す関係上基準値というか初期値を定義してるのが3行目です
0895nobodyさん
2007/09/02(日) 01:40:06ID:???じゃぁ初心者じゃないあなたが書いてみてください
参考にしたいです m(_ _)m
>>890
ここまで書いておいてアレですが IP アドレスが指定する範囲に収まってるかどうかチェックするような
perl モジュールがあったはずです
0897nobodyさん
2007/09/02(日) 01:54:25ID:???既存のハッシュ関数を元に自分で作りなさい。
MD5とかSHA1も中身は乱数表でクルクルさせてるだけだから。
0899nobodyさん
2007/09/02(日) 02:10:43ID:???それは知ってたけど、0から書いて10進にする過程を勉強したかったからそういったコードを期待したのだが・・・
0900nobodyさん
2007/09/02(日) 02:18:02ID:???0902nobodyさん
2007/09/02(日) 13:00:20ID:???ここは初心者が初心者に答えるスレですね
0903nobodyさん
2007/09/02(日) 15:05:41ID:???0904nobodyさん
2007/09/02(日) 18:56:16ID:???PHPやRuby Java はすんなり理解できるのに Perl は納得いかないことばかりだ・・・
0905nobodyさん
2007/09/02(日) 19:05:01ID:???2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
まずどういう部分が納得いかないでわからないでいるのかを書かないと教えてもらえないよ
0906nobodyさん
2007/09/02(日) 19:35:56ID:???んー、>904に特に意図は無いんじゃねーのかな。
質問スレに書くべきことかどうかはともかく。
良し悪しは別として、Perlは怠慢・短気・傲慢の方向に進化した言語だから、
他言語から入って来たような人だと違和感があってもおかしくないっしょ。
0907nobodyさん
2007/09/02(日) 19:39:57ID:???>Perl ってなんでこんなに複雑なんだ?
これじゃなきゃ、CPANにあるような膨大なモジュールを作り出せないよ
0908nobodyさん
2007/09/02(日) 20:30:52ID:???0909nobodyさん
2007/09/02(日) 21:26:57ID:???0910nobodyさん
2007/09/03(月) 16:56:41ID:EmlGMulIリファレンスも渡さずに呼び出し先が$_を変更する事はできますか?
0911nobodyさん
2007/09/03(月) 17:11:15ID:???やってみたら判るだろ?
perl -le '$_= 1 ;sub { $_=2}->(); print $_ '
0913nobodyさん
2007/09/03(月) 17:29:35ID:???perl -le '$_= 1 ;sub { local $_=2}->(); print $_ '
0914nobodyさん
2007/09/04(火) 00:51:54ID:???0917nobodyさん
2007/09/04(火) 06:15:03ID:???A:「映画館でいいんじゃね?」
914:「コンドームも持たずに何やってんだボケ!!」
、、、くらいに>>914はズレてんなあ。QもAもコンドーム持ってっか
どうか会話内容からは分からんのに。それどころかmy知ってるし、
使ってる可能性の方が高いのに。
0918nobodyさん
2007/09/04(火) 07:00:37ID:???0919nobodyさん
2007/09/04(火) 08:23:01ID:???0920nobodyさん
2007/09/04(火) 12:41:44ID:???use strict, warningsは使わないよ
こんなの使って喜んでるうちは素人だね
0923nobodyさん
2007/09/04(火) 14:03:30ID:???use strict, warningsは使わないよ
こんなの使って喜んでるうちは素人だね
0925nobodyさん
2007/09/04(火) 14:17:32ID:???use strict, warningsは使わないよ
こんなの使って喜んでるうちは素人だね
0926nobodyさん
2007/09/04(火) 14:19:02ID:???0927nobodyさん
2007/09/04(火) 17:09:14ID:???use strict, warningsは使わないよ
こんなの使って喜んでるうちは素人だね
0928nobodyさん
2007/09/04(火) 21:03:16ID:???0929nobodyさん
2007/09/04(火) 22:18:58ID:???子は一定の処理を行い、またforkして孫をつくる。forkしたあとはexit。
孫も処理を行い、exitする。
これをやると、たまに500内部サーバーエラーが起きるんだけど、
理由がわかりません。
forkする際には、どちらも$|=1、標準出力は閉じています。
0930nobodyさん
2007/09/04(火) 23:04:14ID:???0931nobodyさん
2007/09/05(水) 01:30:11ID:???何処に居る!!
0932nobodyさん
2007/09/12(水) 18:15:02ID:w11eoBjq何か数学系の関数を提供してくれるモジュールがありますでしょうか?
また、自分でやる場合は結局階乗も以下のようにすることになるのでしょうか。
sub kaijo{
my $n = $s = shift;
for(1..($n-1)){ $s *= $_ }
return $s;
}
組み合わせ関数も自分で書くしかないんでしょうか。
あんまり軽く仕上げる自信がないですが。
0933nobodyさん
2007/09/12(水) 18:16:00ID:???0934932
2007/09/12(水) 18:30:54ID:w11eoBjqsub kaijo{
my $n = shift;
for(1..($n-1)){ $n *= $_ }
return $n;
}
sub niko{
my $n = shift;
my $m = shift;
return &kaijo($n) / ( &kaijo($m) * &kaijo($n-$m) ) ;
}
print &niko(14,2);
とりあえずヒマなので自分で書くのならという事で試しに書いてみました。
何千っていう計算をさせてみようかなって思ったのでちょっとした重さの違いが大きな差につながるかなとおもてまうsが。
採点かアドバイスか。何か下さい。
>>933
階乗ってべき乗使ってできるんでしたか?
すいません調べてみます。
って云うのは仕事上、多用しています♪@三女ウコン
0936932
2007/09/12(水) 19:01:36ID:w11eoBjqmy $n = shift;
for(1..($n-1)){ $n *= $_ }
return $n;
}
sub combin{
my $n = shift;
my $m = shift;
return ($n==0 or $m==0 or $n==$m) ? 1 : fact($n) / ( fact($m) * fact($n-$m) ) ;
}
エクセルに名前倣いました。
それと僕の勘違いで二項係数全然いりませんでした。
別の質問をさせてください。
my @array = qw/1 13223 46 4 29 3/;
こういう風に配列に数値が入ってる場合の、総和を出したい時はどうコーディングするのでしょうか?
@array[0..2]の分の総和
@arrayの総和
など確率のプログラムなので、
@arrayは数千の要素数
それを0と1の総和0-2の総和、0-3の総和のように最後までやってifでわけたいところがあるのですが。
0937932
2007/09/12(水) 19:02:25ID:w11eoBjqありがとうございます。
三乗根の計算ですね。
0938nobodyさん
2007/09/12(水) 19:08:56ID:???0939932
2007/09/12(水) 19:18:07ID:w11eoBjq具体的なコードを教えてもらってもいいでしょうか?
僕もmapあたりでかっこよくいけると思ったのですが、なかなかそうもいかないというか、
思いつかないんです。
sub sum{
my $a;
foreach(@_){ $a += $_ }
return $a;
}
で、こんなの書いてみました。
いちいち変数を使うあたりがいやです。変数を使わなければmapでも出来るのか?
とか思いますが。
0940nobodyさん
2007/09/12(水) 19:45:29ID:???0941nobodyさん
2007/09/13(木) 02:52:57ID:???0942nobodyさん
2007/09/13(木) 04:53:33ID:???0943nobodyさん
2007/09/13(木) 05:20:26ID:???って外部モジュール使うって
意味だったんだね。
0944nobodyさん
2007/09/13(木) 08:08:01ID:???「変数使わない」って結構大変だし、それで上等だと思うけど?
print eval join '+' , @arr ;
>>943
・・・釣り?
0945nobodyさん
2007/09/13(木) 20:30:12ID:QEyk4I0D$form =~ m/([++,,、、。。__\// ])/)
正規表現で上記のような記号を抽出しようとすると、
どうもうまく抽出されません。
たとえば「?」が半角の。になってしまいます。
文字コードはjcode::sjis2euc(\$form)で事前に
EUCにしておりますが(ソースコードもEUCです)、
何か対策等ございましたらご教示いただきたく思って
おります。
宜しくお願いいたします。
0946nobodyさん
2007/09/13(木) 20:53:20ID:???ことになる
あと、日本語EUCと言えども文字の並びによっては別の文字と同じ文字コードパターンがきて
文字の境目が部分だけでは判断できにくくなる
対策としては先頭から1文字ごとに分割して判断するのが素直なやり方
0947nobodyさん
2007/09/13(木) 21:15:58ID:???0948nobodyさん
2007/09/13(木) 21:53:49ID:???アドバイス感謝です。
できないことがわかりましたので、早速以下に変えてみました。
報告とさせていただきます。
-------------------------------------------------------
my $form_length = length($form);
for (my $i = 0; $i < $form_length; $i++) {# 文字を1文字ずつ処理(日本語対応)
my $form_substr = substr($form, $i, 1);
if ($form_substr =~ /[\x80-\xff]/) {
$form_substr = substr($form, $i++, 2);
}
if(($form_substr eq '+') ||
($form_substr eq '+') ||
($form_substr eq ',') ||
($form_substr eq ',') ||
($form_substr eq '、') ||
($form_substr eq '、') ||
($form_substr eq '。') ||
($form_substr eq '。') ||
($form_substr eq '_') ||
($form_substr eq '_') ||
($form_substr eq '/') ||
($form_substr eq '/') ||
($form_substr eq ' ') ||
($form_substr eq ' '))
{
&error_out();
last;
}
}
0949nobodyさん
2007/09/13(木) 22:06:55ID:???ifでくくるにしてもgrepなりfirstなりで検索するとか
ハッシュテーブル使うとかすりゃいいのに・・・
if (grep{ $_ eq $str } @mojilist) {
if ($mojilist{$str}) {
$pat = join '|', mapquotemeta @mojilist
$form =~ m/($pat)/
0950nobodyさん
2007/09/13(木) 22:12:41ID:???足りない部分は想像力で補ってくれ
if (grep{ $_ eq $str } @mojilist) {
・・・
%mojilist{$str} = map { ($_=>1) } @mojilist;
if ($mojilist{$str}) {
・・・
# このやり方はすごく効率が悪い
$pat = join '|', map { quotemeta $_ } @mojilist;
$form =~ m/($pat)/;
0951nobodyさん
2007/09/14(金) 14:13:47ID:???Perl言語を用い、fpingの出力ファイルから、
ラウンドとリップ時間のみの数値列を出力するプログラムを作成せよ。
という宿題がでました。
何から手をつければいいかわからない状態なので、もしよかったら教えてもらえないでしょうか?
0953nobodyさん
2007/09/14(金) 20:30:20ID:???> 足りない部分は想像力で補ってくれ
エスパー能力を要求する回答者イラネ
0954nobodyさん
2007/09/15(土) 13:34:20ID:???0955nobodyさん
2007/09/15(土) 16:49:52ID:iajdiFDwループ回数を増やすほど理論値に近似しますのでできるだけ増やしたいですが、
あまり増やして、数十分も処理を続けられると困ります。
ループ1回あたり何秒かかるのか。
もしくは1秒で何回ループさせられるのかを調べるコードを教えてくだしあ。
0957955
2007/09/15(土) 17:03:02ID:iajdiFDw早速ありがとうございます。
英語読めないんですがperldocちょっと読んでどうやらtimethisでできそうな気が。
でやりましたら、
error 0.168701171875 at (eval 6) line 40.
なんて表示されました。
どういうエラーでしょうか。
my $code = q{コード};
timethis(1,$code);
って感じでやってみました。
「コード」内で別モジュールを使ったり、コード内にない自作関数を使ったりするのはありですよね?
それともrequirやuseもコード内でやるべきですか?
イマイチうまくいきません。でもあと少しっぽいのでもう少しだけアドバイスお願いしまうs。
0958955
2007/09/15(土) 17:05:33ID:iajdiFDwdie
をコメントアウトしてやりなおしたら
Illegal division by zero at (eval 6) line 47.
こんなエラーにかわりました。
改善策わかりますでしょうか?
0959955
2007/09/15(土) 17:06:51ID:iajdiFDwもうちょっと挙動を調べて又きまう。
0960955
2007/09/15(土) 17:24:13ID:iajdiFDw0961nobodyさん
2007/09/15(土) 21:08:38ID:???0962nobodyさん
2007/09/15(土) 22:37:55ID:???0963nobodyさん
2007/09/15(土) 23:36:16ID:???事をみつけてはコーディングしてみています。
複雑なループ処理等になってくると全てがきっちり動いてるのか確認大変ですね。
今なにをやっているかという具体的な中身を視覚化してくれるモジュールなどあるのでしょうか?
自分で「よし、まずはこの変数の動きをチェックしてみよう」みたいな事をやっていくのにも限界があるなと思うこのごろです。
0964nobodyさん
2007/09/15(土) 23:40:09ID:???0965963
2007/09/15(土) 23:47:45ID:???確かエラーを見つけるものですよね?
エラー修正はそこまで苦労しないのです。
普通に何行目あたりに構文エラーがあるなどとわかりやすいですし。
問題は動いてるけど、この出てきてる数値が果たして本当に合っている数値なのかってことです。
それのコードの検証作業を補助してくれるものはないのかなと思ったのですが。
以前にフローを視覚化するなんとかがあるとかないとかって聞いたことがあります。
Perlではなかったかもしれませんが。
実際はもっとわかりやすく、実際に動かした時の逐一の動作を見せてくれると楽だな。と。
0966nobodyさん
2007/09/15(土) 23:49:53ID:???0968nobodyさん
2007/09/16(日) 00:05:24ID:???追加書き込みでログ保存するサブルーチン書いて
&func("\$val=$val");
って書いていけば簡単にできると思うが
0969nobodyさん
2007/09/16(日) 00:18:53ID:???まぁ、プログラム作ってる最中っていうより、プログラムできあがったけど
なんか動作があやしいって時に使うもんだけど。
自分がテストやんなくていいなら使わないか。。。
0970nobodyさん
2007/09/16(日) 02:17:16ID:???とりあえず、perlデバッガなら、w 変数名 と c だけ覚えておけば、
変数をヲチできるよ。
大体は、print文や、ログの事後解析で事足りるから、
デバッガは殆ど使わないな。
0971nobodyさん
2007/09/16(日) 03:26:56ID:???よく多重のハッシュを使うから、これがないとね。
0972nobodyさん
2007/09/16(日) 07:21:24ID:y2OdqWq5print (sort{$a<=>$b}@list)[0];
これで上手くいきません。並べ変えた0番目の要素を表示したいのです。
別配列に一旦入れるのは避けたいです。
確かナイスな方法があったような気がするのですが思い出せません。
お願いします。
0973nobodyさん
2007/09/16(日) 07:33:41ID:???0974nobodyさん
2007/09/16(日) 07:43:09ID:y2OdqWq5すっげえ男前。
忘れてたのとは違うやり方だけどナイスですね。
しかしどういう理屈でしょうか?
[0..1]とかも使えちゃいましたし。
プラス演算子がおかれると何故配列として認識してもらえるのでしょうか。
print(式)
0976nobodyさん
2007/09/16(日) 07:52:15ID:y2OdqWq5回りくどい。
0977nobodyさん
2007/09/16(日) 08:32:37ID:???scalar() と似たもんだ。
print scalar ( (sort{$a<=>$b}@list)[0] ) ;
print + (sort{$a<=>$b}@list)[0] ;
配列スライス出力時に、+, scalar 共に使うのも良くない。
print + ( sort{$a<=>$b}@list)[0..2] , qq{\n};
print + ( sort{$a<=>$b}@list)[0..2] . qq{\n};
print scalar ( ( sort{$a<=>$b}@list)[0..2] ) , qq{\n};
print scalar ( ( sort{$a<=>$b}@list)[0..2] ) . qq{\n};
きちんと挙動確認して使うならいいかもしらんが後に読みなおした時
(もしくは他の人が読んだとき)に混乱するのは必至。
、、、が深くは突っ込まんでくれ。理解はしている(つもり)だが、
素人の説明を鵜呑みにするのはイクナイ。ここらへんは本とかperldocとか
読んでくれ。
これだとなんなんで。も一つ
printf "%d\n", sort{ $a <=> $b } @list ;
こっちは配列の中身が整数であることを「保証されない」時痛い目に
合うこと受け合いさ。
0978nobodyさん
2007/09/16(日) 09:19:49ID:???しかしいつも思うのだがO(n)で求めることができる最小値をO(n*log(n))はかかるソート使って求めるのは抵抗あるなあ。組み込みだからよっぽど長いのくわせない限り十分速いのはわかるのだが
0979nobodyさん
2007/09/16(日) 10:19:55ID:y2OdqWq5すいません。ありがとうございます。
print \(sort {$a<=>$b} @array);
こうすると配列のリファレンスができると思ったらできない。
それで思い出したけど、
print [sort {$a<=>$b} @array]->[0];
これが以前よく使っていた方法でした。これなら配列スライスも安全に
print @{[sort {$a<=>$b} @array]}[0..1];
とできますし。
()の中に配列が入ってるのに[0]でインデックス指定できるかできないか。
+をつけるとできる。scalar()の中に書くとできる。
>>978
その優先順位によって何が行われるんですか。
\()で配列リファレンスができなかったのは\の方が優先低いから先に3つのスカラーが出てきちゃった?
+()だと+が優先高い。。。で、+の優先が高いと何故にインデックス指定ができる?
0980nobodyさん
2007/09/16(日) 11:12:25ID:???0981nobodyさん
2007/09/16(日) 11:47:48ID:???0982nobodyさん
2007/09/16(日) 13:00:23ID:???根本的に間違ってますから
0983nobodyさん
2007/09/16(日) 14:12:00ID:???my @get = @_;
sort @get;
return $get[0];
}
print root 1,2,3;
普通は
print &root(1,2,3);
と書くでしょうし、それが一番わかりやすいですが、括弧なしで書いた場合は一体いくつまでをサブルーチンの引数と解釈されるんでしょうか?
0984nobodyさん
2007/09/16(日) 14:27:19ID:???挙動は変らんよ。与えられたリストを全部もってく。
print root 3,4,5, print q{hoge} ;
なんてマネしたら当然1 が返る(sort の行をきちんと機能させた場合)
がそれは、
print &root( 3,4,5, print q{hoge}) ;
と同じわけで本来の挙動だ。
お前さんが prototype の事を質問しているのだとしたら全く別の話。
0985nobodyさん
2007/09/16(日) 14:35:03ID:???http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod
> 括弧を使うときには、単純な (しかし、ときには驚く結果となる)
> 規則が適用できます: 関数に見えるならば、それは関数で、
> 優先順位は関係ありません。
0986nobodyさん
2007/09/16(日) 14:42:55ID:???コーディングとちょっと違うかもしれませんがお願いします。
test.plを実行すると自分のパソコンのスペックで15分くらいかかります。
ファイル操作とか何もしない、コード内完結型?のコードなので、処理をさせてる間
他の作業をパソコンでしたいのです。
簡単に言うとtest.plの完遂を待ってる時間に2ちゃんねるでもして暇をつぶしたいのです。
なので30分かかってもいいので、test.plのCPUやメモリの最大使用率を通常の1/2にしたいのです。
可能でしょうか?
0987963
2007/09/16(日) 15:21:39ID:???う〜ん。なんか伝わってないような。
例えばsort関数が何をしているか視覚化して初心者に説明しなさい。
ってな時にsort関数のコードを渡せば自動で視覚化してくれるモジュールがあればなってことです。
自分でsort関数と同じ関数を作って、そこにごちゃごちゃと視覚化のためのコードを書くのは、
簡単な関数の時にしか「簡単じゃん」とは思えないですよね?
いや、簡単だというならsort関数の視覚化をこの場でやってもらえればいいんですけどね。
my @col = (4,6,2,98,2,1345,22);
この配列をsort関数がどういう手順でどういう事をしてるかを目で見えるようにするコードを「簡単に」どうぞ。
0989nobodyさん
2007/09/16(日) 17:10:58ID:???for (1..100){ push @array,$_ }
@array = sort {$a<=>$b} @array;
my $tr = (@array * (1-0.68)/2);
print $tr;
print "\n";
splice @array,0,$tr;
splice @array,-$tr;
print "@array";
このコードですが、$trを表示すると16になります。
しかし$trをintすると15になります。
さらに、spliceに使われてる$trもどうも15として動いてるようです。
15.999999999という状態になっているのか。
こんな事があるなんておもいませんでした。
print すると整数のみなのに、実際は小数付きの数字という事は常に想定しておかないといけないことなのでしょうか?
print "\n\n";
print ($tr != 16);
をすれば1と表示されます。だからそんなに問題はない?
でもなんか混乱しています。何故こんなことになってるのでしょうか?
0992nobodyさん
2007/09/16(日) 17:33:39ID:???すまんが、
ttp://corn.2ch.net/php/kako/988/988728069.html
の5〜10嫁。
0993nobodyさん
2007/09/16(日) 17:51:31ID:rriFOokp別ファイルにまとめておきたいのですが、
どのような仕組みにすればいいのでしょうか。
例えばconf.pmに変数として$path=/home/...;
などと書いて、スクリプト本体でrequireしてprint $path;としてもダメですよね・・・
ダメダメな質問ですみませんが、お願いします。
0994nobodyさん
2007/09/16(日) 17:53:04ID:???すいませんでした。
use Math::BigFloat;
my @array;
for (1..100){ push @array,$_ }
@array = sort {$a<=>$b} @array;
my $tr = Math::BigFloat->new((@array * (1-0.68)/2));
print $tr;
print "\n";
splice @array,0,$tr;
splice @array,-$tr;
print "@array";
としましたら表示が16で、動作も16になってくれました。
これって結構重要なことですよね。
乱数とかを扱う場合特にちょっとした誤差でとんでもない違いが生まれてしまいますし。
で、一体なんなんです?
15.99999999になってるのは別にいいんです。比較でもちゃんと!=16で真出しますし。
なんでprintでは勝手に四捨五入されてしまう?のでしょうか。
誤差が気になるよりもprintでの表示が違う事の方が気になります。
0995nobodyさん
2007/09/16(日) 17:58:04ID:???誤差が怖い時は常にbigfloatに入れて使っておけばいいんですかね。
0996nobodyさん
2007/09/16(日) 19:33:23ID:???ここで質問しても流されそうですが・・・
一応してみます。回答お願いしますm(__)m
@test[-10]の本来のインデックス番号?って簡単にわかりますか?
spliceしないで、頭10番目から末尾10番目を得たいんです。
ごちゃごちゃしないと無理ならspliceでもいいんですけれど。
0997nobodyさん
2007/09/16(日) 19:52:40ID:???ttp://pc11.2ch.net/test/read.cgi/php/1189939783/
0998nobodyさん
2007/09/16(日) 19:57:31ID:???初心者にもほどがあるってレベルなんだけど、釣りなのか?
本気なら、もう少し本なり入門サイトなり見てから質問してくれよ
0999nobodyさん
2007/09/16(日) 20:01:49ID:???my $tr = Math::BigFloat->new((@array * (1-0.68)/2));
と書くの大変なので
my $a = use Math::BigFloat;
my $tr = $a->new((@array * (1-0.68)/2));
と書いてみましたがエラーでした。
こういう意図を実現するのは無理ですか?
小数の計算をさせた上で配列のインデックスにする場合はBigfloatしておかないと危ないです。
やってない$trに
$array[-($tr +1)];
とすると実質インデックスが2個変わってしまいます。
15.999だったのが、+で16になり、さらに1が足されて17になる。
そんな現象を確認しました。
簡単な記述方法はないでしょうか。
1000nobodyさん
2007/09/16(日) 20:07:07ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。