くだすれPerl(超初心者用)2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/03(月) 05:07:32ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。
0456nobodyさん
2008/07/24(木) 19:00:08ID:???だったら出力だけCSVでいいじゃん
0457nobodyさん
2008/07/25(金) 00:26:02ID:???0461nobodyさん
2008/07/27(日) 21:58:36ID:???たとえばグリニッジ標準時をを日本での何年何月何日何時何分何秒に直す方法は
あちこちで見かけます。
逆に何年何月何日何時何分何秒をグリニッジ標準時に
直すにはどんなふうにすればいいんでしょうか?
以前両方の換算をしてくれるサイトがあったと思うのですが、
URLを忘れてしまいました。
0462nobodyさん
2008/07/27(日) 23:58:37ID:???0463nobodyさん
2008/07/29(火) 15:51:40ID:PIvmZbRoどうやったらいいか教えていただけないでしょうか?
正規表現を使うのはわかるのですが、いまいち流れがわかりません
何か参考サイトなどがあると良いのですが・・
0464nobodyさん
2008/07/29(火) 21:15:42ID:???use Text::CSV;
my $csv = Text::CSV->new({ binary => 1 });
my @texlines = ();
while (<>) {
$csv->parse($_) or die $!;
push @texlines, join( ' & ', $csv->fields($_) ) . " \\\\\n";
}
print @texlines;
# よく知らんけどこんな感じでいかがかしら。
0465nobodyさん
2008/07/30(水) 10:48:48ID:???0466nobodyさん
2008/07/30(水) 21:20:36ID:???ってどういう意味
0467nobodyさん
2008/07/30(水) 22:04:23ID:???無効なディレクトリハンドル FILE を readdir() しようとしてコケました。
FILE はまだ開かれていないか、あるいは正しいディレクトリハンドルではないか、もしくは「俺は最初ッから、その FILE って名前が気に入らなかったんだよぉッッ……!」 な可能性があります。
血眼でデバグってください。
0468464
2008/07/30(水) 22:08:18ID:???てふの表て、カラム区切りが "&" で、ライン区切りが "\\" じゃなかったんですか?
実際よく知らないのでこれを機会に教えて星ス。
0469nobodyさん
2008/07/31(木) 03:07:00ID:???掲示板cgiにアクセス解析cgiを組み込みたいと思っています。
そのアクセス解析は本来SSI用で、shtmlから
<!--#include virtual="./accesskaiseki.cgi?id=123456"-->
で呼び出すようになっています。
掲示板cgi内に
require './accesskaiseki.cgi';
と記述すると、とりあえずは動いているのですが、
「id=123456」の部分を送るにはどう記述すればいいんでしょうか?
お恥しい質問ですいません。
0470nobodyさん
2008/07/31(木) 04:27:16ID:???なんでidを送る必要があるの?
0471nobodyさん
2008/07/31(木) 12:30:12ID:uEHg7ipCうまく表示できません。
構文エラーはでませんでした。
どのようにしたいかと言うと入力フォームに何かを書き込むと
投稿者のid(そのサイトに何番目にきたか)と入力したメッセージを順に表示したいのです。
メッセージと番号は他のログファイルに蓄積されていきます。
ログファイルにはメッセージは書き込まれるのですがidは空白になってしまいます;
どなたか教えて頂けないでしょうか?
ファイルはhttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/380.txtです。
初心者なので変なタグを使っているかもしれません;
0472nobodyさん
2008/07/31(木) 12:47:18ID:???この行見ればわかるでしょ
0473nobodyさん
2008/07/31(木) 12:57:37ID:???返信ありがとうございます。
\nが不要でした!直したらできたのですが
ログファイルの中身を表示ができないんですよね;
open(FILE2,"+>>log.dat");
while($line=<FILE2>){
print $line;
}
で表示されないんですよね;
datファイルのパーミッションの問題なのでしょうか?
一応chmod 666 log.datをすると
Operation not permittedとでてしまいます。
0474nobodyさん
2008/07/31(木) 15:19:42ID:???0475nobodyさん
2008/07/31(木) 15:30:28ID:???色々とすみませんでした。
0476nobodyさん
2008/07/31(木) 16:50:00ID:???0478nobodyさん
2008/07/31(木) 17:52:42ID:???これがわからんから答えにくいぞ。
0480nobodyさん
2008/07/31(木) 20:48:05ID:???解決済み
○○○○○○○
○○○○○○○
○○○○○○○
未解決
○○○○○○○
○○○○○○○
○○○○○○○
0481nobodyさん
2008/07/31(木) 21:04:23ID:???○○○○○○○
○○○○○●○
○○○○○○○
未解決
○○○○○○○
○○○○○○○
○○●○○○○
0482nobodyさん
2008/07/31(木) 21:26:52ID:???0483469
2008/07/31(木) 23:25:49ID:???解る方いたら宜しくお願いします。
0484nobodyさん
2008/07/31(木) 23:42:25ID:???0485nobodyさん
2008/07/31(木) 23:47:28ID:???./accesskaiseki.cgi の仕様によります。
閲覧可能なのであれば、同プログラムのソースを読み解いてみましょう。
運が良ければ system("./accesskaiseki.cgi", "id=$page_id") で動作するかもしれません。たぶんしないけど。
独立したスクリプトファイルで、引数が重要な意味を持つものを require するのは大抵得策ではありません。
require はコードを、あなたのスクリプト内に読み込み、あなたのスクリプトの一部分であるかのように実行します。
独立したプログラムを呼ぶなら、代わりに system()、exec()、または `` 演算子を使うとよいでしょう。
それぞれ特徴があり、適切に使い分けるべきものですから、この機会に調べてみてください。
> お恥しい質問ですいません。
ここはくだすれ。気にスンナ。
0486469
2008/08/01(金) 00:25:55ID:???>>485
有難うございます。
今まで基本が無いままに、いくつかのCGIを強引に改造したりして使っていましたが、結局は遠回りしていたように思いました。
もう少し基本的なことから調べてやってみようと思います。
>>485さんの優しいお言葉に感謝します。
0487nobodyさん
2008/08/02(土) 07:23:12ID:q/UXvg4Wいま、以下の記述により、$CがAAAの場合、「これはAAAパターンです」となるようにしてあります。
if ($A ne '' && $B ne '' && $C eq 'AAAA') {
$str = 'これはAAAAパターンです';
}
else {
$str = '';
}
これに付け足して、$CがBBBの場合、「これはBBBパターンです」となるようにしたいのですが、
その場合の記述を教えていただけると助かります。
よろしくお願いいたします。 m(_ _)m
0488nobodyさん
2008/08/02(土) 08:20:01ID:???$str = '';
if ($A ne '' && $B ne '' && ($C eq 'AAAA' || $C eq 'BBB')) {
$str = "これは$Cパターンです";
}
0489nobodyさん
2008/08/02(土) 09:04:49ID:???$str = 'これはAAAAパターンです';
} elsif ($C eq 'BBBB') {
$str = 'これはBBBBパターンです';
} elsif ($C eq 'CCCC') {
$str = 'これはCCCCパターンです';
else {
$str = '(´・ω・`)';
}
0490487
2008/08/02(土) 16:13:10ID:???できました!!
感謝しています(^^)
0492487
2008/08/03(日) 18:35:47ID:???(´・ω・`) は、もちろん使ってません(笑)
0493nobodyさん
2008/08/03(日) 19:26:28ID:???0495困った
2008/08/04(月) 00:04:55ID:???リングワールドっていうPerl言語で出来たブログを使わせてもらっているのですが、
そのブログのタイトル部にフラッシュを表示させたいのですが全くPerl言語が分からないので
やさしい方、教えて下さい。
作成者によると、現在はJPGなど画像表示が出来るようになってますが、フラッシュは無理とのこと。
改造は自由で、個人でしてくださいとの事です。
サイズは幅760ドットというのが前提らしいので、フラッシュもそれに合わせるつもりです。
多分この辺りだと思うのを次レスに書きますが、違う可能性もあるので
ttp://blog-imgs-26.fc2.com/i/k/a/ikajyef/tt.txt
に全文アップしましたので、どうぞよろしくお願いします。
0496困った
2008/08/04(月) 00:05:44ID:???my $title_html;
my $title_description_html;
if ( $title_description ne "" ) {
if ( $title_description ne "" ) {
$title_description_html .=<<HTML;
<div class="title_description">
$title_description
</div>
HTML
}
}
if ($title_image ne "") {
$title_html = <<TITLE;
<div class="title_box"><h1><a href="$config->{'toppage_url'}" class="title"><img src="$image_url/$title_image" border="0" alt="$title_str"></a></h1></div>
TITLE
} else {
$title_html = <<TITLE;
<div class="title_box">
<div style='padding:10px'>
<div class="title_string">
<h1>
<a href="$config->{'toppage_url'}" class="title">
$title_str
</a>
</h1>
</div>
$title_description_html
</div>
</div>
TITLE
0497nobodyさん
2008/08/04(月) 00:12:33ID:???0499nobodyさん
2008/08/04(月) 00:18:17ID:???0500困った
2008/08/04(月) 00:21:26ID:???作者の方に聞いたのですが、「ご自分で研究していただくようにお願いします。」
と、回答がありました・・・が、1から覚える時間が・・まぁ勝手な言い分ですが。
0501nobodyさん
2008/08/04(月) 00:23:48ID:???↑
ここからここまでの間に好きなようにhtml書いてよ。
↓
TITLE
0503困った
2008/08/04(月) 00:34:29ID:???例えばこんな感じになるんでしょうか?
$title_html = <<TITLE;
<P><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="760" height="200">
<PARAM name="MOVIE" value="http://〜〜〜〜.swf">
<PARAM name="PLAY" value="true">
<PARAM name="LOOP" value="true">
<PARAM name="QUALITY" value="high">
<EMBED src="http://〜〜〜〜.swf" width="760" height="200" type="a"></OBJECT></P>
TITLE
0504困った
2008/08/04(月) 02:24:24ID:???$title_html = <<TITLE;
<paramname=quality value=high><param name=bgcolor value=#F7F7F7>
<embed src="http://〜〜〜.swf" quality=high bgcolor=#F7F7F7 width=760 height=150 type="application/x-shockwave-flash" >
</embed>
TITLE
} else {
$title_html = <<TITLE;
<paramname=quality value=high><param name=bgcolor value=#F7F7F7>
<embed src="http://〜〜〜.swf" quality=high bgcolor=#F7F7F7 width=760 height=150 type="application/x-shockwave-flash" >
</embed>
TITLE
よく分からないので合ってても違ってもフラッシュ表示しろ!みたいにしたら出来ました!
ありがとうございました。
0505nobodyさん
2008/08/05(火) 00:04:57ID:???配列の書き方すら変わるそうで
すると、今からperl5のらくだ本とか買うのは無駄かな?
リャマはもう読破したんだが…Effectiveとか、クックブックとか、らくだ本に進んでみたいと思っています
ただ、正直安い本じゃないのでperl6の話を聞き迷っています。
それよりも、いつ出来上がるか分からないperl6の書籍を待つより、perl5のこれらの秀逸な文章を読んでしまった方がいいかな?
0507nobodyさん
2008/08/05(火) 22:10:42ID:???cpan[1]> install Gtk2
CPAN: Storable loaded ok (v2.18)
Going to read /root/.cpan/Metadata
Database was generated on Mon, 04 Aug 2008 19:02:47 GMT
CPAN: YAML loaded ok (v0.66)
Going to read /root/.cpan/build/
............................................................................DONE
Found 24 old builds, restored the state of 24
Running install for module 'Gtk2'
Running make for T/TS/TSCH/Gtk2-1.183.tar.gz
Has already been unwrapped into directory /root/.cpan/build/Gtk2-1.183-N08YV3
-- No Makefile created, won't make
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
0508nobodyさん
2008/08/05(火) 23:23:39ID:???Makefile.PL かなんかあんだろうから、そん中見て、わかんなかったら手で叩いて様子を見てみちゃどうか。
0510508
2008/08/07(木) 00:54:10ID:???>>491 参照。
どうやったらうまくいったね?
原因はなんだったんだろうね?
そういう情報が世界の役に立つのね。
感謝はおいしくいただきたいのね。
0513nobodyさん
2008/08/07(木) 03:09:13ID:???プログラム業界では特に嫌われる罠。まあそれは勝ち組って事だが、他の業界でも大抵そうだから、結局だめな罠。
まあくだ質だから、こういうのも仕方ないかw
0518nobodyさん
2008/08/07(木) 08:12:39ID:???ここ荒らされてもこまるしな
でもオフラインドキュメントにもよさはあるよ。
0519nobodyさん
2008/08/07(木) 09:13:34ID:???0521nobodyさん
2008/08/07(木) 11:02:54ID:???From: [330] デフォルトの名無しさん <sage>
Date: 2008/07/27(日) 00:15:07
>>327
勉強したいなら本ばっか読んでないで
プログラム書けよ
受験勉強じゃねーんだからw
0522nobodyさん
2008/08/07(木) 13:53:58ID:???日本語しか分からないというのなら、らくだ本じゃなくて翻訳ソフトを買うことを推奨する。
EffectivePerlは一通り読む。
クックブックは買って常備する。
Perlの質問の答えは、だいたいPerldocかクックブックのどっちかに載ってる。
0523nobodyさん
2008/08/07(木) 14:11:37ID:???オライリーの「CGIプログラミング」って、初めてのPerl読んだくらいで理解できる?
それとも、続・初めてのPerlくらいの知識が要求されるんだろうか?
0524nobodyさん
2008/08/08(金) 00:32:20ID:???BOOK:
for ( @want_to_read ) {
$book = new Book($_);
$book->read($_);
if ( $book->did_understand() ) {
$book->sale_to('Book-off');
}
else {
push @read_later, $book;
}
next BOOK;
}
0526nobodyさん
2008/08/08(金) 14:27:50ID:???0527nobodyさん
2008/08/08(金) 14:33:01ID:???0528nobodyさん
2008/08/09(土) 22:29:21ID:???Apacheはかんたんにインストールできるけど、これって自分もサーバになるってことでしょ?
セキュリティとかむちゃくちゃ怖くない?
でも設定ファイルとか超難しいし…みんなどうやって勉強したの?
0529nobodyさん
2008/08/09(土) 22:39:09ID:???0530nobodyさん
2008/08/09(土) 22:58:23ID:???そんなに難しいかぁ?
ってか、cgiやhtml的な知識だけでなく、
そうゆうことも含めてテストしたり、調整、制御できるのが、
ローカルサーバー組む利点ではないのかな?
(なにも自鯖で公開するとかって意味ではなくね。)
0531nobodyさん
2008/08/10(日) 00:23:14ID:???とりあえず設定ファイルのアクセス制限を「俺専用」に書き換えるだけの
知識でいいんだからあんまり難しく考えなくていいよ。
よく分からないままいろいろ公開してる人よりは怖がってるぐらいのほうがいいかな。
0533nobodyさん
2008/08/10(日) 20:41:19ID:SuPNfSed$aaaa= とすると、該当する数値が例えば2と5と10のように複数ある場合、
この中で一番大きい数字を $aaaa_maxにしたいのですが、記述を教えてください。
説明が下手で申し訳ないのですが、伝わった方、よろしくお願いします。 m(_ _)m
0534533
2008/08/10(日) 20:48:29ID:SuPNfSed$aaaa_max="$aaaaの中の一番大きい数値";
としたいのです。(^^;
0535nobodyさん
2008/08/10(日) 22:12:07ID:???$aaaa_max=0;
ループ{
$aaaa= ; # $aaaaをひとつ取得する (2,5,10)
if($aaaa>$aaaa_max){
$aaaa_max = $aaaa;
}
}
print $aaaa_max;
・モジュールと配列使うなら
use List::Util qw(max);
@aaaa = (2,5,10);
$aaaa_max = max @aaaa;
print $aaaa_max;
0536nobodyさん
2008/08/11(月) 00:37:27ID:???print $aaaa_max;
$aaaa が複数の値になるらしいからループ案でいいんだろうね。
0537nobodyさん
2008/08/11(月) 06:09:49ID:???0538nobodyさん
2008/08/11(月) 08:45:40ID:???0539nobodyさん
2008/08/11(月) 22:49:56ID:???0540nobodyさん
2008/08/11(月) 23:15:47ID:???0541533
2008/08/12(火) 02:23:53ID:ihBdNY6vなんとか希望通りできました。
感謝してます。
もう一つ教えていただきたいのですが・・
$total_plus = $totalの数値 + $total{'count'}の数値
としたい場合の記述を教えていただけると助かります。
よろしくお願いします。 m(_ _)m
0542nobodyさん
2008/08/12(火) 02:38:17ID:???0543541
2008/08/12(火) 02:56:40ID:???お騒がせしました。
0544nobodyさん
2008/08/12(火) 13:48:33ID:Iypx/LW1行ごとに配列にまとめたいのですがどうしたらいいでしょうか?
よろしくおねがいします。
my($fh,$cond) = @_;
while(<$fh>){
return [
$_,
$fh->eof ? undef : $fh->getline,
$fh->eof ? undef : $fh->getline,
$fh->eof ? undef : $fh->getline,
] if /$cond/;
}
return;
}
0546nobodyさん
2008/08/12(火) 17:06:12ID:???カスタマイズは自分でしてね。
use Data::Dumper ;
my @arr ;
while (<>) {
next if ! /Data/ ;
push @arr, [ $_, map{ eof() ? () : scalar <> ; } 0 .. 2 ] ;
# 一箇所限定なら、以下でも良いんじゃね?
# push @arr, $_, map{ eof() ? () : scalar <> ; } 0 .. 2 ;
# last ;
}
print Dumper \@arr ;
0547nobodyさん
2008/08/12(火) 17:06:58ID:???0548nobodyさん
2008/08/12(火) 17:28:46ID:???0550nobodyさん
2008/08/12(火) 20:56:45ID:???してしまえばヤリたい放題でつ (><;)
0551nobodyさん
2008/08/12(火) 21:51:51ID:???Can't locate File/Slurp.pm in @INC (@INC contains: ><;)
0552nobodyさん
2008/08/12(火) 22:29:55ID:???my @lines = read_file('foooooooooo.txt');
chomp(@lines);
my @list;
foreach(0..$#lines){
$lines[$_] =~ m/hogehoge/ or next;
push(@list, [@lines[$_..$_+3]]);
}
これで、ヤリたい放題になるって本当ですか?
0553nobodyさん
2008/08/13(水) 00:18:01ID:???ヤリたいコトとヤる相手とヤる場所によります。
気取ったイケメンが自宅四畳半なら >>545。
慣れない奴がミラパルコで大回転なら >>546。
絶倫がロイヤルスイートで小さい相手とヤるなら >>552。
それぞれ可能なオプションが異なります。
0554nobodyさん
2008/08/13(水) 07:03:24ID:???■ このスレッドは過去ログ倉庫に格納されています