トップページ⇒php
1001コメント308KB

【Perl】初心者コーナー Part15

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん02/08/08 23:19ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 6 (その2)
http://pc.2ch.net/test/read.cgi/php/1025930486/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
091089402/09/13 04:35ID:???
$n = 1;
open(OUT,">$n");

while(<STDIN>){
unless(/^\.\n/){
print OUT;
}
else{
++$n;
open(OUT,">$n");
}
}

で自己解決しました。
説明が下手でちゃんと伝わらなかったみたいでスマソ。
091189402/09/13 04:37ID:???
>>909
hoge.mbxの内容が1行ずつ連番で出力されて、
7000.mhとかまでできた。
0912nobodyさん02/09/13 04:42ID:???
>911
そんなはずは......ちゃんとコピペしてくれた?
091389402/09/13 04:48ID:???
コピペしたはずなんだけど。。
>>903>>904どっち?
ちなみに両方同じ結果だった。。
0914nobodyさん02/09/13 04:51ID:???
>913
あ 904 なんだけどね......
うちではちゃんと動いたんだけどなぁ
まぁいいんだけど
091589402/09/13 05:05ID:???
>>914
はじめてのperlって本を一通り終えただけの
初心者だからredoとかloopが分からないのレス。
動かない理由がよく分からないけどサンクス!
0916nobodyさん02/09/13 15:55ID:???
$xxが"aa"でも"bb"でもないとき"cc"と表示するのを作りたいんですが

if ($xx ne "aa"|"bb"){
print "cc";
}

これじゃいつでも"cc"と表示します。何でですか?
0917nobodyさん02/09/13 15:57ID:???
if ($xx ne "aa" && $xx ne "bb"){
print "cc";
}
091890502/09/13 16:15ID:???
>>894 このくらいの説明は最初にしようよ
| > MBXファイルのフォーマットを公開して頂けないでしょうか?
|
|次の通りです。
|
|ヘッダ
|(ブランク行) --- CRLF1個だけの行
|本文
| --- 行頭に1個のピリオド(メール間の区切り文字)
|ヘッダ
|(ブランク行) --- CRLF1個だけの行
|本文
| --- 行頭に1個のピリオド(メール間の区切り文字)
|
|
| (注意)本文の行頭に「.」がある場合は、「..」というように「.」を1
| 個余分につけて保存されます。
0919nobodyさん02/09/13 16:48ID:+7b38iG7
dataディレクトリ内のディレクトリ一覧を取得しようと思って↓の
コード書いてみたんですが、いくつかディレクトリが存在するにも関わらず
「.」(ルート)と「..」(上)のディレクトリしか拾えないんですが、何かおかしな
点などありますでしょうか・・・

opendir(DIR, "data");
while($dir = readdir(DIR)){
  if(-d $dir){
    #処理・・・
  }
}
closedir(DIR);
092091902/09/13 16:51ID:+7b38iG7
すんません、分かりました

  if(-d $dir){

は

  if(-d "data/$dir"){

としないとダメですね。
0921nobodyさん02/09/13 17:50ID:???
ひとつのcgiファイルの容量はどれくらいまでOKなんでしょう?
特に気にする必要はない?
0922nobodyさん02/09/13 17:57ID:???
ワラた
0923nobodyさん02/09/13 18:17ID:???
>>921
10MBとか書いてみればどうでしょう?w
アクセスする人数にもよるけど
重たいものを書いたらすぐビジー出ますよ
0924 ◆JAPH9PWA 02/09/13 19:59ID:???
重たいものと大きいものは全く違うんじゃない?
数十行でも重い処理は書けるからね。

>>921
まず気にするほどのことは無いと思う。多分1MBくらなら問題ないでしょう。
プログラムが重いと感じたら処理の流れを見直すべし。

それと、「CGIファイル」じゃ意味が通じないんで「Perlスクリプト」や「スクリプトファイル」と表現するように。
上記の回答もそのような意図と解釈して書いてます。

0925名無しさん02/09/13 20:11ID:dJSmRC1R
新宿で居酒屋の誘いにモノスゴイ人数で付いて逝くオフ4
http://natto.2ch.net/test/read.cgi/off/1031911920/l50

キタ━━━━━━━(゚∀゚)━━━━━━━!!!!!
0926nobodyさん02/09/13 20:56ID:MTIQ7Fw0
変数の表記で変数名も変数である場合

$xx_(ここも変数)
()の変数は$yy

どう表記したらいいでしょうか?
0927nobodyさん02/09/13 21:07ID:???
${xx_}$yy
0928 ◆JAPH9PWA 02/09/13 21:22ID:???
{
my $xx_1 = "foo";
my $yy = 1;
no strict 'refs'; # シンボリックリファレンスを許可する(デフォルト)
print ${"xx_$yy"};
}
0929nobodyさん02/09/13 22:53ID:???
>>927
$xx_{$yy}
0930nobodyさん02/09/14 08:14ID:???
>>927, >>929
Can't use an undefined value as a symbol reference at test.3.pl line 8.

>>928
fooが出力されるべきところ何もでてこない

結局、どれでやってもだめレスが・・・


093193002/09/14 08:21ID:???
ゴメソ
>>928は、myを取ったら出力されました
わしの考えたのは

$var = "xx_" . $yy;
print $$var;

分かりやすくていいでしょ
0932 ◆JAPH9PWA 02/09/14 08:58ID:???
あ、そりゃmyがあればダメだよね。つい癖で…。
ごめん。
093392902/09/14 14:29ID:???
>>930
$xx{$yy}だたよ…
0934nobodyさん02/09/14 14:58ID:bLV5ATcL
AnyDBM使って多数のパラメータを扱うのですが、
データ数が多い場合はやはり幾つかのDBMに分けた方が良いのでしょうか。
それとも全部一括りにして1つのファイルにまとめた方が効率が良いのでしょうか。
ちと分からないので質問です。
0935nobodyさん02/09/15 00:34ID:???
>>934
ファイル1枚
・壊れやすそう
・壊れたら致命的そう
・サイズがでかそう
ファイル複数
・壊れにくそう
・壊れても被害は少なそう
・余計なデータは読まずに済むから軽そう
0936nobodyさん02/09/15 05:43ID:sdGpPtiV
特定の日付からgmtime?(1018470831みたいな数値)を逆算するには
どうしたらよかとでしょうか?
0937nobodyさん02/09/15 07:30ID:iaBuYHci
>>936
1900年からの経過秒数が知りたいの?
だったら、

use Time::Local;
print timelocal(0,0,0,15,8,102);

で9月15日0時0分0秒のそれが出てくる
0938nobodyさん02/09/15 11:34ID:???
短くて済む、という理由でrequireじゃなくてdoを使いたがっています。
ライブラリルーチンのインクルードは、requireを使った方が良いといわれていますが、
その理由がよくわからないので言う事を聞く気になりません。
うまい具合に違いを説明して僕を説得してください。
0939あ ◆4WVJTVm. 02/09/15 11:47ID:7pMxPAY1
whileで配列の処理をしていて、
途中である条件が一致した場合、現在処理している変数が何番目の変数なのかを知り、変数に数値を格納したいのです。
どなたかご回答よろしくお願いします
0940あ ◆4WVJTVm. 02/09/15 11:51ID:7pMxPAY1
ミス
>現在処理している変数が何番目の変数なのかを知り、 ↓
>現在処理している配列が何番目なのかを知り、
すみません
0941nobodyさん02/09/15 11:54ID:???
>>938
わたしは初心者なのですが、ライブラリをインクルードするのはdoではできな
いと思うのですが、具体例を示していただけませんでしょうか。
0942nobodyさん02/09/15 12:01ID:???
>>939
配列の番号は$array[$i]の$iです
for $i (0 .. $#array) {
if ($array[$i] == 0) {
$array[$i] = $num;
print "$i番目の配列要素の値に$numを代入しますた\n";
}
}
0943nobodyさん02/09/15 12:02ID:???
>>941
require "hoge.pl";
となっているところを
do "hoge.pl";
と置き替えるだけです。
一応平気で動作しています。
0944nobodyさん02/09/15 12:09ID:???
>>942
if ($array[$i] == 0) { って??
$array[$i] = $num; って$numはどこからでてきたの?
それにそんなことしたら配列の内容書き換えてるんじゃ?
0945 ◆JAPH9PWA 02/09/15 12:11ID:???
「聞く気になりません」って…何の理由もなしにrequireを使え、なんて事はないよ。
doは%INCをチェックしない。つまり、同じライブラリを何度も読んでしまう。
そうなると、サブルーチンの再定義など、いろいろ不都合が生じると。
0946nobodyさん02/09/15 12:13ID:???
>>943さん、回答ありがとうございます。
やってみたらできました。私も識者の回答を待っています。
どなたかお願いします。
094794402/09/15 12:17ID:???
っつわけで、
for $i (0 .. $#array) {
if($array[$i] eq $arujouken){
$hensuu = $i
last;
}
}
かな?>>939
0948nobodyさん02/09/15 12:18ID:???
>>944
>>939は、配列要素が何らかの条件に合致した場合、
その要素(>>939は変数といってるが)に何らかの
数値を格納したいって言うんでしょ
それなら、>>942で合ってるよ
>>944は>>939を別の解釈をしてるなら、それに
従って答えるべし
094994402/09/15 12:23ID:???
>>948
確かにこちらとは解釈が違うネ。。
こちらなりの回答は>>947でしたので>>939のレス待ちってことで
095094202/09/15 12:25ID:???
>>947
じゃ、同じ質問を返そう
$arujoukenって??
$array[$i] = $i; って?
>>939は数値を格納したいっていってるのよ
配列の番号を格納していなんて言ってないよ

095194402/09/15 12:27ID:???
>>950
わかりやすくしたつもりだが…<$arujouken
もちろんマッチングだとは思うので仮にこうしたまでだが。
$array[$i] = $i;
なんて書いてません。
095294202/09/15 12:28ID:???
>>949
こちらの回答がいちいち後手に回ってしまいスマソ
ここのところ質問者が質問しっぱなしが続いてるね
まさかネタじゃないだろうね
095394402/09/15 12:31ID:???
>>952
まだ質問されてから1時間も経ってないYO
住人でもなきゃすぐにレスなんてこないかと
095493802/09/15 12:36ID:???
>>945
そうなのですか。一応検索はかけていたのですが
そこまで説明しているとこは見つけられなかったもので。
説得されました。require使います。
>>946
だそうです。
0955あ@939 ◆4WVJTVm. 02/09/15 12:48ID:s9DZ7/nK
あ です。
>>939の質問に答えてくださったかたがた、ありがとうございました。
陰様で、いろんなかたがたの意見を参考に服用していって、さらに素晴らしいものが出来上がりました。
本当にありがとうございますた。
095694402/09/15 12:57ID:???
>>955
本人がいいなら落着。
0957nobodyさん02/09/15 13:48ID:kinL8j5T
「aaaかbbb」が出てきたら順目を返す物をつくりたいんですが、
正しく動きません。何で?

$xxx = index($yyy, "aaa"|"bbb");
0958 ◆JAPH9PWA 02/09/15 14:11ID:???
>>957
質問に答える前に一つ聞きたいんだけど、どこでそういう構文を学んだの?
正直、凄く興味がある。
09593PIO ◆3pIoOHKo 02/09/15 14:14ID:???
indexって位置を返すんじゃなかたっけ?
0960 ◆JAPH9PWA 02/09/15 14:33ID:???
>>959
いや、それ以前にビットOR演算子が…。
論理OR演算子なら百歩譲ってああ誤解するのも頷けるけど、なぜビットOR演算子が…。
0961nobodyさん02/09/15 14:39ID:???
答えられないのか?
09623PIO ◆3pIoOHKo 02/09/15 14:41ID:???
>>961
つーか>>957は何を言いたいのかワカラン
0963nobodyさん02/09/15 14:43ID:???
どっちか先に出現するほうの位置を晒せってことだろ?
0964nobodyさん02/09/15 14:47ID:???
>960
正規表現とごっちゃになってるとか。
0965nobodyさん02/09/15 14:49ID:kinL8j5T
>>963
そうだよ
0966nobodyさん02/09/15 14:54ID:???
>>965
ちがうんじゃない?
aaaかbbbが出てくるindexを全部出してちょってことじゃ?
こんなのどうかにゃ:
$yyy = "bbbabcdaaaefghbbbcdefaaa";
&search_index($yyy, "aaa");
&search_index($yyy, "bbb");
sub search_index {
my ($string, $substring) = @_;
my $index = $start = 0;
while($index = index($string, $substring, $start) + 1) {
last if $index < 0;
print $index - 1, "\n";
$start = $index + length($substring);
}
}

順目って用語あるの?
0967nobodyさん02/09/15 14:55ID:???
GyRCJSolXiUoJGkySyRAJEohKhsoQg
0968nobodyさん02/09/15 14:56ID:???
>>966
本人が言ってるのに「ちがうんじゃない?」とは、これ如何に!
0969nobodyさん 02/09/15 14:57ID:???
誰か〜
次スレ立てて〜
09703日目02/09/15 14:57ID:AwUTEWn/
フォームを設けて、そこへあらかじめ文字を入れておきたい場合、

$temp="ここに<br>入力"
print <<"HTML";
<textarea >$temp</textarea>
とすると、
フォームのテキストエリアに
”ここに<br>入力”と表示され<br>が入ってしまう。
”ここに
入力”
とちゃんと改行させるにはどうすればいいの?
0971nobodyさん02/09/15 14:59ID:???
>>968
本人なら本人だって言って発言しろ
0972nobodyさん02/09/15 14:59ID:???
>>970
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
0973nobodyさん02/09/15 15:03ID:???
>>971
その為にID晒してんだろが! 注意力散漫さんはプログラミングやるには不向き
0974nobodyさん02/09/15 15:09ID:???
>>973
おまえにはネチケットに何もあったもんじゃないな
09753PIO ◆3pIoOHKo 02/09/15 15:09ID:???
>>970
$temp =~ s/<br>/\n/ig;
0976nobodyさん02/09/15 15:10ID:???
>>974
日本語不自由ですか?
09773日目02/09/15 15:13ID:AwUTEWn/
>>975 なるほどっ。助かりました。
0978nobodyさん02/09/15 15:14ID:???
>>957
/aaa|bbb/;
$xxx=length $`;

オマエラミンナ ムダニアオリスギ
09793PIO ◆3pIoOHKo 02/09/15 15:17ID:???
次スレ立てました
1000取り厨房以外はhttp://pc.2ch.net/test/read.cgi/php/1032070299/へ
0980nobodyさん02/09/15 15:27ID:???
GyRCRnk5fEo0JEMkRiRJJCY7VyQmISkbKEI
0981nobodyさん02/09/16 03:22ID:???
981ゲト
0982nobodyさん02/09/16 21:35ID:PzkShHDm
    あんま調子乗んなよ・・・
        __
      /_、_\
      (  _ノ` )  ズキューン
   /⌒ /_ \    , :,
  ( ;y=ー(  _ノ` )・∵: ; 
    / と ̄ ̄_)
   / /\  ̄ / ̄\ ←◆3pIoOHKo
 _| ̄ ̄ \ /  ヽ \_
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
0983perl初心者02/09/17 00:56ID:i0fZtbTD
申し訳ありません。前スレに同じような質問があったらしいのですが、dat落ちしてまして……(T_T)

TMPL_LOOPのネストって出来るのでしょうか? もし出来るとしたら、その方法は?
テンプレではTMPL_LOOPをネスとさせておいて、単純に配列に配列を格納すればいいのでしょうか?
0984nobodyさん02/09/17 01:14ID:???
>>983
正解 つーか自分で試せ
次スレ http://pc.2ch.net/test/read.cgi/php/1032070299/
0985nobodyさん02/09/17 01:23ID:jlRQ/iYc
cookieについてです。
他のブラウザは大丈夫なのにMAC版のIEでのみcookieが書き込めないと言う
現象がおきて困っています。考えられる原因はなんでしょう?
手法としては通常通りHTMLヘッダの前にprint文でSet-Cooki:を出力しています。
0986nobodyさん02/09/17 02:53ID:???
1000!
0987nobodyさん02/09/17 06:28ID:yAKo74Fa
>>985
> 他のブラウザは大丈夫なのにMAC版のIEでのみcookieが書き込めないと言う
日本語の値をMacOSX用IE5.2のcookieに書き込む場合には、
Jcode.pmを利用して、UTF-16形式にエンコードする必要が
あるかもしれません。
0988nobodyさん02/09/17 07:57ID:PJt6wEZh
988ゲト
0989nobodyさん02/09/17 08:45ID:???
 
0990nobodyさん02/09/17 08:45ID:???
  
0991nobodyさん02/09/17 08:45ID:???
   
0992nobodyさん02/09/17 08:45ID:???
    
0993nobodyさん02/09/17 08:45ID:???
     
0994nobodyさん02/09/17 08:45ID:???
      
0995nobodyさん02/09/17 08:45ID:???
0996nobodyさん02/09/17 08:45ID:???
    
0997nobodyさん02/09/17 08:46ID:???
         
0998nobodyさん02/09/17 08:49ID:???
>>989 .. >>997
くだらんことするな
998ゲト
0999nobodyさん02/09/17 08:55ID:???
1000
1000100002/09/17 08:55ID:???
コテハンは死ね!
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。