Perl 初心者コーナー Part24
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆fBgbHI04bQ
03/06/07 22:30ID:GbQKLcPE【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0619603
03/06/19 02:07ID:???まア、実際に試せばわかるけど
0620nobodyさん
03/06/19 02:17ID:???自分で調べようとかいう気はないようだな。
>>595でも「ついでに「ファイルテスト演算子」でググれ。」とレス
もらってるのに。
0621543
03/06/19 02:20ID:???あ、本当だぁ。
ごめんなさい。完璧でした。
本当にありがとうございましす。
これでファイルの存在確認の方は
終了コードをシェルに渡すことができると思うので
完璧みたいです。
今度はファイル削除…
同じ要領でいいのだろうけど
そのまえに「-e」や「$_」を理解しなくては…
0622543
03/06/19 02:24ID:???いえ、調べました。
すぐにひっかかったページをみると
一見してtestコマンドのようにみえたので
「-e」はtest -eかと思って、できるだけ略さずに書こうと思ったら
×でした。
それでtestコマンドではないのだろうと考えてお願いした次第です。
0623nobodyさん
03/06/19 03:14ID:???0625nobodyさん
03/06/19 03:31ID:???0626nobodyさん
03/06/19 03:40ID:???0627nobodyさん
03/06/19 04:10ID:???/^ +$/ でも /^\x20+$/ でも /^\040+$/ でも /\Qスペース\E/ でも
ご自由に。
>>626
\s == [ \t\n\r\f]
0628nobodyさん
03/06/19 04:33ID:???5 と言っても色々あるし、Linux でも Win でも何でもいいけど、
少なくとも手元のテスト環境で問題なく動くようになってから
本番機にもっていく事が大事。
0629nobodyさん
03/06/19 11:39ID:???方法をお教え下さいませ。
はてなアンテナ(ttp://a.hatena.ne.jp/)でやっているような、
htmlファイルの中の更新(追加or変更)された部分だけを抜き出して
来る方法です。定番的な一番効率の良いやり方はないでしょうか?
0631nobodyさん
03/06/19 15:15ID:???ブックマークと、URL直打ちを見分ける方法ってありませんか?
JSの力を借りなければなりませんか?
0634543
03/06/19 20:19ID:???昨夜はありがとうございました。
家のLinuxで試して成功したので
本番機でテストしたのですが見事に失敗…
以下のように表示されていました。
syntax error near unexpected token `$_ or'
慌てて本番機のPerlのVersionをみてみたらVersion 4でした。
家のテスト環境はVersion 5だったのですが、これが原因でしょうか?
手持ちの本はVersion 5を前提に書かれていますが
エラーを返してきた部分については
特別Versionについては触れられていませんでした。
0636nobodyさん
03/06/19 20:48ID:???ある意味驚きだな。
0638nobodyさん
03/06/19 21:04ID:???俺のプロバスペースもPerl4だぞ。
>637
$_は使える。
0640nobodyさん
03/06/19 21:07ID:???うん、myは使えない。
かなり不便。
$a ||= 1;もできない。
省略形はかなりピンチかもしれないから、「-e $_ or exit(100);」は
「unless(-e $_){exit(100);}」とかにした方がいいかもしれない。
0641nobodyさん
03/06/19 21:13ID:???and/or/not 演算子は Perl4 には無かったような記憶が。
if/unless 修飾子は使えた筈。
あと組み込み関数も split とか括弧を省略出来ないものが多い。
一番いいのは赤ラクダ本を手に入れる事だが、
とりあえずコレ読んどけ。>543
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_124.html
0642nobodyさん
03/06/19 21:34ID:???5に慣れてから4コンパチで書くのは辛いな
0643nobodyさん
03/06/19 22:58ID:7O2enBqmPerlで
SDBM_Fileを使ってるんですけど、
MDBM_Fileにそのまま変えられますか?
SDBMになくてMDBMにある制限みたいなものってあるでしょうか?
0644nobodyさん
03/06/19 23:06ID:QrRxrm0Kmy $abc = 255;
&bbb(\$aaa);
}
なんか変になるんですけど、これって有効にならないんですか?
0645nobodyさん
03/06/19 23:06ID:QrRxrm0Ksub aaa{
my $abc = 255;
&bbb(\$abc);
}
これ。
0646nobodyさん
03/06/19 23:13ID:7O2enBqm何が変になるのかわからん限りはなんとも・・・。
きたれ!
http://ex.2ch.net/test/read.cgi/entrance/1055942024/
ファイアーエンブレム風のネトゲツクローヨ
0649nobodyさん
03/06/19 23:25ID:7O2enBqmなにか心当たりが?
0653nobodyさん
03/06/19 23:34ID:???0654恐らく
03/06/19 23:37ID:???{
print "なんか変\n";
}
0655645
03/06/19 23:43ID:???どっか他の所で重大な間違いをしてたっぽいので、しっかりデバック取ってきます。
0656543
03/06/20 00:38ID:???できました。
下の記述でfileが無い場合は100で
fileがある場合は0で終了するようになりました。
------------------------------
#! /usr/bin/perl
@files = ("/home/path/file",);
for (@files){
unless(-e $_){exit(100);
}}
exit(0);
------------------------------
今度はファイル削除用のを作ります。
これまで相談して気になるのは、
なぜ皆さんがsystemコマンドを使わなかったのか
ということです。
お話していなかったのですが、実際のオペレーションでは
ファイル存在確認の後、ファイル削除をおこなうので
systemコマンドであればcommandを書き換えるだけで済むのかなぁと。
なにか理由があるのでしょうか?
0657nobodyさん
03/06/20 00:45ID:???簡単に言えば、systemを使わないのは特に必要ないから
それとちょっと気になるんだけど
>>621に書いてあった
>これでファイルの存在確認の方は
>終了コードをシェルに渡すことができると思うので
シェルという語が出てきてるけど、どんなことやってるの?
シェルからperlプログラムを実行して戻り値を受け取るわけ?
0658nobodyさん
03/06/20 01:20ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
これから質問する奴は
1:○○
2:△△
3:××
と書け。それ以外は皆放置しろ。
どうせ>>1も読まない奴はスレ違い・板違いがほとんどだしな。
0659nobodyさん
03/06/20 01:24ID:2h2vJ76G1:○○
2:△△
3:××
0660nobodyさん
03/06/20 01:45ID:???1:○○
2:△△
3:××
0661543
03/06/20 02:40ID:???>シェルという語が出てきてるけど、どんなことやってるの?
>シェルからperlプログラムを実行して戻り値を受け取るわけ?
まさしくそのとおりです。
657さんのいうとおりの動作をさせたいのです。
それを前提にしても
汎用性という意味(?)でsystemコマンドよりも
656記載のもののほうがよろしいでしょうか?
0662nobodyさん
03/06/20 03:31ID:???1:○○ だめよ、こんなところで
2:△△
3:××
0663nobodyさん
03/06/20 04:00ID:PsiyBD1J$bst .= 'W' unless($bst =~ /W/);
の意味が分から無くて困っています。
CGIゲームで、このプログラムにより、
攻撃力が1だけ上がるのですが、
10位上げたいので。
ポイントは戦闘中だけ上がると言う事なので、
難しいんだと思いますが。
0664nobodyさん
03/06/20 04:04ID:???$bstがWにマッチしなければ、$bstにWを追加
$bst .= 'W' unless($bst =~ /W/);
0665nobodyさん
03/06/20 05:04ID:???2:それでグーグルとか使って検索をやってみたが・・・
3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
0667nobodyさん
03/06/20 07:53ID:???> 1:自分はエロエロ画像が見たい。
> 2:それでグーグルとか使って検索をやってみたが・・・
> 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
print (1:!~ /○○/ || 2:!~ /△△/ || 3:!~ /××/) ? 'スルー\n' : '回答してみる\n';
# 結果表示
スルー
↓次の質問ドゾー
0668nobodyさん
03/06/20 08:28ID:???if (0) {
> 1:自分はエロエロ画像が見たい。
> 2:それでグーグルとか使って検索をやってみたが・・・
> 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
}
0669nobodyさん
03/06/20 14:41ID:CDccIPBDどこが悪いのかわかりませんでしょうか?
for ($i=0;$i<=$num;$i++){
$ORG{$i} = {
"orgname" => $values[$orgmaster_name2seq{orgname}],
"number_per_class_max" => $values[$orgmaster_name2seq{number_per_class_max}],
"langlist" => $HTMLlanglist,
};
}
my $template = HTML::Template->new(filename => './tmpl/search_result.html');
$template->param(
ORGLIST => \@ORG
);
print $template->output;
---------------------------------------------
以下、テンプレファイル。
<!-- TMPL_LOOP NAME="ORGLIST" -->
<!-- TMPL_VAR NAME="ORGNAME" --></a></td>
<!-- TMPL_VAR NAME="LANGLIST" --></td>
<!-- TMPL_VAR NAME="NUMBER_PER_CLASS_MAX" --></td>
<!-- /TMPL_LOOP -->
0670nobodyさん
03/06/20 15:00ID:59oEJQW+cookies フォルダの中に格納されません。
クッキーの有効期限を指定していないからでしょうか?
とするとどこにクッキーの情報は格納されているのでしょうか?
print "Set-Cookie: name=$id; \n";
0671nobodyさん
03/06/20 16:34ID:Me43kE/Lで、時間を1分単位にしようとしてるのですが、まったく分かりません。
いくらCGI内を探しても見つからず・・・・・
教えて頂けませんでしょうか?
0673nobodyさん
03/06/20 19:12ID:???http://pc2.2ch.net/test/read.cgi/php/1047806915/
のほうがいいんじゃん?
0676nobodyさん
03/06/20 19:35ID:???[]と{}の違いわかる?
0677nobodyさん
03/06/20 20:58ID:kJiV021K人います?。コンパイルはできるんだけど実行の時にあれやら
コレやらが足りないっていわれるんだよね。
つーか、いまいちよくわかんないなぁperl2exeって。
0678nobodyさん
03/06/20 21:01ID:1Z33Vqhm貴方のお店&サイトを効果的に宣伝できます!
お店の足取りが悪い・・・。私のサイトにはあまり人が来ない・・・。などお悩みの方は、
ぜひおすすめです。手軽&簡単しかも日本中に宣伝できますので、
大幅なアクセスアップが期待できます。
[料金について]
1日110円で宣伝&クーポン券の発行が出来ます。
年間契約で申込された場合、40,000円になります。
6ヶ月契約で申込された場合、25,200円になります。
3ヶ月契約で申込された場合、12,600円になります。
http://www.c-gmf.com/h17103.htm
ぜひ一度お試しになってみてはいかがでしょうか?
0679nobodyさん
03/06/20 22:06ID:Vg4M86DU#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい
と中に書かれているテキストの中の文字を、改行を<br>に変換して、
#で区切って配列に入れたいのですが・・・。
どうすればできるのでしょうか・・・( ・ω・)
0680nobodyさん
03/06/20 22:14ID:???内容もさることながら、質問の仕方もカスのような気がしますが。
1. \nを<br>に変換する。
2. splitにて、#区切りの配列を生成する。
3. shiftする。
のような手順でしょうかね。
0681nobodyさん
03/06/20 22:18ID:jiB8qm8t$text = <<'_END_';
#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい
_END_
$text =~ s/\n/<BR>/g;
@text = split(/#/, $text);
0682679
03/06/20 22:31ID:Vg4M86DUスイマセン、精進しまつ(;;)
>>681
ナルホド!! ・・・と思ってやってみたのですができない・・・。
$message = "./aisatu.dat";
open(FILE,"$message");
$text = <FILE>;
$text =~ s/\n/<br>/g;
@text = split(/#/,$text);
print "@text\n";
一行目の文字列しか出力されないです・・・( TÅT)
0683nobodyさん
03/06/20 22:33ID:jiB8qm8t$text = <FILE>;
これだと、1行しか読めません。
$text .= $_ while(<FILE>);
でいいと思います。
0684nobodyさん
03/06/20 22:52ID:Vg4M86DU.+゜(・∀・)+゜. 全部読んでくれました。
改行が<br>に変換されないのが気になるところですが・・・
あとは自分で調べてみます。
(TдT)ノシ アリガトウです
0685nobodyさん
03/06/20 22:53ID:???あー。
自分で調べるか、がんばれ。
改行コードがヒントだ。
0686直リン
03/06/20 23:10ID:Q1+dqLU80687nobodyさん
03/06/21 10:55ID:wNdBDwZ11:サムネイル画像の生成を行いたいです。
2:GDを使う方法を試してみたのですが、
3:標準で使える設定にはなっていないようで、エラーになりました。
何か手段はないでしょうか?
・ライブラリを同じとこに置いて使う??
(あまりよくわからないのですが調べててこんな方法があるのかな?
と思いました。)
・自分で画像縮小のアルゴリズムを組む。(ちと自信は無いですが)
ちなみにjpeg/png/(gif) などで行いたいです。手助けお願いします。
0689無料動画直リン
03/06/21 12:10ID:AstYoKnr0690687
03/06/21 12:57ID:wNdBDwZ1(GD,PerlMagickはインストールっぽいので。)
jpegだけでも縮小処理をしたいです。(他 gif/png)
0692687
03/06/21 15:21ID:fPD3+uod0693nobodyさん
03/06/21 15:22ID:zsFEWp+Jあきらめれ。
0695687
03/06/21 16:32ID:fPD3+uodたとえば require "GD"; ってのではやっぱし動かないんですよね?
さっきGDの中身を見てたんですが、一部わからない所もありました。
誰か同じことを考えて、インストール無しで使えるGDを公開してる人って
居ないんですかねぇ・・・
0696_
03/06/21 16:42ID:???0697nobodyさん
03/06/21 17:26ID:VyXOk/2cchomp($temp);
print "$tempが入力されました\n";
}
これだとABCDと入力したら ABCDが入力されました、と出て、
while ($temp = <STDIN>) {
$temp2 = chomp($temp);
print "$temp2が入力されました\n";
}
これだとなぜか、1が入力されました、としか出ないのはなぜですか?(´・ω・`)
教えてエロイヒト
いろいろな本を読んで、またはGoogleで検索して、それでも分からない場合に人に聞きましょう。
chomp()の仕様を答えるのは簡単だけど、そうやって何もかも人に聞くつもりならプログラミングなんて手を出さないほうがいい。
>>698
Perlのchop()も同じ仕様だよ。
というか、なぜそこでPHPが、しかも(関係あるとはいえ)別の関数が出てくるのやら。
0700687
03/06/21 18:11ID:wNdBDwZ1ttp://homepage1.nifty.com/smastani/hp/smastani/pc/thumbn.html
コチラに掲載されているようなことをやろうと思っています。
copyResized以外はGD.pmを見ることで理解が出来たのですが。。。
0701603
03/06/21 18:12ID:???0705698
03/06/21 18:36ID:???元質問者がPHPスレに誤爆してたのでPHP+Perl使いと推測。
そして違いを挙げてみた。
それだけなので怒っちゃいやん。
0706nobodyさん
03/06/21 18:43ID:???WindowsにMySQLをインストールして使う場合、
DBIとDBD::MySQLか
DBIとDBD::ODBC+MySQL ODBC Driverを使いますよね。
問題はDBD::ODBCを使った場合。
$dsn = 'DBI:ODBC:test';
こんな風にデータソースを指定しますが、testっていうデータベース名を
先にODBCドライバにつくる必要がありますよね?
でも、ODBCドライバに作成するときには、それと同時に
ユーザ名やパスワードも入れるじゃないですか。
つまり、testっていうODBCデータソースには、データベース名と
ユーザ名とパスワードがすべて含まれてるってことですよね。
なのに、そのあとそのdsnを使ってDBにつなぐときは、
$dbh = DBI->connect($dsn, 'test', 'test');
という風に、またユーザ名とパスワードを指定する必要があるわけです。
ここが納得できないんですよ。だったらODBCドライバのところでは
ユーザ名やパスワードを入れたくないんですが。
今実験してみたところ、やっぱりODBCドライバのユーザ名とパスワードの欄には
何も入れなくても(または適当にいれても)、正常にDBに接続できています。
なんで?
0707_
03/06/21 18:43ID:???0708nobodyさん
03/06/21 18:44ID:???chomp();なんかで躓くのが、PHPやってるとは思えんが( ´_ゝ`)
でもまぁ、質問スレに無能なコテは要らんわな。
質問厨がイヤならスレ見なけりゃいいんだから、アフォな煽りなんかすんなっての。
で、>>702
そのミスの仕方から察するにとほほ見ただろ?(゚∀゚)
あそこだけを信じるなよ。
0710nobodyさん
03/06/21 19:08ID:???print LINE $line "\n";
とかいて、
そのCSVファイルをWIn上で開くと、
Winの改行は\r\nのはずなのに、問題なくみれてしまうのはなんでなんでしょうか?
0711直リン
03/06/21 19:10ID:AstYoKnr0713nobodyさん
03/06/21 20:17ID:???flock (LOCKF, LOCK_EX);
みたいにするのって、
flock(DAT, 1);
flock(DAT, 2);
flock(DAT, 4);
flock(DAT, 8)
とただやるのに、比べて、どんな利点があるんでしょうか?;
0715nobodyさん
03/06/21 21:03ID:???ぜーんぶつながっちゃって困った和さ。
0716nobodyさん
03/06/21 21:04ID:???とかKcatchとか、
エラーをブラウザに出力してくれるものって、
初心者にはどれがおすすめですか?
あと、これって使っても、エラーをとらえきれなくて、
結局生エラーログにしかのってない、っってことも、ありますか?
(どーもいろいろためしてみたら、そのように思えるのですが)
0717nobodyさん
03/06/21 21:28ID:aWFirrKrhttp://mypage.odn.ne.jp/home/dongrico
■ このスレッドは過去ログ倉庫に格納されています