くだすれPerl(超初心者用)
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/10(日) 13:33:48ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。
0654nobodyさん
2008/01/04(金) 20:38:02ID:???「Perlは時代遅れだ。」という書き込みを読んでちょっと不安になったのですが、
Perlは本当に時代遅れなのでしょうか?
レンタルサーバのサービスでは、低価格でもPerlは確実にサポートしているので、
システムを組む時や、別のサーバにシステムを移項するのには非常に
やりやすいものであります。
COBOLがすたれたのは、Excelが出たからというのが一つの要因ですが、
私には、PerlにとってのExcelにあたるものが見当たりません。
なので、PerlはWebプログラミングとしては、まだまだ十分に
活用できる言語だと思っています。
もし、本当にPerlが時代遅れだとすると、PHPやJavaが特有で持っている機能が
必須となるわけですが、それらは具体的にどういう機能なのでしょうか。
よろしくお願い致します。
0655nobodyさん
2008/01/04(金) 22:34:46ID:zn9OWNdo>>652じゃないけど
プロトタイプでできるよ
sub hoge ($@) {
my $foo = shift;
my @bar = @_;
}
hoge($foo,@bar);
たぶんこんな感じだと思う
普通に配列を後で渡せば受け取れるけどね。
$_[0]をshiftしちゃえば同じ事だと理解できればぉk
0656nobodyさん
2008/01/04(金) 22:39:39ID:zn9OWNdoPHPに出来てPerlに出来ない事は無い。
たとえばPHPならDBとの連係が良いとか。
でも、web専門だったり。
javaは規模や対象から違う。
要は目指す所の違いだと思う。
Perlが汚いと思うならRubyやPythonをやれば良い
0657nobodyさん
2008/01/05(土) 01:11:38ID:???0658654
2008/01/05(土) 02:15:25ID:???>>657
ご回答ありがとうございます。
目指すところの違いがあるんですね。
アンチは具体例を出さずにすぐに一般化して
否定しますしね。
安心しました。ありがとうございます。
0659649
2008/01/05(土) 14:25:20ID:???レスありがとうございます。プロトタイプ使えばよさそうですね。
こちらでいくらかプログラムを書いてみたのですが、配列は
必ずあとじゃないとダメみたいですね。
FuncA($@) これだと動くのですが、 FuncA(@$) これだとダメでした。
0660nobodyさん
2008/01/05(土) 18:18:51ID:???ナビゲーションバーが<li>タグで
フォームがテーブルタグで囲む形で
出力されるテンプレートエンジン。
これは今風ではないでしょうか?
出力されたHtmlを読むと可読性が良さそうなので
これで行こうと思っています。用途はテンプレート
エンジンの勉強がてら簡易wikiでも自作してみよう
と思ってます。どうぞよろしくお願い致しますm(__)m
0661nobodyさん
2008/01/06(日) 01:12:32ID:4ZDHflzTcygwinからActivePerlを使っているのですが、
$ perltidy
としてもcommand not found になります。
どうしたわけでしょう。
cygwin用のperltidyもあるときき、Cygwinからもcpan Perl::Tidyで入れてみましたが、
依然として
$ perltidy
command not found
です。アドバイスください。ヒントでもいいのでお願いします。
0662nobodyさん
2008/01/06(日) 05:36:20ID:???通ってないだけだったと思うけど。
0664nobodyさん
2008/01/06(日) 13:57:41ID:4ZDHflzTうまくいきました。ありがとうございます。
0665nobodyさん
2008/01/06(日) 15:48:56ID:srAiPMxF呼び出し側
p_html_kotaivew_kekkawrite
($name, @status, $ks, @han1, @han2, @sta1, @sta2);
関数側
sub p_html_kotaivew_kekkawrite{
local($name, @status, $ks, @han1, @han2, @sta1, @sta2) = @_;
〜〜以下略
このような感じにやると、渡した$name以降の配列がすべて@statusに格納されてしまいます。
アドバイスお願いします
0666nobodyさん
2008/01/06(日) 16:21:21ID:???0667nobodyさん
2008/01/06(日) 16:47:29ID:XbpFSz7Rリファレンス渡しをしてみましたが、やはり@statusに以降の配列がすべて格納されてしまいます。
0668nobodyさん
2008/01/06(日) 17:03:52ID:???p_html_kotaivew_kekkawrite
($name, \@status, $ks, \@han1, \@han2, \@sta1, \@sta2);
sub p_html_kotaivew_kekkawrite{
local $name = @_[0];
local @status = @{$_[1]};
local $ks = @_[2];
local @han1 = @{$_[3]};
local @han2 = @{$_[4]};
}
local @sta1 = @{$_[5]};
local @sta2 = @{$_[6]};
}
0671nobodyさん
2008/01/06(日) 19:10:38ID:???他の言語を先にやったものだと違和感を感じるものだが、perlの場合は、
関数は、スカラを先に書いて、配列を後に書いた方がいいというルールが
あるようだ。
0672nobodyさん
2008/01/06(日) 19:20:03ID:???0673nobodyさん
2008/01/06(日) 19:21:39ID:???Perlで検索結果一覧を出すまでや、ファイルへ書き込みをした場合に
要した時間を計り、表示させたいのですが、どのような関数を
使用したらよろしいのでしょうか。
0674nobodyさん
2008/01/06(日) 19:50:13ID:???my $t = time;
〜 #計測したい処理
my $t2 = time;
my $sec = $2 - $1;
print "$sec秒だったです";
0675nobodyさん
2008/01/06(日) 19:51:41ID:???× my $sec = $2 -$1;
○ my $sec = $t2 - $t1;
0677nobodyさん
2008/01/06(日) 20:17:39ID:???含まれているかをチェックするcgiサイトがありますが、
あれはどういう原理で動いているのでしょうか。
自分のサーバとは別の、他のサイトのhtmlファイルを読み込むという事は、
perlのopenでは出来ませんよね?
0678nobodyさん
2008/01/06(日) 20:38:06ID:???0679nobodyさん
2008/01/06(日) 22:14:19ID:???こちらで質問させていただきます。
配列の1つの要素への処理の記述方法についてです。
以下のコードを記述しておいて、それに続くものです。
@a = ( "a1", "a2" , "a3" );
記述1:$a[1] = "b2";
記述2:@a[1] = "b2";
どちらの記述でも、思うように動作しているので、問題なさそうなのですが、
処理速度や、内部的な動きなどからいってこっちの記述が良いというものや、
多くの人のコーディングはこちらが多いから、などというものはあるの
でしょうか。
0680nobodyさん
2008/01/06(日) 22:15:19ID:???0681nobodyさん
2008/01/06(日) 22:30:21ID:???ブラウザで開こうとするとエディタが開いてしまいます。
どうすればいいですか?
0683nobodyさん
2008/01/06(日) 23:12:15ID:???必要な環境整えてる?
Windowsならば、ActivePerlとApacheをいれて設定するとか、
設定したフォルダにcgiファイルをおいてるかとか。
0684nobodyさん
2008/01/06(日) 23:28:59ID:???ApacheもActivePerlも入ってます。
ブラウザで開こうとするとエディタに実行結果が返ってきてるので
フォルダ等も大丈夫だと思います。
0685nobodyさん
2008/01/06(日) 23:31:53ID:???0686nobodyさん
2008/01/06(日) 23:37:38ID:???#! c:/perl/bin/perl
print "Content-type: text/plain\n\n";
print "Hello Perl !";
を1-1cgiとしてhtdocs/rensyuに保存してブラウザでhttp://127.0.0.1/rensyu/1-1.cgiを使って実行すると
ファイルをダウンロードしてエディタが開いて実行結果が返ってきてるんですよね
0687nobodyさん
2008/01/06(日) 23:39:11ID:???0688nobodyさん
2008/01/06(日) 23:43:00ID:???httpd.conf の設定は確認してる?
参考にとほほのサイト紹介しておきます。
ttp://www.tohoho-web.com/wwwxx048.htm
0689nobodyさん
2008/01/06(日) 23:49:36ID:???0690nobodyさん
2008/01/07(月) 00:02:41ID:???参考にしてる本がhtdocsだったんですよね
>>688
設定確認しましたが、大丈夫だと思います。
ちょっと試してみたんですが、
#! c:/perl/bin/perl
# CGIヘッダーの出力
print "Content-type: text/html\n\n";
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>こんにちは。これはHTML文書の例です。</p></body>\n";
print "</html>";
だとブラウザに出力されました
もうわけが分かりません
>>689
ソースはテキストどおりなんですよね
0691nobodyさん
2008/01/07(月) 00:23:35ID:???ブラウザの設定でtext/plainはエディタで開くようになってるんでしょ
0692nobodyさん
2008/01/07(月) 00:41:55ID:???explorerの関連付けはずしたら正常になった
0693nobodyさん
2008/01/07(月) 00:56:15ID:???ブラウザの設定なんですかね?
ブラウザに関連付けしてみたらブラクラみたいになったんですが、
どういう設定をいじればいいんですか?
>>692
.cgiへの関連付けを削除してみたら
ブラウザから開こうとしたら
このファイルを保存しますか、または開くためのプログラムをオンラインで検索しますか?と
でてきました。
よければ現状、何に関連付けされてるか教えてもらえないですか?
0694nobodyさん
2008/01/07(月) 01:06:33ID:???どうしてもhtdocs内で実行させたいなら
<Directory ******/htdocs>
Options ExecCGI
</Directory>
みたいにExecCGI追加して
AddHandler cgi-script .cgi
みたいに設定ファイル(httpd.conf)を書き換えて再起動して味噌
0695nobodyさん
2008/01/07(月) 01:14:15ID:???まったく関連付けなし。
ってか>>688のサイトにあった、>>694の設定をしたら
関連付けしても普通に動くようになったぞ
0696nobodyさん
2008/01/07(月) 01:17:32ID:???関連付けはいじらずにtext/htmlで書き出せばどうだい
あと関連付けするのはcgiじゃなくてtxtだと思う
0697nobodyさん
2008/01/07(月) 01:39:40ID:???Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
を付け加えてもダメでした・・・
エディタは開かなくなったんですが、一瞬プロンプトの画面が見えたと思ったら消えて、
ブラウザにはWeb ページへのナビゲーションは取り消されましたってでてしまいます
>>696
htmlで書き出すとブラウザにでるんですけど、テキストがplaneで出力できてるんで自分の設定がなにかおかしいところがあると思うんですよ
だからそれを解決しとかないと・・・と思うんですよ。
0698nobodyさん
2008/01/07(月) 09:36:39ID:???もう一度よ〜〜〜く見るんだ。
”Content-type: text/plane” じゃあ、
そりゃ「そんな mimetype わしゃ知りません」ってIEがおっしゃるよ。
0699nobodyさん
2008/01/07(月) 09:53:12ID:???たぶんapacheの設定で失敗してるはず。
0700nobodyさん
2008/01/08(火) 17:54:44ID:???レンタルサーバでCGIでプログラムを動かしているのですが、
処理を行う際のサーバの負荷が気になるので、>>674-675に
書いてある方法を使用し、常に処理にかかった時間を
表示するようにしています。
ある関数を動かした際、普段の処理時間は1〜2秒なのですが、
ネットが異常に遅い時に同じ処理をした時、10秒ほどかかりました。
この処理にはhtml出力が入っているのですが、CGIのhtml出力は、
CGIで処理した結果すべてをまとめてクライアントPCのブラウザへ
流しているものだと思っていましたが、仕組み的にはそうではない
ということなのでしょうか。
それとも、私の使用している計測方法が誤っているのでしょうか。
何かこういうのを調べてみろ、みたいなヒントでも良いので
よろしくお願いします。
0701nobodyさん
2008/01/08(火) 19:20:06ID:b1r9jep2perldocしましたが見つかりませんでした。
0705701
2008/01/09(水) 06:38:37ID:g0MHwkoX0707nobodyさん
2008/01/09(水) 23:13:03ID:???するかたちでプログラムを組んでいます。
この複数のファイルは、丁度テーブルに見立てた設計に
しており、主キーで連携を取っています。
しかし、データがテキストファイルであるため、データの
取り扱いに不便を感じる場合もあります。
ソートをする際、すべてのデータを変数に読み込んだり
出来ない場合は、ソートをしながら別のファイルに
書き込むといった感じです。
こういう、データを記録するのに丁度良いモジュールという
ものはないのでしょうか??
ま、データベースを使えばという話になるのでしょうが、
レンタルサーバなどの環境でそこまで準備が出来ない場合の話です。
0709nobodyさん
2008/01/10(木) 02:06:12ID:???if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
else {
$query = $ENV{'QUERY_STRING'};
}
ここまではエラーなく処理できてるんですが
# フォームデータの復元
foreach $pair (split(/&/, $query)) {
($key, $value) = split(/=/, $pair);
コレを入れるとエラーがでてしまうんですが、どこが悪いんですかね?
0710nobodyさん
2008/01/10(木) 02:09:13ID:YdP4IGcZ0711nobodyさん
2008/01/10(木) 19:24:04ID:Ea25ozf2index.cgi?----
みたいな感じのです。
0713nobodyさん
2008/01/10(木) 19:46:08ID:???つ[ ttp://www.futomi.com/lecture/form/cgi-pm.html#s3 ]
0714nobodyさん
2008/01/10(木) 21:21:19ID:YdP4IGcZ5.8.8からcpanコマンドで入らないです
0716nobodyさん
2008/01/11(金) 18:21:27ID:PVnoyiBC最近パールの良さがわかってきました
さてWindows上のGUIアプリケーションを作るのには向いてますか?
モジュールはちらほら見かけましたし実際作ってみましたが、やり方が悪いのかうまくいきません
どうも腑に落ちません
実際作ってみてどうですか?
0717nobodyさん
2008/01/11(金) 21:00:50ID:???Win32はシラネ
0718nobodyさん
2008/01/11(金) 22:16:12ID:???WindowsのGUIアプリならば、VBなどがあるのにあえてPerlを
選ぶ理由は何?
企業が使う業務システムではVBが圧倒的に多い理由を考えると、
と思うけれど。
0720nobodyさん
2008/01/12(土) 03:49:51ID:???0721nobodyさん
2008/01/12(土) 14:37:13ID:???0722nobodyさん
2008/01/12(土) 16:29:39ID:???0723nobodyさん
2008/01/12(土) 17:15:04ID:???ここでソースコードの圧縮やってるよ
0724nobodyさん
2008/01/12(土) 20:57:02ID:???0725nobodyさん
2008/01/13(日) 01:39:09ID:EtYE9LoZどうしたらいいですか?
0726nobodyさん
2008/01/13(日) 08:37:57ID:???Linuxはしらね
0727nobodyさん
2008/01/13(日) 12:51:10ID:???当方パール入門したでして…覚えたばかりの知識が海のもずくになると思うと…
しかし実際のところあと3年はPerl5の知識が使えるんですかね?
そのPerl6とやらがいつ出るかも知らないので(公式サイトを検索しまくっても見つからなかった
私はバカですか?)何とも言えない状況です
あと移行はいきなりなんでしょうか、5.12を過ぎて6になった途端に様変わりしちゃったらすごく困ります^-^;
0728nobodyさん
2008/01/13(日) 13:46:17ID:???0729nobodyさん
2008/01/13(日) 14:45:25ID:???0730nobodyさん
2008/01/13(日) 16:08:40ID:???0731nobodyさん
2008/01/13(日) 17:03:12ID:???ま、こういうのはどの言語でもふつうにあることなんじゃないかな。
そういうのについてこれないのは、技術者として終わりみたいな。
今でも N88BASIC とか COBOL とかで組んでる人っていないだろ?
> しかし実際のところあと3年はPerl5の知識が使えるんですかね?
> あと移行はいきなりなんでしょうか
これは、ケースバイケースなのではっきりとはいえない。
例えば、過去の資産を活かしたシステムを構築する場合は、Perl5で
構築するだろうし。
あと、安定性も考えて、いきなり新しくはしないケースもある。
システムは、早く作れることも大事だけど、安定して動くことが
大事なのだから。
個人的に思うのだけど、大幅な仕様変更をするのに、いつまでも
前の名前を使い続けるから紛らわしくなるんじゃないかなと思う。
Perl は 5 で完成形であり、それで終わり。役割は果たした。
そして、新しい言語が出る。とした方が分かりやすいと思うのだが。
0732nobodyさん
2008/01/13(日) 17:13:18ID:???固執している言語があるが、あれよりマシだと思う。
大幅に仕様変更していて、ユーザがついてこなかったから、
やっぱり戻したとか。
仕様変更をしすぎて、別の言語と非常に似ていて
その存在自体が意味無いものに見えるとか。
0733nobodyさん
2008/01/13(日) 20:48:32ID:???PHPのことか。
zendはphp4のサポートを終わらせて無理やり5に移行させたがっているが、4の開発メンバーは今は6を作ってるらしいからそれ待ちだ。
0734nobodyさん
2008/01/14(月) 03:03:11ID:???0735nobodyさん
2008/01/14(月) 03:20:58ID:h4dQ9PIo海外サイトではPHPなんて全く持ち上げられてない
んで、何がいいたかったかというとPerl最高
0736nobodyさん
2008/01/14(月) 09:05:00ID:???0737nobodyさん
2008/01/14(月) 09:50:52ID:???海外サイトではウォシュレットなんて全く持ち上げられてない
んで、何がいいたかったかというと温熱最高
0738nobodyさん
2008/01/14(月) 12:36:17ID:???Rubyのほうが良かったですか?って聞いたら余計に怒られた。
なんで?
0739nobodyさん
2008/01/14(月) 13:25:17ID:???0740nobodyさん
2008/01/14(月) 14:50:02ID:???その内容をhtml出力するところまでやっと出来たくらいの知識の者です。
そこで、普段のバックアップはどういう仕組みでやるとよいのか
迷いましたので、こちらで質問してみました。
私としては、Perlで、データベースのテーブルとテキストファイルと
をコンバートするプログラムを自作し、定期的に手動(FTPソフトを
使うなどして)でローカルにファイルを保存しておく方法くらいしか
思いつきませんでした。しかし、それだと普段の作業に非常に
手間がかかってしまいます。
一般的に、レンタルサーバでPerl+PostgeSQLのWebシステムの
バックアップは、このような方法を取ることが多い、みたいなものは
あるのでしょうか。よろしくお願いします。
0741nobodyさん
2008/01/14(月) 18:56:43ID:???0743nobodyさん
2008/01/16(水) 10:57:33ID:Z4nycbhzが、セキュリティーが不安です。
レンサバでやるにせよ、セキュリティーに穴があって攻撃されると
いろんなトラブルがあるんでしょ?
当方、素人の趣味でやってるプログラミング歴まだ1年のプログラマーなもので
そのあたりを実際に企業で開発した経験が当然なく不安です。
セキュリティーやネットワークに関する勉強をやるのに手始めとしてオススメのメソッドありますか?
あまりパールと関係なくてごめんなさい。
パールの本でセキュリティーやネットワーク関係のものって無いですよね。
LWP本はありましたが、
もっと広範にネットワーク関係のスキルを強化したいです。パケット解析とか。
まあ、それはそうと他のWeb系を始めようとするパーラーはそういうセキュリティーやネットワーク関係の不安ないんでしょうか?
皆さん気軽に始めていらっしゃる方が多くよほど知識がおありなのだなあと斜にかまえて静観しています。
0744nobodyさん
2008/01/16(水) 17:37:17ID:???0745nobodyさん
2008/01/16(水) 17:58:11ID:???Perlからはなれて、パケットフィルタリングとか、TCP/IPの
詳細について調べていった方がいいと思う。
セキュリティも個人情報を扱っているとか外に洩れるとやばいものは
物理的なレベルで外部に公開せずに社内LANでのみとかにするわけで、
そういうものはPerlの設定やコーディングでなんとかするものではない。
0746nobodyさん
2008/01/16(水) 18:07:35ID:???最近は、ASP(アプリケーションサービスプロバイダ)とかあるので、
それを利用した方がいいと思う。プログラムを組むのは辞めて。
それだと、必要な機能だけを月に数千円〜数万円で必要な期間だけ
利用できる。
0747nobodyさん
2008/01/16(水) 20:49:06ID:???0749nobodyさん
2008/01/18(金) 20:13:52ID:???不正な入力を防ぐ為に、いろいろなことを考えているのですが、
一人で考えていると、漏れがありそうな気がして怖くなりました。
何か、こう言うことを考えてコーディングしたほうがいいという
ガイドラインのようなものはあるのでしょうか。
例えば、以下のような感じです。
1.変なアドレスからcgiを実行しようとしていたらはじく
2.textareaタグの記述は○文字まで
3.同一IPアドレスからの連投を防ぐ
0750nobodyさん
2008/01/18(金) 22:45:45ID:???特殊サブルーチンENDはそれぞれが終了した場合に常に行われる。
これを防ぐ手立てはないでですか?
0752nobodyさん
2008/01/19(土) 16:56:00ID:FZ1FRzKn投票形式のサイトを以前見かけたのですが、思い出せません。
どなたかご存じないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています