Perlコーディング初心者質問スレ Part 40
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/01/27 18:08:42ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0261nobodyさん
05/02/09 16:07:48ID:???0263259
05/02/09 16:15:15ID:XVTcbf3Eそうか・・・・・
>>261
それは知りませんでした;
しかし>>260さんが言うようにa行数のようにしたい時点で配列を使えばいい状況
ということですねm(_ _)m
配列の中にリファレンスでいれておきます。解決です。ありがとうございました!
0264nobodyさん
05/02/09 16:16:02ID:???配列に入れちゃダメなの?
open(FHIN,'csvfile') or die "can not open csvfile\n";
$i = 0;
while(<FHIN>) {
($time[$i],$name[$i],$coment[$i]) = split(/,/,$_);
}
とかで、いろいろ出来ると思うけど。
逆の他の人に聞きたいのは
while(<FHIN>) {
@datas[$i] = split(/,/,$_);
}
とかで
@datas0にデータ入れて
じゅんじゅんに
@datas1とかに入れるのってどうやってやんの?
0266251
05/02/09 16:27:57ID:???みんな、ありがとう。
いい夢みろよ!!
0267nobodyさん
05/02/09 16:51:03ID:???#!/usr/bin/perl -w
my @data;
chomp, push @data, [ split /,/ ] while <DATA>;
print $data[1][2]; # h
__DATA__
a,b,c,d,e
f,g,h,i,j
k,l,m,n,o
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldsc.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlref.html
0269nobodyさん
05/02/09 17:31:30ID:???chomp, push @data, [ split /,/ ] while <DATA>;
はいくらなんでも詰めすぎじゃないかと。
普通に書くなら
while (<DATA>) {
chomp;
push @data, [ split /,/ ];
}
ぐらいじゃないかなー。
0271nobodyさん
05/02/09 18:59:46ID:???私は
chomp, push @data, [ split /,/ ] while <DATA>;
の方が直感的に頭に入ってくるな
0273nobodyさん
05/02/09 20:09:21ID:???下主流
0274nobodyさん
05/02/09 21:09:26ID:???0275nobodyさん
05/02/09 22:00:05ID:???あれ面白い?っていゆーか実践的な内容?
0276nobodyさん
05/02/09 22:19:03ID:oNgMiBujデータを送ることができないと思うのですが、POSTで送る方法などはありますか?
0277nobodyさん
05/02/09 23:07:01ID:???http://homepage3.nifty.com/hippo2000/perltips/lwpcook.html#POST
0278nobodyさん
05/02/10 02:07:22ID:???とするとき、改行\nを消す方法があれば教えてください
0279nobodyさん
05/02/10 02:36:02ID:???chomp @hoge;
0280nobodyさん
05/02/10 03:26:26ID:???$::info{'no_dir'} = [ q[test], q[test2] ];
BEGIN {
#▼なんかディレクトリからファイルを返す関数
sub file_list (&$;$) {
my ($code, $dir_name, $mode) = ($_[0], $_[1], $_[2]);
my $pass;
{
$pass = $dir_name . q[./], last if(qq[\l$mode] eq q[p] or !$mode);
$pass = "", last if(qq[\l$mode] eq q[f]);
return(); #モードが変なのは処理しない。
}
opendir DIR, $dir_name or return ();
my @file_list = grep{ $_ = $pass . $_; &$code; } (readdir DIR);
closedir DIR;
foreach my $file (@file_list){$file =~ s[/\./][/]g;}
return(@file_list);
}
0281nobodyさん
05/02/10 03:27:00ID:???{
search($::info{'pass'}); #対象ディレクトリ全検索
sub search {
foreach my $dir (@_){
my @list;
@list = file_list { #ディレクトリ全取得
-d #範囲をディレクトリに絞って…
and !(m/[\/\.]+$/) #自己参照ディレクトリの類は排除して…
and my $now_dir = $_ #ちょっとキモい処理をして…
and !( grep { $now_dir =~ m[/$_$]; } @{$::info{'no_dir'}} ) #除外指定ディレクトリは無視。ところがこれがエラー
} $dir;
@list = map {$_ . '/'} @list; #なんかUNIXではこれやらないとダメっぽい。(winではいらない)
push @::dir_list, @list; #ディレクトリ追加
search(@list) if(@list); #ディレクトリがまだあったら再帰
}
}
}
0282nobodyさん
05/02/10 03:27:47ID:???and !( grep { $now_dir =~ m[/$_$]; } @{$::info{'no_dir'}} ) #除外指定ディレクトリは無視。ところがこれがエラー
↑ここんことが変になるんですけど、どーしたらいいんかね?
0284nobodyさん
05/02/10 05:12:42ID:FuWRzUOO新しいサイトでフォームを使いたいのですがうまくいきません。
書き込み用のform.html(仮名)とform_mail.cgiは古いサイトでは
フォームの送信後メールがちゃんと届いたのですが、
新しいサイトでは何故か機能しません。
cgiのパールへのパスとドメイン所属のメールアドレス、
form.html内のform_mail.cgiへのパスは正しく書き換えている
(つもり)のに。。。ディレクトリーも同じように設定してます。
フォーム送信にhtmlとcgiファイル以外でしなければいけない事、
必要なファイルってありますか?
ひとつ疑問に思ったのは古いサイトではcgiのパーミッションを入力して
再接続すると前回に入れた数字(755)が残るのに、
新しいサイトでは入力後に再接続してもその数字は残っていません。
あとフォームを機能させるためにhtaccessって必要ですか????
分かる人どうか宜しくお願いします!!
0285284
05/02/10 05:14:53ID:FuWRzUOO0286nobodyさん
05/02/10 09:55:26ID:GQajLbsS$a = 1;
}elsif(条件b){
$a = 2;
}else{
$a = 0;
}
これを1行ないし2行で収めることはできませんか?
?演算子を使えばできるかと思ったのですが、3つは無理みたいで;
知恵をお貸し下さいm(_ _)m
0287nobodyさん
05/02/10 10:09:46ID:???$a = 条件a? 1: 条件b? 2: 0;
で普通にいけると思うけどなんか変になるのかね?
条件の部分は場合によってはカッコいるかも。
0288286
05/02/10 10:25:55ID:GQajLbsS!?
そういうのもありなんですねm(_ _)m
0289286
05/02/10 11:06:28ID:GQajLbsSXSS対策にメタ文字エスケープをするときってCGI関係ではよくありますよね。
基本的には埋め込む直前にケースバイケースのエスケープをするのですが、
みなさんはどうやってますか?
元の文字列を加工したものを『他の新しい変数に入れて』ますか?それとも
『元の変数に上書き』してますか?
後者だと元データがなくなるので何かと不都合の原因になりますよね。
しかし新しい変数を用意すると、色々なところで色々なエスケープが必要になるので
だんだん頭がこんがらがります;簡潔性を欠くといいますか・・・
0290nobodyさん
05/02/10 11:42:53ID:???俺は普通に上書きしてる
>元データがなくなるので何かと不都合の原因になりますよね
これの意味がわからん。必要なときは元に戻せばいいじゃないか。不可逆変換やってるわけじゃないんだから。
0291nobodyさん
05/02/10 11:45:26ID:???私は最終出力時にエスケープ派であります。といっても
最近はほとんどテンプレートライブラリ使うので、テンプレート
側でエスケープ形式を指定するだけのことがほとんどですが。
0292286
05/02/10 13:35:23ID:GQajLbsSありがとうございます。
やはりみなさんそれぞれなのですね。
見易さ・わかりやすさの点でやはり変数を用意したほうがいいのかなと思ってます。
%form
%form_html
%form_sql
現在こういう感じです。
0294nobodyさん
05/02/10 15:15:16ID:???インクリメントのせいで、一度入れないとユニークキーが何かわからないのですが
挿入した直後にそのユニークキーを表示させたいのですが、どうすればいいでしょうか?
ユニークキー以外は重複している可能性が十分にあるデータ群なので、途方にくれています
そのプロセスが今挿入したデータに挿入時に自動的につけられたユニークキーが
何だったのかを調べるにはどうすればいいでしょうか?
0295nobodyさん
05/02/10 15:21:20ID:???無理だろ。
だって極端な話にすれば、ユニークキー以外が全部同じ内容のものなら
自分のユニークが何なのかを調べる方法なんてない。
0296nobodyさん
05/02/10 15:27:41ID:???最近使ってないから忘れたw
0297nobodyさん
05/02/10 15:36:08ID:???それを元に取り出せるけどな。
まぁそのためだけに二つもフィールドを増やすのはあまり気分がよくないわな。
0298294
05/02/10 15:57:58ID:???そうなのですかorz
実際にどういうデータが入ったかを確認するすべはないんですね…
>>296
本当ですか!?DBI使ってます。調べてみます。
>>297
そのためだけに増えるのはちょっとしんどいですよねorz
自分が挿入したレコードに付けられたユニークキーを調べることができないって…
つまり自分が何を入れたのかを確実に調べる方法が用意されてないってことですよね;
0299nobodyさん
05/02/10 16:19:29ID:???俺いまPostgreでユニークキーをインサートするためにやっているのが、
普通に順序のテーブルからnextvalでとってきて、
INSERTするときにnextvalからとってきてのをvalueで指定してるけど、
その考え方はだめ?
0301294
05/02/10 17:06:32ID:???いえ、ユニークキーがautoincrementになってるので、実際に挿入するまでは
どういうユニークキーになるのかわからないんです。
それで挿入した本人に自分が今入れたユニークキーを知らせることができずに困ってるのです。
>>299
nextvalって使ったことないです。ちょっと勉強してきます。
0302nobodyさん
05/02/10 19:29:44ID:???auto_incrementならば、select last_insert_id()で取り出せるし。
http://dev.mysql.com/doc/mysql/ja/miscellaneous-functions.html
> LAST_INSERT_ID([expr])
> AUTO_INCREMENT カラムに挿入された値のうち、最後に自動生成された値を返す。
> mysql> SELECT LAST_INSERT_ID();
> -> 195
>>294の説明では、自前でユニークキーを作成しているみたいに読めるが。
SQLの問題だね。
0303nobodyさん
05/02/10 19:37:17ID:???use vars qw(%info @dir_list);
$info{no_dir} = { map{$_ => 1} qw(test test2) };
...
{
search($info{path}); #対象ディレクトリ全検索
sub search
{
my @dirs = @_;
foreach my $dir (@dirs){
my @list = map{$_. '/'} file_list { #ディレクトリ全取得
-d #範囲をディレクトリに絞って…
and !(m/[\/\.]+$/) #自己参照ディレクトリの類は排除して…
and !$info{no_dir}->{(m|/([^/]+)$|)[0]} #除外指定ディレクトリは無視。
} $dir;
push(@dir_list, @list); #ディレクトリ追加
search(@list) if(@list); #ディレクトリがまだあったら再帰
}
}
}
ちょっと書き換えちゃったけど、適当に戻しておいて。
0304nobodyさん
05/02/10 19:40:55ID:???my $aaa = "$bbb.txt";
0305nobodyさん
05/02/10 19:49:39ID:???区別って$bbbと".txt"の境界をはっきりPerlに伝えたいってこと?
とりあえず、"."は変数の一部とは見なされないから、そのままでもOKだけど、
もっと安全に書きたいというのなら、
my $aaa = $bbb . ".txt";
my $aaa = "${bbb}.txt";
0308282
05/02/10 20:46:53ID:???やべー。恥ずかしい。pathとpassを間違いまくってた。_| ̄|○
そっか、ハッシュを使うんですね。ハッシュ。
しかも所々細かいアドバイスありがとう。
って事で今からテストしてきます。
0309304
05/02/10 21:41:23ID:???0310nobodyさん
05/02/10 21:46:11ID:???0311nobodyさん
05/02/10 21:50:00ID:???$sazae = "
<table width=675 border=0 cellspacing=0 cellpadding=0 height=5>
<tr>
<td><img src="http://img.yahoo.co.jp/images/clear.gif" alt="" width=1></td>
</tr>
</table>
";
0314nobodyさん
05/02/11 01:43:21ID:???しかし、「www6.ocn.ne.jp」からは取得できますが、「www.ff.iij4u.or.jp」からは「Access Denied」となります。
当然ブラウザからならアクセス可能。User-Agent等を変えてもうまくいかず・・ご助言宜しくお願いします。
#!/usr/local/bin/perl -w
use Socket;
#$address = "http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html";
#$host = "www.ff.iij4u.or.jp";
$address = "http://www6.ocn.ne.jp/~mirv/2chmenu.html";
$host = "www6.ocn.ne.jp";
$myagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
$rhost = "hoge.com";
$port = getservbyname('http','tcp');
$iaddr = inet_aton($host) or die "aton-err\n";
socket (SOCKET,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(SOCKET,sockaddr_in($port,$iaddr));
binmode(SOCKET);select(SOCKET); $| = 1; select(stdout);
print SOCKET "GET $address HTTP/1.0\r\n";
print SOCKET "Host: $host\r\n";
print SOCKET "User-Agent: $myagent\r\n";
print SOCKET "Accept: */*\r\n";
print SOCKET "Accept-Charset: *\r\n";
print SOCKET "Accept-Language: jp\r\n";
print SOCKET "Referer: http://$host/\r\n";
print SOCKET "Remote-Host: $rhost\r\n";
print SOCKET "\r\n";
while (chop($buf=<SOCKET>)) {print "$buf\n";}
close(SOCKET);
exit;
0315nobodyさん
05/02/11 02:07:19ID:???0316nobodyさん
05/02/11 02:29:31ID:???use Socket;
$address = "http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html";
$host = "www.ff.iij4u.or.jp";
$myagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
$rhost = "hoge.com";
$port = getservbyname('http','tcp');
$iaddr = inet_aton($host) or die "aton-err\n";
socket (SOCKET,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(SOCKET,sockaddr_in($port,$iaddr));
binmode(SOCKET);select(SOCKET); $| = 1; select(stdout);
print SOCKET "GET /~ch2/bbsmenu.html HTTP/1.0\r\n"; #ここがおかしい
print SOCKET "Host: $host\r\n";
print SOCKET "User-Agent: $myagent\r\n";
print SOCKET "Accept: */*\r\n";
print SOCKET "Accept-Charset: *\r\n";
print SOCKET "Accept-Language: jp\r\n";
print SOCKET "Referer: http://$host/\r\n";
print SOCKET "Remote-Host: $rhost\r\n";
print SOCKET "\r\n";
while (chop($buf=<SOCKET>)) {print "$buf\n";}
close(SOCKET);
exit;
0317316
05/02/11 02:35:22ID:???$address =~ m|^http://([-_\.a-zA-Z0-9]+)/?(.*)$|;
$host = $1;
$path = $2;
と付け加えて、
print SOCKET "GET /$path HTTP/1.0\r\n";
と変更すると汎用性があっていいかも。
0318294
05/02/11 08:42:07ID:4xNa2hhvありがとうございます。
ユニークキーは一応Perl側で作成してますが、万が一の重複の可能性を考えて
インサート時にauto_incrementになってます。
なのでユニークキーについては役割は半々ですね。
LAST_INSERT_ID()ではアクセスが集中した時にミスりますよね?
プロセスAが入れる→プロセスBが入れる→プロセスAからのLAST_INSDERT_ID()を処理
=プロセスBが入れたものがプロセスAに渡されてしまうorz
0319294
05/02/11 10:01:49ID:4xNa2hhv今回のCGIではPerlで半分ユニークキーを作成してますので、auto_incrementする可能性は
ほとんどないので、last_insert_id()がauto_incrementしてない時には初期値の0まま
(もしくは前回値ですが今回はinsert1回しかないので)という仕様を利用して、
my $your_id = $last_insert_id == 0 ? $perl_creat_id : $last_insert_id;
のようにして確実に自分が入れたデータの取り出しが可能になりました。
お世話になりましたm(_ _)m
0320nobodyさん
05/02/11 10:31:52ID:???0321nobodyさん
05/02/11 11:11:35ID:???テスト環境は(local)→winXP
サーバ→Linux
@array = qw/a b c d e f g/;
@arrayの中に7個あります。インデックスは0-6になります。
これをランダムに表示させたいんですが単にrand関数を使っただけでは均等には
なりませんよね?(rand関数自体どこまで完全確率に近づけられているのかはわかりませんが、
それはおいといてください。)
print $array[(rand 6)];
これだと圧倒的に最後の$array[6]だけ選択率が落ちます。
0-5は小数点も付きますが、6だけ付かないのでまあ当然なのですが。
かといってrand 7にして7が選ばれたらマイナス-1するというのではまだ不公平ですよね。
rand 7にして7が選択されたらマイナスもrandで決定するというのも結局
そのときもマイナス7が選ばれる可能性が・・・・次に続けます
0322321
05/02/11 11:15:15ID:???$number = $number == 7 ? $number - rand 7 : $number;
print $array[$number];
前回言いかけましたがこうしても結局今度は$array[0]が選ばれる可能性がちょっと増える
ので不公平ですよね。
公平に0-6を抽選することはできないのでしょうか?
0323nobodyさん
05/02/11 11:40:10ID:eHptbqsS言ってることがよくわかりませんが
http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20020909010545.shtml
このへん読んでみれば?
というかrand関数を使えば均等になるし、ちゃんとrand呼び出す前に
srand関数で初期化してますか?
0324314
05/02/11 11:54:58ID:???教えていただいた方法で無事取得できました。
ありがとうございました。
0325321
05/02/11 11:56:27ID:???Perl5.1以降は自動的にsrandされてるみたいです。
もしかしてrand 8;
って0-8をランダムに選ぶのではなく0-7(小数点つき)を選ぶんですかね?
確かにprint rand 8;として
>8
となった経験はありませんが、ただ確率が極端に8だけ落ちるからだと思ってました・・・
私の勘違いだったのでしょうか?
0326nobodyさん
05/02/11 11:57:37ID:???0328nobodyさん
05/02/11 14:06:49ID:???これで今年が何年なのかを表示させようと思ったらエラーがでました。
near ")["
となってたのですがこの形式はダメなのでしょうか?
gmtime(time+32400)自体はリストなので大丈夫だと思ったのですが。
0329nobodyさん
05/02/11 14:14:41ID:???0330nobodyさん
05/02/11 14:14:45ID:QAwMbYUp↑これをリスト扱いしてるでしょ。どう見ても。
0331nobodyさん
05/02/11 14:24:46ID:???参考
Perlメモ/W3C形式の日時の解析
http://digit.que.ne.jp/work/index.cgi?Perl%A5%E1%A5%E2%2FW3C%B7%C1%BC%B0%A4%CE%C6%FC%BB%FE%A4%CE%B2%F2%C0%CF
2005-02-10T14:54:18+09:00 を変換する場合、どう書けばいいのでしょうか?
0332nobodyさん
05/02/11 14:32:58ID:???open FH,"+>>test.txt";
seek FH,0,0;
print FH "ファイルの先頭";
close FH;
これを実行したら何故かファイルの末尾にかかれました。
seekが効いてないのでしょうか?
0334328
05/02/11 14:34:37ID:???でも同じエラーがでます。
0335nobodyさん
05/02/11 14:42:49ID:???+>>
ではseekは使えない。ポインタの移動自体が不可能。
もし先頭に追加したければ一度中身を配列に読み込んでから
unshiftで先頭に入れて上書きするしかない。
>>334
当たり前。かっこなんかつけてどうこうなる状況ではない。
@{[gmtime(time+32400)]}[5]
とすればいい。
0337nobodyさん
05/02/11 15:37:08ID:???">>"はO_APPENDがつくのでwriteがかならずその時点でのファイルの
末尾からになる。
ファイルをもしなければ作成して読み書き両用で開きたいんじゃないかと
思うが「>」使うのでちょうどいいのはたぶんない。openでシステムコール
のオプションを明示的に指定できるのでそれを使うのがいいと思われる。
0339nobodyさん
05/02/11 17:00:15ID:CPrSGSxUprint(
"引数",
"引数",
);
↑こーゆーのってコーディングスタイルとしてどーなんですか?
エラーはでないみたいなんですけど。
0340nobodyさん
05/02/11 17:07:21ID:4xNa2hhvmy $test;
〜処理〜
undef $test;
}
ブロックの終端で人間が見たときにこのブロックでどういうローカル変数を使っているかを
わかりやすくするためにわざわざundefしてます。
私のテキストエディタでは関数名は太字になりますので、もの凄く見やすいです。
それでそのブロックないで作った(いじった)グローバル変数もまとめて列挙したいんですが、
# $global
とかしてもコメント用の色にはなりますが、太字にはならず見づらいです。
そこで何か変数に対して何もしない関数があればいいなと思ったのですが、何かいいのはありませんか?
scalar $global;
みたいな感じです。
undefにしろ完全に処理効率を落とすものでしかないのでなるべくその影響が
小さいものがいいです。undef以下の処理時間の関数だと最高です!
0341nobodyさん
05/02/11 17:15:59ID:???http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlstyle.html
あとは君が書いたスクリプトを誰が保守するのか考えた上でご自由に。
>>340
エディタの為のコードを書くな。コードに合わせてエディタを設定しろ。
0342340
05/02/11 17:26:02ID:4xNa2hhvエディタの設定ではできないのです。
0343nobodyさん
05/02/11 18:20:17ID:???リストの最後にカンマが付いているのを懸念しているのか?
結論から言えばアリ。ハッシュでも良く使うね。
{
foo => 1,
bar => 2,
}
後で項目追加したりするときに、ミスが出なくていい。
0344343
05/02/11 18:33:32ID:???http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html#List_value_constructors
0345nobodyさん
05/02/11 21:22:27ID:???use HTTP::Date qw(parse_date);
my @date = parse_date("2005-02-10T14:54:18+09:00");
my $date_str = sprintf('%04d年 %02d月 %02d日 %02d時 %02d分 %02d秒', @date);
0346339
05/02/11 21:26:56ID:CPrSGSxUこっちのほうがいいな、と。
Cのprintfだと引数1つしかだめなんでちょっと
おどろいたついでに確認してみたんですが・・
アリということなのでがんがんつかいますw
0347339
05/02/11 21:31:01ID:CPrSGSxUprint と print() だとなんか前者の方がよくみるんですが
print()の方でもいいんですよね?
関数に()がないのがなんか気持ち悪くて・・
0348339
05/02/11 21:37:39ID:CPrSGSxU↑に書いてありましたね、連投スマソ
0350nobodyさん
05/02/12 00:13:28ID:???あまりいい趣味とは思えないが、どうしてもやりたければ
use Filter::cpp;
#define NOOP(x)
とか?
0351nobodyさん
05/02/12 00:15:44ID:???俺は関数に限らず極力()を付けない。
基本的に見易さと理解しやすさが第一だから。
もちろんぱっと見たときにどういう優先順位かわからなくなりそうな時はつけるけどね。
>CGIで使う時にprintが乱立するのが見苦しいから
それとこれは君がしょぼいだけと言わざるを得ない。
出力内容はユーザによって変えないといけないことが多いCGIではprintを始める
以前にほとんどのデータを用意しておく。
そして何行にもなるならヒアドキュメントを使ってスッキリさせる。
まぁプログラミングなんて誰でもできるものだけど、
読みやすく効率のいいものが作れるかが馬鹿と賢者の分かれ目かな。
ってえらそうにごめんねm(_ _)m
とりあえず処理効率よりも読みやすさを薦めるよ。
0352nobodyさん
05/02/12 01:31:57ID:???演算子には()をつけないほうが読みやすいとされるそうです。
俺もそう思いますが、printは演算子です。
0353347
05/02/12 01:34:34ID:DEctNxAsなるほど〜、うまいことやる方法がきちんとあるのですね。
なんせCGIは初めてで正直まだ何もわかっていないんです。
でも351さんがおっしゃっていることは自分も同意で、普段書く時
は気をつけています、綺麗なコーディング。
とにかくがんばります。
0354347
05/02/12 01:40:35ID:DEctNxAsえ、、、PerlやPHPだとprintは演算子なんですかぁ、ちとびっくり。
てっきり関数かと思ってました。
だから()がいらないんですね、なるほどなるほど。
0355nobodyさん
05/02/12 03:35:24ID:W11W0gdqそもそもCGIでprint文なんていくつも書かないだろ。
出力用のルーチンに投げてprintは1つでお終い。そこで変数展開してやればいい。
0356nobodyさん
05/02/12 10:55:57ID:???0357nobodyさん
05/02/12 12:43:51ID:???正確に言うと少し違う。Perlの組み込み関数はある意味で全て演算子であるといえる。
>>356
それでいいよ。その方が分かりやすい。
0358s
05/02/12 16:09:49ID:???うまく読み取ってくれません。どうやればいいのでしょうか?
0360nobodyさん
05/02/12 17:35:59ID:???こら。好き勝手書くんじゃない。
■ このスレッドは過去ログ倉庫に格納されています