【Perl 】初心者コーナーPart6
■ このスレッドは過去ログ倉庫に格納されています
0001undefさん
2001/07/26(木) 00:40ID:???尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0748教えてさん
01/08/29 21:14ID:ASEY3DfQ0749725
01/08/30 00:39ID:1xnqMYr2目からうろっこっす!
そんな方法もあるのですね。
0750725
01/08/30 02:34ID:1xnqMYr2local(@pairs) = split(/;/,$cookies);
てな感じでクッキーを分割しようとすると
perl -w でチェックしたとき
Use of uninitialized value in split at toarubbs.cgi line 411.
という警告が出ます。調べてみたのですが、どこが狂っているの
か皆目分かりません。一応通ってはいるみたいなのですが...
ご教授くださいまし。
# これだけの情報では分からないでしょうか?
0751JAPU@うぐぅ
01/08/30 02:38ID:c4jBSiHQ事前に
$cookies = "" if not defined $cookies;
とかしておけば OK かも。:)
# undef と "" は異なります。
0752名無しさん
01/08/30 04:54ID:zTjKOAyE$log ? print LOG <<EOF : print <<EOF;
ヒアドキュメントで…
EOF
0753名無しさん@お腹いっぱい。
01/08/30 05:18ID:7tv.uuPE$log ? print LOG <<EOF : print <<EOF;
ログあり
EOF
ログなし
EOF
# ↓個人的推奨
print length $log ? <<EX : <<NEX;
ログあり
EX
ログなし
NEX
0754752
01/08/30 05:48ID:zTjKOAyE回答の通りやってみたら出来ました。そこまで思い付きませんでした…。
推奨の方を頭に入れます。ありがとうございました。
0755>752
01/08/30 06:20ID:vlPtsTzAselect LOG if $log;
print <<EOF;
....
EOF
select STDOUT if $log;
なんてのもアリですね。
0756725
01/08/30 11:02ID:pcbOuQ4Uうわ、JAPUさんだ、こんにちは。
すみません、前の行で
local($cookies) = $ENV{'HTTP_COOKIE'};
として、環境変数からクッキーを呼び出しています。
これでは$cookiesを定義したことにならないのでしょうか。
JAPUさんの教えてくださった方法でちと試してみます。
ありがとうございました。m(_ _)m
0757名無しさん@お腹いっぱい。
01/08/30 11:08ID:vj7AVUwUlocal が気になる。
0758名無しさん@お腹いっぱい。
01/08/30 11:28ID:zG.eoWl.教えてください。ファイルテストしているところで
opendir(D,$dir)or dir;
$path=readdir(D);
if(-f $path){
処理
}elseif(-d _){
処理
}
の「_」の部分なんですが意味がわからないで教えてください。
本には最後のstatないしlstatの結果を参照って書いてあるんですけど
これってどんな意味なんでしょうか?直前(最後)ファイルテストをした物
と同じって意味でいいんでしょうか?(この場合$pathと同じってこと)
よくわからないので教えてください
0759名無しさん@お腹いっぱい。
01/08/30 11:57ID:3TFNK/cI$pathと同じです。
直前に実行したファイルテスト演算子の結果はキャッシュされるので、
もう一度 (-d $path) とするより効率がよくなります。
0760名無しさん@お腹いっぱい。
01/08/30 12:52ID:psLhnlnEありがとうございます。モヤモヤが解決しました!!
0761名無しさん@お腹いっぱい。
01/08/30 13:00ID:5rfMNbvM『現在の日付』と『入力した日付 例)2000-8-30』を比較し今現在の時間より未来だったら
エラーと表示したいのですが、ソースが全然わかりません。
今日の日付を取得するのはわかるのですが・・・
my ($sec, $min, $hour, $day, $mon, $year, $wdy, $yday, $isdst) = localtime(time);
$year += 1900;
$mon++;
print "ただいま$year年$mon月$day日 $hour時$min分$sec秒\n";
exit;
それと比較する方法がわかりません・・
誰かおしえてよ
0762名無しさん@お腹いっぱい。
01/08/30 13:46ID:9ojiLY2wsub is_future {
my ($b_year, $b_month, $b_day) = split /-/, shift;
require Time::Local;
return time < Time::Local::timelocal(0, 0, 0, $b_day, --$b_month, $b_year -= 1900);
}
foreach my $test_data (qw(
2000-8-30
2001-8-29
2001-8-30
2001-8-31
2001-9-1
)) { print $test_data; print ": エラー" if is_future($test_data); print "\n" }
0763JAPU
01/08/30 13:51ID:c4jBSiHQ変数は
・任意の文字列 (数字としても扱うことができる)
・リファレンス
・未定義 (undef)
のどれかをとる (他にあったっけ? 識者の補足をきぼーん) ので、
local($cookies) = $ENV{'HTTP_COOKIE'};
としても、$ENV{HTTP_COOKIE} が undef なら何もしない限り $cookies も undef なのです。
この場合は、
my $cookies = $ENV{HTTP_COOKIE} || "";
とするのがよいかな。
# 既に指摘がある通り、変数は可能な限り my で宣言するのが吉なりよ。
----
($iyear, $imon, $imday) = split /-/, $input_date;
$input_date = sprintf "%04d-%04d-%04d", $iyear, $imon, $imday;
$system_date = sprintf "%04d-%04d-%04d", $year, $mon, $day;
if($system_date lt $input_date) {
print "はにゃーん エラー\n";
}
0764T女の竹田
01/08/30 15:03ID:UDHJh.zA抜き出して、それからぜんぶUnicode(BE)に変換しようとしたんだけど、いい方法ないかなぁ?
$text =~ s/?(\d+);/pack('n',$1);/seg;
$text =~ s/[\x20-\x7e]/\0$&/sg;
最初↑みたいにしてやったら化けまくって、で中を見て「あ〜ばかじゃん」
と思って上下の文を逆にしてみると…さらに大惨事に…(当たり前)
工夫すればできるとは思うけど、「この正規表現で一発!」みたいなの
ないですか?
0765T女の竹田
01/08/30 15:10ID:UDHJh.zA?(\d+)
は
&#(\d+)
です。。
0766752
01/08/30 16:56ID:FHx3lziUわあ…。
selectの使い方、とても参考になりました。
嬉しい。遅くなりましたけど、ありがとうございます。
0767名無しさん@お腹いっぱい。
01/08/30 18:02ID:KPteR7z.掲示板を作ってるんですけど、ログファイル(bbslog.datとかuser.datとか)のファイルに
ブラウザから直接アクセス出来ないようにしたいんですけど、
みなさんどういう方法をとっていらっしゃいますか?
自分の貧困な発想で思いついたのは、ログファイルの拡張子を『cgi』にして、
Permission Deniedさせてしまうぐらいしか思いつかなかったんです(;_;)
0768名無しさん@お腹いっぱい。
01/08/30 18:30ID:E9M3DAmo0769名無しさん@お腹いっぱい。
01/08/30 18:32ID:pomXMsVA>>767
それで良いと思うよ。でもそれはスクリプト側でする事じゃ無いんで
考えなくてOK、public_htmlの外に置くとかhtaccess置くとか
デフォルトの名前を変える様にユーザーに呼びかけましょう。
それがやり易い様に変数の中に入れておくと親切かも。。。
0770名無しさん@お腹いっぱい。
01/08/30 19:08ID:U7WzvMDs例)http://corn.2ch.net/php/index2.htm?hogehoge=sage&....
@referer_box = split /?/,$ENV{'HTTP_REFERER'};
0771767
01/08/30 19:41ID:KPteR7z.自分でも、他のディレクトリにシンボリックリンク 貼って
そこにデータ置いたりとかいろいろ四苦八苦してたんですけど、
そのやり方だと他の人に渡したときに、動かせないかもしれないので、
ここで質問させて戴いたしだいです。
やっぱり、拡張子をcgiにする方式でやってみます。
ただ、この方式だと下の問題点の方が残ってしまうんですよね。
改善される問題:ログファイル(パスワードを含む物など)を読まれる危険性がなくなる。
残っている問題:ブラウザからログファイルに直接に何度もアクセスをかけられると、
ファイルロックされていないので、書き込みがミスってしまう。
ログファイルの名前がユーザーにばれる事は掲示板の弱点として、割り切るしか無いんでしょうか(;_;)
うぅ、長くなってごめんなさい。別に粘着レスでは無いんですー(;_;)
0772名無しさん@お腹いっぱい。
01/08/30 20:06ID:TttdmJZYprint { $foo ? *STDOUT : *STDERR } "HOGE\n";
っても使えるよ。
>>T女たん
perldoc -f packを見れば良いのでわ(折れは英語ダメだけど
pack 'u'とか(?)
0773名無しさん@お腹いっぱい。
01/08/30 20:13ID:pomXMsVA後はアクセス制限掛けるなりしてもらうしかないよ
cgi-bin以下の.cgi以外はwww権限で読めないサーバーとかも有るけど。。
.hthogehogeとかやっとくと結構色んなサーバーで行けそう
0774725(=756)
01/08/30 21:24ID:ytEa/Jb2いやぁ、勉強になります。
みなさんおっしゃっているように、local -> myにかえてみようと
思います。いろいろありがとうございました。
0775T女の竹田
01/08/30 21:54ID:FAiia3.6追加していって普通に?やりました。
最初からこうしてたらよかったかも。。こういうのって「正規表現でできるはず!!」って
思いこんでたけど、結局正規表現じゃ無理なのかな?
0776名無しさん@お腹いっぱい。
01/08/31 01:18ID:0YV4ebqcLWP::UserAgent をつかって、クッキーを受け取って、
次のリクエストでそのクッキーをちゃんと返してやるってのをやってるんですが、
受け取るまでは、出来たのですが、ちゃんと返すことが出来ません。
どうすればいいでしょうか?
cookie.txtには、ちゃんと情報は保存されています。
#!/usr/bin/perl
use LWP::UserAgent;
require HTTP::Cookies;
my $ua = LWP::UserAgent->new(cookie_jar => 1,);
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$ua->cookie_jar(HTTP::Cookies->new(file => "./cookie.txt",AutoSave => 1,));
$target = 'http://www.foo.ne.jp/';
my $req = HTTP::Request->new(GET => "$target");
$res = $ua->request($req);
if ($res->is_success) {
print $res->content;
} else {
print $res->status_line;
}
0777名無しさん@お腹いっぱい。
01/08/31 02:22ID:15D5/wj6みなさん、ログファイルに記録するのにデリミタは何にしてますか?
おいらは、\376で区切ってます。
0778名無しさん@お腹いっぱい。
01/08/31 02:43ID:f1g.yh7k0779名無しさん@お腹いっぱい。
01/08/31 02:47ID:15D5/wj6lftp
0780JAPU@腰が痛い...
01/08/31 06:33ID:hOKxRgGgUnicode は良く分からないので具体的な変換処理は書きませんが。
s{(?:\&\#(\d+);|([\x20-\x7e])|(.))}{
if(defined $1) {
"[$1]";
} elsif(defined $2) {
"<$2>";
} else {
"($3)";
}
}seg;
----
私は less などで見やすいように、コンマかタブで区切っています。
0781名無しさん@お腹いっぱい。
01/08/31 11:23ID:NujA9c4g書いたんですが意味がこんがらがって分からなくなってしまいました。
if($host !=~ /$basename/)の!=の部分なんですがこの場合
「$hostに$basenameがなければ真を返す」って意味ですよね?
そしたらif($host !~ /$basename/)も同じ意味ですよね?
でもプログラムを走らせると「!=~」は真を返して[!~]は偽を
返してくれるんですが・・・・頭が混乱してきた。。教えてください。
0782名無しさん@お腹いっぱい。
01/08/31 12:00ID:pfDOYTd.まず、!=~ という演算子はありません。
$host !=~ /$basename/ がどう解釈されるかというと、
$host != ( ~/$basename/ )
という感じです。
で( ~/$basename/ )では、まず /$basename/ を、
$_にマッチさせる正規表現と解釈します。
たぶんそれで0が帰ってそれが ~ 演算子に渡されます。
~0 は 4294967295 ですので、この時点で、
($host != 4294967295) という感じになります。
もちろん、$host は 4294967295 じゃないでしょうから
全体として真が返ってきます。
ちなみに、
$host !~ /$basename/ と同義なのは、
!($host =~ /$basename/) です。
こういう間違いは -w オプションで perl を実行することで
簡単に見つけられますよ。
0783782
01/08/31 12:04ID:pfDOYTd.0784781
01/08/31 13:30ID:gxfm2mi2ありがとうございます。わかりました。。「-w」つけたら一発でエラーが
でてきてわかりました。。説明ありがとうございました。
0785T女の竹田
01/08/31 13:35ID:4Heibaukうまくいきました!ありがとうございます。
↓こんな感じです。
$text =~ s{(\&\#(\d+);)|([\x0-\x7e])|(.)}{
if(defined $1) {
pack('n',$2);
} elsif(defined $3) {
"\0$3";
} else {
'';
}
}seg;
0786725
01/09/01 00:51ID:u.d.epncそしたら、jcode.plで、
&jcode'convert(*send_msg_body,'jis');
#$send_msg_bodyはローカル変数として、my で宣言しています。
のようなコンバートができなくなってしまいました....。
どうすれば、ちゃんと変換できるようになるのでしょう。
ホントに厨な質問でスミマセン。
0787725
01/09/01 01:02ID:u.d.epncjcode::convert(\$send_msg_body,'jis');
でOKなのでしょうか...
0788名無しさん@お腹いっぱい。
01/09/01 01:02ID:3b6idtJ.0789名無しさん@お腹いっぱい。
01/09/01 01:03ID:3b6idtJ.それでOKです。
0790725
01/09/01 01:31ID:u.d.epncありがとうございました。
今使っているjcode.plのドキュメントには載っていなかった
のですが、最新版のjcode.plに使い方が書いてありました。
0791、
01/09/02 05:33ID:4hoKlkq6飛び出すようにするには如何したらいいのでしょうか?
0792名無しさん@お腹いっぱい。
01/09/02 05:48ID:/fL4q/kI豆腐を喉に詰まらせて氏ね
0793はじめたばかり
01/09/02 09:01ID:T1M6nn4Mいまテキストカウンターを作っていて、なんとか作ることができたの
ですが、ファイルを2つに分けて1つのファイルがロックされているときは
もう1つのファイルに書き込みという形にして、同時アクセスでファイルの破損を
防ぐと同時にカウント漏れを防ぐようなカウンターをつくりたいのですが
1つのファイルがロックされているときにもう1つのファイルの方にカウントを
増やすようにするにはどの関数をつかえばよいのでしょうか?
まだはじめたばかりであまりよくわかりません。自分的にはfor文かと思ったのですが
どうも違うような気がします。
もしよろしければ皆さんの知恵を借りられればと思います。
お願いします。
0794名無しさん@お腹いっぱい。
01/09/02 10:07ID:/vkcvuzE基本がなってない。
ここでコードを書くのは簡単だが理解せずに使っても意味がなかろう。
とりあえず参考書籍スレで評判の良い本を買うのをすすめる。
0795名無しさん@お腹いっぱい。
01/09/02 14:18ID:TsnMUyQQファイルの数を好きに設定できるようにすると耐久度が増しますね。
がんばってください。 うまくいけば絶対に破損しないロック方式になります。
0796名無しさん@お腹いっぱい。
01/09/02 15:29ID:lAk/mI7A0797名無しさん@お腹いっぱい。
01/09/02 15:43ID:3zvuzTqoなつかしー
うけた!
0798名無しさん@お腹いっぱい。
01/09/02 17:49ID:EuE1F3p.0799名無しさん@お腹いっぱい。
01/09/02 18:04ID:YqVc4g/kでHTMLを書き出し、HTML中で外部のjavascriptや、CSSファイルを使いたいのですが、
読んでくれません。
print "<STYLE TYPE=\"text/css\">\n<!--\n";
open(IN, "***.css");
print while (<IN>);
close(IN);
print "\n//-->\n</style>\n";
こうするしかありませんか?
とほほのperl入門はよく読んだのですが、特にこれに関係しそうなことは
書いてありませんでした。
よろしくお願いします。
0800名無しさん@お腹いっぱい。
01/09/02 18:14ID:79Ih1PPkprint "<LINK rel=\"stylesheet\" href=\"./base.css\" type=\"text/css\" media=\"screen\">";
これでいいじゃん
0801名無しさん@お腹いっぱい。
01/09/02 18:23ID:YqVc4g/kありがとうございました。
CSSのほうは読んでくれました。
でもまだjavascriptのほうが動きません。
<script language=\"JavaScript\" src=\"***.js\">
</script>\n"
これではまずいでしょうか?
0802名無しさん@お腹いっぱい。
01/09/02 18:28ID:H3IIufEo板違いカエレ!
http://tohoho.wakusei.ne.jp/js/write.htm#jsfile
0803名無しさん@お腹いっぱい。
01/09/02 18:37ID:YqVc4g/klanguage=\"javascript\"が悪かったみたいですね。
これが書いてあっても、CGIで書いたのではないHTMLでは
ちゃんと参照してくれるんですよ。
帰れといいつつ、javascript質問スレではなく、目的のページにリンク
してくれていて、親切ですね。ありがとう。
0804名無しさん@XEmacs
01/09/02 23:20ID:.hTQgQWMuse DBI;
use strict;
use CGI;
use Date::Calc qw(Today Add_Delta_Days);
#パスの設定
my $nkf = '/usr/local/bin/nkf';
#オブジェクトの生成
my $q = new CGI;
#出力文字コードの設定
open HTML, "|$nkf -s";
select(HTML);
$|=1;
#html表示
print $q->header(-expire=>'now');
print $q->start_html(-title=>'bbs',-bgcolor=>'#DDDDDD');
print "掲示版";
print $q->hr;
print $q->start_form(-method=>'POST',-action=>'./bbs2.cgi');
print $q->textarea(-name=>'msg',
-rows=>3,
-column=>16);
print "<br>\n";
print $q->submit(-name=>'submit',-value=>'submit');
print $q->end_form;
print $q->end_html;
close(HTML);
0805名無しさん@XEmacs
01/09/02 23:24ID:.hTQgQWM日本語で掲示版とブラウザ表示しようとすると
internal server erorがおきます。
perl -c bbs2.cgi
では、
Global symbol "$B7G" requires explicit package name at bbs2.cgi line 22.
bbs2.cgi had compilation errors.
といわれるので、文字コードがおかしいみたいなんですが、
どうしたらなおりますか?
0806名無しさん@XEmacs
01/09/02 23:25ID:.hTQgQWMパソコンのブラウザで表示しようとするときに起こるエラーです。
i-modeはためしてません。
0807名無しさん@XEmacs
01/09/02 23:33ID:.hTQgQWMopen HTML, "|$nkf -e";
としても結果は同じです。
0808名無しさん@お腹いっぱい。
01/09/02 23:34ID:q3o1psmo@@ -19,7 +19,7 @@
#html表示
print $q->header(-expire=>'now');
print $q->start_html(-title=>'bbs',-bgcolor=>'#DDDDDD');
-print "掲示版";
+print '掲示版';
print $q->hr;
print $q->start_form(-method=>'POST',-action=>'./bbs2.cgi');
print $q->textarea(-name=>'msg',
0809名無しさん@XEmacs
01/09/02 23:37ID:.hTQgQWM0810初心者2号
01/09/02 23:40ID:rbOW5x.6がいしゅつかもしれませんが、教えてください
入力フォームで電話番号など半角数字の入力のみに限定させたいのですが、
どうしたらいいでしょうか?
0811名無しさん@お腹いっぱい。
01/09/02 23:42ID:H3IIufEoif($tel =~ /\D/){&error('半角数字のみです');}
0812名無しさん@お腹いっぱい。
01/09/02 23:52ID:q3o1psmo多分元のスクリプトは JIS Code で書いているかと思うのですが
問題なのは「掲示板」という文字列がバイト列としてどう表現
されているかという事です
> echo '掲示版' | nkf -j | hd
とかすれば分るかもしれませんが, 「掲示板」をバイト列レベルで見ると
$B7G と見なせる部分が含まれるので " で囲まれてると変数を展開しようとして
エラーになります
別解として元のスクリプトを EUC に変換しても大丈夫だと思います
0813名無しさん@お腹いっぱい。
01/09/03 01:42ID:3oz.BmnQ$line =~ s/,/<>;/g;
$line =~ s/<b>//g;
$line =~ s/</b>//g;
をして、外部へのリンクは<a>タグを外して
自スレリンクの<a href="http://saki.2ch.net/test/read.cgi?bbs=
ana&key=988911584&st=7&to=7&nofirst=true" target="_blank">
を<a href="../test/read.cgi?bbs=
ana&key=988911584&st=7&to=7&nofirst=true" target="_blank">
という風にしたいです
どのように書けばよいでしょうか
0814名無しさん@お腹いっぱい。
01/09/03 01:49ID:W9dhAgAc$line =~ s/<a href="http:\/\/saki\.2ch\.net/../g;
$line =~ s/<a href="http.*?">//g;
とここまで考えて</a>の削除を忘れてたことに気付いた。
スマン。
0815814
01/09/03 02:02ID:W9dhAgAcしかも間違えてるし・・・。
$line =~ s/<a href="http:\/\/saki\.2ch\.net/<a href="../g;
$line =~ s/<a href="http.*?">//g;
0816pp
01/09/03 05:49ID:LMjVYZAM0817test
01/09/03 06:55ID:EfBvrGB.0818813
01/09/03 22:38ID:XIk6iDJI$url=$1;
$lines[$i] =~ s/<a href="http.*?<\/a>/$url/g;
解決しました
0819名無しさん@お腹いっぱい。
01/09/04 01:34ID:jaQVJtkgファイル取得部分は人様のものやこちらのスレッドなどを参考にしてなんとか出来たのですが、
もし(たとえば hoge.html)をすでに取得していた場合
旧hoge.html→hoge.html.1
とりネームする、しかし hoge.html.1 がすでにある場合は hoge.html.2 にする
その後どんどん、.3 , .4 , .5 と増やしていく
という処理をしたいのですが書き方がわかりません
やりたいことはもし更新されていても消さずに残しておきたい、ということです
教えていただけるとうれしいです
#!/usr/bin/perl
use strict;
use constant BACKUP_LIMIT => 5;
use constant FILE_NO_SEPARATOR => '.';
my $html_file = 'hoge.html';
my $received_htmlstr = '<!DOCTYPE html ...';
if (-e $html_file) {
my $oldest = join(FILE_NO_SEPARATOR, $html_file => BACKUP_LIMIT);
unlink $oldest if -e $oldest;
for (my $i = BACKUP_LIMIT-1; $i>0; --$i) {
my ($before, $after) = map join(FILE_NO_SEPARATOR, $html_file => $_), $i, $i+1;
next if not -e $before;
rename $before => $after;
}
rename $html_file => "$html_file.1";
}
use IO::File;
IO::File->new($html_file, 'w')->print($received_htmlstr);
__END__
#!/usr/bin/perl
use strict;
use constant FILE_NO_SEPARATOR => '.';
my $html_file = 'hoge.html';
my $received_htmlstr = '<!DOCTYPE html ...';
sub max { my $max = shift;
foreach (@_) {
$max = $_ if $max < $_;
}
return $max;
}
if (-e $html_file) {
my $file_format = qr/^\Q$html_file\E\.([1-9]\d*)$/;
require IO::Dir;
my $max_idx = max map { /$file_format/o; $1 } grep /$file_format/o, IO::Dir->new('.')->read;
for (my $i = $max_idx; $i>0; --$i) {
my ($before, $after) = map join(FILE_NO_SEPARATOR, $html_file => $_), $i, $i+1;
next if not -e $before;
rename $before => $after;
}
rename $html_file => "$html_file.1";
}
use IO::File;
IO::File->new($html_file, 'w')->print($received_htmlstr);
__END__
0822820,821
01/09/04 03:31ID:uLaYbm/k0823819
01/09/04 03:41ID:jaQVJtkgさっそくレスいただいて恐縮です
わかりやすく教えていただいてうれしいです ありがとうございました
>名前欄に #1, #2 と入れたら妙な文字が出てしまった。なんだろ?
----------------
1 名前:ひろゆき ◆NdKrQ0UM 投稿日:2001/08/09(木) 16:26 ID:OLqDn5LQ
というわけで、名前欄に#をいれて適当な文字列を入れると、
ひとりキャップが使える機能を足してみました。
ほえほえ#password
って感じです。
4 名前:ひろゆき ◆NdKrQ0UM 投稿日:2001/08/09(木) 16:32 ID:OLqDn5LQ
キャップがなくても、本人であるという証明になりますです。
----------------
という機能らしいです
ひとりキャップ 略して 「トリップ」と呼ばれているようです
0824pp
01/09/04 04:11ID:BE/ASauk今、Active Perlをインストールして
早速拡張子.plにして、いろいろやろうかと
思っていたのですが、.plをダブルクリックすると
コマンド画面が出てきて、すぐに消えてしまいます。
これはなぜでしょうか?
問題無くインストールしたのですが・・・
0825名無しさん@お腹いっぱい。
01/09/04 04:55ID:oDOAY7oIMS-DOSプロンプト開いて、コマンドラインで
perl hoge.pl
とか打つべし
0826pp
01/09/04 05:08ID:BE/ASaukわざわざレスどうもです。
コマンドまたはファイル名が違います
と、なってしまいます。
0827825
01/09/04 05:17ID:oDOAY7oIそれperl.exeにパスが通ってないと思うんだけど
もしかしてpathの設定方法とか知らなかったりする?
だとすると説明が面倒なんで俺はパス(←笑うところ)
0828pp
01/09/04 05:21ID:BE/ASaukpathの設定方法知らなかったりします。
取り敢えず、検索してみます。
わざわざ有難う御座います。
0829結城杏奈
01/09/04 08:43ID:WtCIi7QQファイルをおコピーしたいんですけど出来るだけシステム依存
したくないのですわ。
`cp hoge hoe`なんてやるとゲイシなPCだとおキック喰らっちゃって
大変ですわよ
システムコールせずにファイルコピーする関数なんていうのは
ありませんかしら?
open (IN,"<hoge");
open (OUT,">hoe");
while (<IN>){
print OUT $_;
}
これってなんだか田舎娘みたいでとってもアンニュイですの。。。。
0830名無しさん@お腹いっぱい。
01/09/04 08:56ID:MBD3zVhIネカマは死んで。
0831名無しさん@お腹いっぱい。
01/09/04 08:58ID:btJZCxgM0832名無しさん@お腹いっぱい。
01/09/04 09:02ID:SH4sstc2use File::Copy;
copy("hoge", "hoe");
そのソース見ると、最初にシステム見分けてから、
それぞれ最適な関数(もちシステム依存ばりばり)を
呼び出してるつうしろものでっせ。
都会派のネカマちゃんにはお気に召さんかもな。
0833pp
01/09/04 09:04ID:BE/ASaukhello.pl をダブルクリックで
DOS窓起動→hoge.plが起動→hoge.pl終了→DOS窓終了→一瞬で窓閉じる
ってのはどうやったら、直るのでしょうか?
MS-DOSプロンプトのプロパティの
プログラム終了時にウィンドウを閉じる
のチェックは外しているのですが・・・
0834結城杏奈
01/09/04 09:58ID:WtCIi7QQ>>831 (ぽっ
>>832
ありがとうですの、なるべくシステムコールしない
&&標準モジュールをつかうなら田舎娘の出番になるのね
なんて中途半端なのかしら! やですわ
病的折衷主義のガラクタ出力機ですわ
でもそんなperlちゃんが楽しいですの。
かさねがさね感謝ですわ。
>>833
その問題はわたくしが通うバッキンガム高校のBBSでも
いつも書き込まれてますのよ。
わたくしは NTりすと ですけどDOSでの移動が面倒でしたら
さぎょうフォルダのうえで
explorerから右クリックでコマンドプロンプトを開く
と言うのはいかがかしら? 窓の手なんかにそう言う設定
があったとおもいますのよ。
あとはDOSのヒストリ機能なんてのを使うとちょっと便利ですわ
一度dirとかにゅうりょくした後にF1を押していくとよいですの
doskeyなんて検索すると、もうちょと便利かもですわ
0835名無しさん@お腹いっぱい。
01/09/04 17:52ID:cTMkgC.w現在LinuxMLD5でperlをやっているのですが
最初の行にちゃんとした#!/usr/bin/perlといれているのですが
うまく実行されません。
which perlとかでやってもちゃんとあってるし、perl -vとかでも
インストールされていることが確認できます。
今はしかたなく実行前にプログラムの前にperlといれてやっていますが
面倒で仕方ありません。
これってどうやったら動作するのでしょうか?動かない原因が特定できません。
どなたか助けてください。
0836名無しさん@お腹いっぱい。
01/09/04 18:02ID:LkqU29Ks0837_gunzip
01/09/04 18:31ID:E8XEZJvU./script_name.pl
^^
0838名無しさん@お腹いっぱい。
01/09/04 20:31ID:FOQJEj12>>835
同じく chmod 755 ./scriput_name.pl
0839名無しさん@お腹いっぱい。
01/09/04 20:33ID:FOQJEj12Rubbish Lister か。。。 sage
0840835
01/09/04 21:50ID:2Iq0qb32だめでした。
777でもだめでした。
何が原因なのでしょうか?
0841名無しさん@お腹いっぱい。
01/09/04 22:05ID:FOQJEj12#!/usr/local/bin/perl --
↑ 一行目こうしたらどうなる?
0842名無しさん@お腹いっぱい。
01/09/04 22:50ID:cFEUOiVA0843p
01/09/05 04:33ID:sTSRf1BY↑すいませんがどう言う意味か教えて下さい。
0844名無しさん@お腹いっぱい。
01/09/05 05:10ID:L1KgWH9s「"\N"の後にあるべきブレース記号が書いてねーぞ」と言われておる。
\N{hoge}はギリシャ文字なんかを出すためのエスケープシーケンスらしい。
詳しくはperldoc charnameを参照。
ていうかそんなもん使ってんの?"\n"のタイプミス?
0845p
01/09/05 06:07ID:sTSRf1BY申し訳ないです。解決しました。
わざわざレスどうもです。
0846名無しさん@お腹いっぱい。
01/09/05 10:21ID:.KHO7txoどう解決したか書かんかい(*゚Д゚)ゴルァ!
0847名無しさん@お腹いっぱい。
01/09/05 11:37ID:wcZpsAAM■ このスレッドは過去ログ倉庫に格納されています