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

Perl 初心者コーナー Part23

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/05/16 11:18ID:zDRBc/j4
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
044944003/05/26 23:33ID:haPyfOxB
>>448
そうですね。レスサンクス。
realParseだけなんで中に書きます
0450nobodyさん03/05/26 23:36ID:x8s60k6p
目的によってシステムを構築しなさい
その際、じっくりと頭の中でシステムを描きなさい
そうすればおのずと答えは出てきます
0451nobodyさん03/05/27 00:16ID:???
>>444
マジレスするなら……

俺は開発速度を優先するべき状況にいるので、
ライブラリはとことん利用する立場だ。
Perlの場合はモジュールが便利だ。CPANを見るべし。

ライブラリを使えば、ソース自体を短くすることができ、
短いソースは同時にバグの入る確率が少なくなることを意味する。
副次的にバグの絶対数を下げる効果も期待できる。
(ライブラリにバグが入ってたらどうしようもないが、
 自分よりも能力のある人間(作者)を信じて突き進むのみだ)

ま、好きにしろい。
0452nobodyさん03/05/27 00:18ID:LZ3W66wZ
>>438
いると思う。
自分でフォームデコード書くならいらないけど。
045345203/05/27 00:22ID:LCoN4Nuw
しくった。

漏れは勉強がてら、
ライブラリに頼らず自分でコード書く。
045442403/05/27 00:56ID:tldcRAHy
SORT のマニュアルを読んでやってみたのですが、どうもうまくいきません。

$ORG{'person'}[1]="tanaka";   $ORG{'adana'}[1]="tanachan";  $ORG{'adanaid'}[1]=5;
$ORG{'person'}[2]="takada";   $ORG{'adana'}[2]="takachan";  $ORG{'adanaid'}[2]=2;
$ORG{'person'}[3]="imai";     $ORG{'adana'}[3]="imachan";   $ORG{'adanaid'}[3]=3;
$ORG{'person'}[4]="takenaka";  $ORG{'adana'}[4]="takechan";  $ORG{'adanaid'}[4]=1;
$ORG{'person'}[5]="hirano";   $ORG{'adana'}[5]="hirachan";  $ORG{'adanaid'}[5]=4;

で、
foreach ($key {sort { $ORG{'adanaid'}[$a] <=> $ORG{'adanaid'}[$b] } @ORG{'adanaid'}){
 print qq|\$ORG{'person'} = $ORG{'person'} , \$ORG{'adana'} = $ORG{'adana'}, \$ORG{'adanaid'} = $ORG{'adanaid'}<br>|;
}
としたら、
compilation errors.になってしまいます。
思うに、@ORG{'adanaid'}があやしいのかとも思うのですが、
ただしい記法はどうすればいいのでしょうか?
($ORG{'adanaid'}[1], $ORG{'adanaid'}[2], $ORG{'adanaid'}[3], $ORG{'adanaid'}[4], $ORG{'adanaid'}[5])
という意味の配列を表したつもりなのですが・・・
0455動画直リン03/05/27 01:10ID:77ADrmTJ
http://homepage.mac.com/hitomi18/
0456nobodyさん03/05/27 01:10ID:???
>>454
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
045745403/05/27 01:28ID:tldcRAHy
>>456
あー、それですねー。実は前に読んでちんぷんかんぷんで、
そのままにしてました。。。
しかし、今読んでもちんぷんかんぷん。。。
(わからない用語ばかりで、用語を調べるとよけいにわからなくなる(泣))

もしよかったら、恐縮がですが、
($ORG{'adanaid'}[1], $ORG{'adanaid'}[2], $ORG{'adanaid'}[3], $ORG{'adanaid'}[4], $ORG{'adanaid'}[5])
を配列として表す方法を教えていただけませんjか?
そしたら、演繹的に勉強していきますので・・・。
0458nobodyさん03/05/27 01:49ID:???
>>454
データ形式を見直したほうがいいのでは……
それと、$ORG{}[0]の要素が未定義じゃマズいでしょ。それもソートの対象になるんだから。
045945403/05/27 01:59ID:tldcRAHy
>>458
あ、ほんとですね。。。ありがとうございます。
0460nobodyさん03/05/27 02:25ID:???
>>457
こういうのは実際に最小限のコードをどんどん書いて実際に
走らせながら理解していくのが一番早いし身につくんだが…。

@list = ('a', 'b', 'c');
$list = \@list; # \ で配列 @list のリファレンスを得る
print $list; # "ARRAY(0xbb1350)" ← $list の中身は配列のリファレンス
print @{$list}; # "abc" ← @{} で配列としてデリファレンス
print @$list; # {} を省略した書き方

# [] で無名配列のリファレンスを作成
# @list のように変数名が無いから「無名」
$list = [ 'd', 'e', 'f' ];
print $list; # "ARRAY(0xbb135c)"
print @{$list}; # "def"

%hash = (a => 1, b => 2, c => 3);
print "$_:$hash{$_}/" foreach sort keys %hash;
# "a:1/b:2/c:3/"

%hash = (a => [0..3], b => [4..7], c => [8..11]);
print "$_:$hash{$_}/" foreach sort keys %hash;
# "a:ARRAY(0xbb1350)/b:ARRAY(0xbb1374)/c:ARRAY(0xbb1398)/"
# $hash{'a'} の中身は配列のリファレンス

print @{$hash{'a'}}; # "0123" ← @{} で配列としてデリファレンス

これでもう分かるよな?
046145703/05/27 11:13ID:OknXPD/2
>>460
リファレンスについて、随分わかってきました。
print @{$ORG{'adanaid'}};
で、配列要素一覧が取り出せることもできました。

ただ・・・もう少しおつきあいねがえませんでしょうか?(非常に恐縮です)
同じりくつで、

foreach ($key {sort { @{$ORG{'adanaid'}}[$a] <=> @{$ORG{'adanaid'}}[$b] } @{$ORG{'adanaid'}) {
  print qq|\$ORG{'person'} = $ORG{'person'} , \$ORG{'adana'} = $ORG{'adana'}, \$ORG{'adanaid'} = $ORG{'adanaid'}<br>|;
}
とやったのですが、コンパイルエラーになってしまいます。
print @{$ORG{'adanaid'}}[1]は動くから、そのまま1を$aと$bに変えればいいかと思ったのですが・・・
0462_03/05/27 11:24ID:???
http://homepage.mac.com/hiroyuki43/jaz07.html
0463nobodyさん03/05/27 11:43ID:???
>>461
次はsortの動きについて勉強しようね。
誰か、心優しい人はどぞ。↓
0464nobodyさん03/05/27 12:10ID:???
>>461
まず「コンパイルエラー」みたいな曖昧なエラー名はやめよう。
必ず表示されたエラーメッセージを正確に書くこと。

そのソース、実行してみたけど syntax error at hoge.pl line 7, near "})" とか、
あまりに初歩的なミスをやってる。foreach の使い方もヘン。
データの管理法も、あまりソートとかに向いてない形式だから変えたほうがいいと
個人的には思う。
漏れも試行錯誤してみたが、データを一度結合してからソートして、ループ内で
また分割するという非効率な方法しか思いつかなかった。
046546103/05/27 13:03ID:???
>>464

KCatch.pmを使っていたのですが、
コンパイルエラーとしかいってくれなかったので、そういうもんだと思ってました。。。
すみません。

別のものに変えてみようかしら
0466nobodyさん03/05/27 13:09ID:???
>>465
kcatchってそういうもんなの?
CGI::Carpを使ってみては。(使い方はぐぐってね)
もっとも、コマンドラインで実行させるのが一番手っ取り早いんだけど。
0467nobodyさん03/05/27 13:14ID:???
「ぐぐって」とは?
0468nobodyさん03/05/27 13:16ID:???
>>467
googleで検索して
http://www.google.co.jp/
046946503/05/27 13:20ID:???
>>466
use CGI::Carp qw(fatalsToBrowser);
したら、
「Software error:
Execution of test.cgi aborted due to compilation errors.
For help, please send mail(以下略)」と・・・
なんでだろう
0470nobodyさん03/05/27 13:33ID:???
ソース晒せ
047146503/05/27 13:51ID:???
>>470
foreachの部分をコメントアウトすると、正常です。
入れると、「コンパイルエラー」だそうです。
------------------------------------------------------------

$ORG{'person'}[1]="tanaka";$ORG{'adana'}[1]="tanachan";$ORG{'adanaid'}[1]=5;
$ORG{'person'}[2]="takada";$ORG{'adana'}[2]="takachan";$ORG{'adanaid'}[2]=2;
$ORG{'person'}[3]="imai"; $ORG{'adana'}[3]="imachan";$ORG{'adanaid'}[3]=3;
$ORG{'person'}[4]="takenaka"; $ORG{'adana'}[4]="takechan";$ORG{'adanaid'}[4]=1;
$ORG{'person'}[5]="hirano";$ORG{'adana'}[5]="hirachan";$ORG{'adanaid'}[5]=4;
#print @{$ORG{'adanaid'}}[1];
print @{$ORG{'adanaid'}};

foreach ($key {sort { @{$ORG{'adanaid'}}[$a] <=> @{$ORG{'adanaid'}}[$b] } @{$ORG{'adanaid'}) {
   print qq|\$ORG{'person'}[\$key] = $ORG{'person'}[$key] , \$ORG{'adana'}[\$key] = $ORG{'adana'}[$key], \$ORG{'adanaid'}[\$key] = $ORG{'adanaid'}[$key]<br>|;
}
0472nobodyさん03/05/27 14:02ID:???
Software error:

syntax error at test.pl line 11, near "}) "
syntax error at test.pl line 13, near "}"
Missing right curly or square bracket at test.pl line 13, at end of line
Execution of test.pl aborted due to compilation errors.

For help, please send mail to this site's webmaster, giving this error message
and the time and date of the error.

うちでやったらこう出たが……(Win2000+ActivePerl5.6.1)
本当に>>469しか出なかったの?
っていうか、あなたの実行環境ってどんなん?
047346303/05/27 14:22ID:???
>>471
・・・汚ねぇソース・・・

$ORG[0] = {
  "person" => "tanaka",
  "adana" => "tanachan",
  "adanaid" => 5,
};
$ORG[1] = {
  "person" => "takada",
  "adana" => "takachan",
  "adanaid" => 2,
};
$ORG[2] = {
  "person" => "imai",
  "adana" => "imachan",
  "adanaid" => 3,
};
$ORG[3] = {
  "person" => "takenaka",
  "adana" => "takechan",
  "adanaid" => 1,
};

つづく
047446303/05/27 14:22ID:???
$ORG[4] = {
  "person" => "hirano",
  "adana" => "hirachan",
  "adanaid" => 4,
};

@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) {
  print 'person='. $ORG[$_]->{person}. "\n";
  print 'adana='. $ORG[$_]->{adana}. "\n";
  print 'adanaid='. $ORG[$_]->{adanaid}. "\n";
}
exit(0);

こんな実行結果がお望みですか。
タブは見やすいように全角スペース
0475nobodyさん03/05/27 14:22ID:Z3njAYJb
>foreach ($key {sort { @{$ORG{'adanaid'}}[$a] <=> @{$ORG{'adanaid'}}[$b] } @{$ORG{'adanaid'}) {
@{$ORG{'adanaid'}) いっこ括弧閉じが足り無くない?
0476nobodyさん03/05/27 14:26ID:???
>>475
それでも動かない罠
0477_03/05/27 14:33ID:???
http://homepage.mac.com/hiroyuki43/jaz07.html
0478nobodyさん03/05/27 17:02ID:Ahi5sL61
スミマセン、質問です
Jcodeモジュールの使えないサーバーで
Unicode(UTF-8) -> Shift JISの変換を行いたいのですが
どうすればよいでしょうか?
0479nobodyさん03/05/27 17:18ID:???
>>478
CJKVConv.pl を使うとか
0480nobodyさん03/05/27 17:56ID:???
>>478
実はPerl5.8の鯖で、Encodeモジュールが入ってるとか。
048147803/05/27 18:36ID:???
>>479,480
レスありがとうございます!
CJKVConv.pl ググってみます。
ちなみに、Perlのバージョンは5.00503です
0482名前はまだ無い03/05/27 19:39ID:0dveLtbZ
初歩的な質問で恐縮なのですが、PERLのCGIで空ファイルを作るときは
open(a,">b");
close(a);
なんかで出来ましたよね。
空フォルダを作りたい場合はどのようにすれば良いのでしょうか?
上の">b"を">c/b"などにしても作ることが出来ませんでした。

どなたかお答えを願います。
0483nobodyさん03/05/27 19:42ID:???
mkdir
0484名前はまだ無い03/05/27 20:03ID:???
ありがとうございます
048546903/05/27 20:33ID:CEAVaVCK
>>472

2つのサーバで試したんですけど、syntax error at とかいってくれないですねー。
両方ともFreeBSDなんですけど、関係ないですよねー・・・
048647103/05/27 20:35ID:???
>>473-474 さんありがとうございます。
なるほどーーーです。
変数の一元目にソートするものを持ってくるわけですね。

アルゴリズム考えるのに、foreachのところばかりにとらわれてました。
もっと全体的視点からアルゴリズムを考えないとだめですね。

ありがとうございます。コード参考にさせていただきます。
0487動画直リン03/05/27 21:10ID:77ADrmTJ
http://homepage.mac.com/hitomi18/
0488nobodyさん03/05/27 22:20ID:???
>>485
ちょっと呆れた。

鯖で実験すんなよ。
他人の物で無限ループとかのひどいバグがあるかも知れないプログラムを走らせようとするな。
そういうのは、ローカルでしっかりチェックしてから鯖にあげるもんだ。

まずローカルにPerlをインストールすること。(WinならActivePerl)
スクリプトのバグがあるかどうかのチェックは、
1.MS-DOSプロンプトを開き、
2.スクリプトのあるディレクトリまで移動し、
3."perl スクリプト名"と入力する。

CGIを実行しようとすると、うまく行けばHTMLが吐き出されるはずだし、
バグがあればエラーメッセージが出て止まる。

自分の尻拭いは自分でできるようになろう。
0489nobodyさん03/05/27 23:22ID:???
16777215(\xFFFFFF)以上の文字を
$num = sprintf("%X", 116777215);
のようにして16進数に直そうとすると、全て\xFFFFFFになってしまいます。
どうしたらいいでしょうか?
0490nobodyさん03/05/28 00:45ID:d/eWTjVe
@array = qw( apple orange banana angle tv home ・・・・・・・ );

のようになっている配列に対して、anにマッチする要素の
インデックス番号(上の例なら 1, 2, 3 ・・・)を得たいのですが
ループを回さずに綺麗にできる方法はないでしょうか?
0491nobodyさん03/05/28 00:55ID:???
>>490

my $count;
my %temp = map { $_, $count ++ } @array;
@result = @temp{grep { /an/ } @array};

こんな感じかなー。インクリメントのあたりが怪しいけど。
0492nobodyさん03/05/28 01:07ID:???
>>491
難しく考え過ぎ。
@array = qw( apple orange banana angle tv home );
@result = grep $array[$_] =~ /an/, 0..$#array;
0493nobodyさん03/05/28 01:30ID:???
>>489
$number = 16777215(\xFFFFFF)以上の文字;
$num = sprintf(qq{%04X%04X},int($number/0x10000),$number%0x10000);
みたいな。
049449003/05/28 01:43ID:???
>>490-491
ひたすらgrepかmapを眺めていて、どちらかでできそうだと
思っていたのですが、全く思いつきませんでした。
まだまだ修行不足でした。ありがとうございました。
0495nobodyさん03/05/28 03:57ID:???
他のサーバーにあるファイルをhttpで読み込みたいんですけど、
それを解説してるページってあります? ぐぐっても見つかんなかった。


0496nobodyさん03/05/28 03:58ID:???
フォームから受け取った値から、下記の記号を取り除こうとすると、
if($name eq "ほげ"){
if($value =~ tr/;<>*|`/&$!#{}:;'"$//){
$error[n] = "エラーだぴょん";
$errorh = "1";
}
}

カタカナなんかもエラーの対象になってしまうのであります。
なんでなの?
0497nobodyさん03/05/28 04:03ID:???
>>496
エスケープ
0498nobodyさん03/05/28 04:17ID:???
>>496
なんじゃこりゃ・・・
0499nobodyさん03/05/28 04:26ID:???
日本語も混じってるテキストファイル(EUC-JP)からハッシュ値
だけ抜き出したいんですけどうまく抜き出せません。他にもゴミ
がついてきます。
#!/usr/bin/perl
while(<STDIN>){
if(/\b[a-z|0-9]{32}\b/){
print;
}
}

どうしたらいいですか?
0500nobodyさん03/05/28 04:32ID:???
>>496
あまりに問題外すぎます・・・。
もう少し勉強した方が・・・。

>>499
どんなファイルフォーマット?
0501nobodyさん03/05/28 04:48ID:???
フォーマットめちゃくちゃでも抜き出せるように
したいんですけど無理ですかね。。?もちろん、
空白か行頭、行末にはさまれてはいます。
0502nobodyさん03/05/28 04:54ID:???
>>501
たとえば、こんな状態で・・・って数行晒してくれない?
ハッシュ値って、どんな値なのかさっぱり。
0503nobodyさん03/05/28 05:32ID:???
>>502そうですよね。すみません

おらおらおらおら無駄無駄無駄無駄 by じょうたろう
vizelj f6c08af464e2db2d05988c121db29156

こんな感じです。ハッシュ値ってのは最後の英数字の
羅列です。アルファベットの小文字または数字で構成
されていて長さは32文字固定です。
0504nobodyさん03/05/28 06:55ID:???
>>493
目から鱗が落ちました。ありがとうございました。
0505nobodyさん03/05/28 07:58ID:???
パターンマッチした部分だけが必要なら $& とか $1 とか使う。

if(/\b([0-9a-z]{32})\b/){
print $1;
}
0506nobodyさん03/05/28 13:22ID:???
oepn(FA,">file");
close(FA);

のように、新規ファイルを作成すると
パーミッションが 0644 になってしまうので

 chmod(0777,"file");

のように0777に変えてやってるんですが、うまくいきません。(パーミッション変更出来ない)
サーバによっては上手く行くので、原因はサーバ側の設定でしょうか?
もしそうであれば管理者に相談しようと思うのですが、
それ以外で解決策ありますでしょうか?

やりたい事としては
・新規ファイル、ディレクトリを作成→パーミッションを777にしたい
です。
0507nobodyさん03/05/28 13:42ID:???
>>506
ファイルは忘れた(なんかあったと思う)
ディレクトリなら、
mkdir "dirname",777;
とかでいけたはず。
0508nobodyさん03/05/28 13:52ID:???
画像のアップローダーを作っててサイズ制限の機能をつけてるんですが、
現状標準入力から受け取って、ファイルとテキストを切り分けて、ファイルのサイズを取得して
サイズが大きいと蹴ってるのですが、

これだとサーバーに送信された後の処理なので、送信される前になんらか手を打てないしょうか?
0509nobodyさん03/05/28 13:55ID:???
ファイルを777にする必要ってないだろう。
鯖によっては777を禁止してるとこもあるかもしれないな。
755にも変更できないのか?
0510nobodyさん03/05/28 13:58ID:???
>>508
うろ覚えで悪いが、送信時にいけなかったっけか?
<input type=hidden name=MAX_FILE_SIZE value="500000">
たしかこんな感じで。
valueに最大ファイルサイズを入れればいいと思う。

ただ、うろ覚えなので確認は自分で。
051150803/05/28 14:02ID:???
>>510
なるほど、フォームでやれるわけですね、
ちょっと調べてみますサンクスコ
0512nobodyさん03/05/28 14:15ID:???
>506
umaskとか。
0513nobodyさん03/05/28 14:51ID:???
>>511
調べるとPHPだとそのタグでいけるようですが、
Perlでは見当たりませんでした

試してみてもやっぱりダメでした
ぬぬ
0514nobodyさん03/05/28 15:06ID:???
>>513
そうか、PHPだけか…すまんかった。

じゃあちょっと手抜きだが、これでは駄目?


if($ENV{CONTENT_LENGTH} < $max_filesize) {
ファイルがでかかった時の処理
exit;
}

これだとpostされたデータ全体になるので、厳密な画像サイズだけでは無いけど
まあ、大体で制限できるかと。
051551403/05/28 15:09ID:???
悪い、逆だった。


×if($ENV{CONTENT_LENGTH} < $max_filesize) {
○if($ENV{CONTENT_LENGTH} > $max_filesize) {

051651303/05/28 15:22ID:???
>>514-515
その処理にしようかとも迷ったんですが
同じcgiで画像の添付数やテキストの入力量にかなりバラつきがあるので
やめました

もうちっと試行錯誤してみます。
0517nobodyさん03/05/28 16:15ID:???
$text = qr/abc/;
print $text;

ってすると qr の仕様らしくて、$text の中に特殊な意味を持つ文字列が入るんですが、
これを取り除く、または取り除いたデータを参照できる方法はないですか?

二重 foreach の中で正規表現は効率悪い、というのをラクダ本で見たので
やってみたのですが、$text そのものを表示して使いたいため
これがネックで困ってます…。

ラクダ本、何か宇宙語のようで読むのが大変ですw
0518山崎渉03/05/28 17:03ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0519nobodyさん03/05/28 18:02ID:???
↑アク禁にしてくれ。困る。
0520nobodyさん03/05/28 18:26ID:???
>>505
うまくいきました。さんくす!
0521nobodyさん03/05/28 18:53ID:???
>>519
山崎渉は透明あぼ〜んに登録して桶
0522nobodyさん03/05/28 19:24ID:uwixhF+z
文章の1行目から3行目までを指定して
改行を取り除きたいのですが、
どのようにすればいいのでしょうか?
改行を取り除くのは
$body =~ s/\n//g;
これでできるのですが、
$bodyの中の1行目から3行目までだけの
改行を取り除きたいと思っています。
0523nobodyさん03/05/28 19:46ID:???
>>522
@bodys = split (/\n/, $body);
chomp ($body[0], $body[1], $body[2]);

いくら初心者のためのスレだと言っても、
最低基礎くらい覚えてこい!
052452303/05/28 19:51ID:???
@bodys = split (/\n/, $body);
@head = splice (@bodys, 0, 3);
$body = join ("\n", @bodys);

スマン、俺も、ちゃんと勉強しておく。。。
0525nobodyさん03/05/28 20:15ID:+jnsOx/q
>>523
はぁ?じゃマジ初心者はどこいったらいいのよ?
お前スレタイ読んで出直してこいや(w
052652503/05/28 20:16ID:???
すまねぇ・・・ちゃんと過去ログ読むわ・・・
0527nobodyさん03/05/28 20:29ID:uwixhF+z
>>523

ありがとう。
でも配列使えないんですよ。
ポインタみたいな物使ってるので。
$body_item->{'body'}
これの中身の最初の\nから3つ目の\nまで消したいんです。
0528nobodyさん03/05/28 20:31ID:uwixhF+z
あとstrict使っているのでグローバル変数は使えないんです。
0529_03/05/28 20:32ID:???
http://homepage.mac.com/hiroyuki43/hankaku01.html
0530nobodyさん03/05/28 20:37ID:???
ヨクワカランケド
for($i=0; $i<3; $i++){
  $body_item->{'body'}[$i] =~ s/\n//g;
}
0531nobodyさん03/05/28 20:38ID:???
>>528
use vars
0532nobodyさん03/05/28 20:44ID:uwixhF+z
>>530
>531
ありがとう
use vars

for($i=0; $i<3; $i++){
  $body_item->{'body'}[$i] =~ s/\n//g;
}
Unrecognized character \x81 at user_lib/xxxx/xxx.pm line 198.
というエラーが出ます。
0533nobodyさん03/05/28 20:46ID:???
しるかぼけ!
198行目がなんなのかもわからんのに
0534nobodyさん03/05/28 20:49ID:uwixhF+z

use vars
@body_item->{'body'} = split (/\n/, $body_item->{'body'});
@head = splice (@body_item->{'body'}, 0, 3);
$body_item->{'body'} = join ("\n", @body_item->{'body'});
これだと

Global symbol "@body_item" requires explicit package name at user_lub/xxx/xxx.pm line 196

このようなエラーが出ます。
0535nobodyさん03/05/28 20:49ID:???
\x81 。。。。
0536nobodyさん03/05/28 20:54ID:uwixhF+z
ただ先頭から3つの\nを取り除くだけも結構大変ですね。
0537nobodyさん03/05/28 20:57ID:???
>>534
馬鹿なのか回答者をおちょくっているのか・・・
0538nobodyさん03/05/28 20:58ID:C2cSB0SK
ここのせいでオナニーしすぎだよまったく・・・
         ↓

 http://www.dvd-yuis.com/index2.html
0539nobodyさん03/05/28 20:58ID:uwixhF+z
>>537
全然おちょくってないです。
本当に困ってるんですよ。
0540nobodyさん03/05/28 21:00ID:uwixhF+z
何か他に案はないでしょうか?
0541nobodyさん03/05/28 21:01ID:uwixhF+z
substr使っても駄目だったし本当にどうすればいいんだろう・・・
0542nobodyさん03/05/28 21:05ID:???
>>539
use vars ここにグローバル変数にしたい変数を羅列;

use vars qw($a @b %c);という感じで。
0543動画直リン03/05/28 21:10ID:52+C0e9R
http://homepage.mac.com/hitomi18/
0544nobodyさん03/05/28 21:12ID:uwixhF+z
>>542
ありがとう

use vars qw(@body_item->{'body'},@head);
@body_item->{'body'} = split (/\n/, $body_item->{'body'});
@head = splice (@body_item->{'body'}, 0, 3);
$body_item->{'body'} = join ("\n", @body_item->{'body'});


これだと
@body_item->{'body'},@head' is not a valid variable name under strict vars at user_lub/xxxx/xxx.pm line 196
こういうエラーが出ます。
054552303/05/28 21:15ID:???
>>533
ワラタ
0546nobodyさん03/05/28 21:15ID:???
うわー。名前消し忘れてるし〜。
0547nobodyさん03/05/28 21:15ID:???
>use vars qw(@body_item->{'body'},@head);

カンマ区切りじゃなくて、半角スペース区切りだろ
0548nobodyさん03/05/28 21:18ID:???
>>544
@head = splice (@{$body_item->{'body'}}, 0, 3);
■ このスレッドは過去ログ倉庫に格納されています