splitが思うように動きません助けて下さい。
文字列から、明細と金額にわけてそこから検索できるプログラムを作っています。
テスト用に下記サンプルを作ったのですが、検索明細($moneyvalue)をコーヒーに
した場合のみ、値が戻ってきませんでした。
そこで、中のsplit部分を表示するようにしたところ
★収入=-10000.
★電車=+1000.
★コ=.
★[ヒ=.
★[=+2000.
★雑誌=+240.
★=.
★その他=+500.
0
このように コーヒーの部分だけ上手くsplitが動いていないことが分かりました。
しかしココから手詰まりでどのように直せばいいのか分かりません。
想定される結果
★収入=-10000.
★電車=+1000.
★コーヒー=+2000.
★雑誌=+240.
★その他=+500.
2000
このようにするにはどうしたらいいのか、分かる方おりましたら教えて下さい。
なお、当方はperl初心者です(涙)
----以下サンプルコードです----
#! /usr/local/bin/perl
use Encode qw(encode_utf8);
use CGI;
my $moneyvalue = "コーヒー";
my $moneyline = "収入-10000,電車+1000,コーヒー+2000,雑誌+240、その他+500";
print &chkmoneyValue($moneyline,$moneyvalue);
exit;
#==============================================================================
sub chkmoneyValue
{
my ($moneyline , $moneyvalue)=@_;
my $lp=0;
my $flg=0;
my @data= split(/[、,]/, $moneyline);
my $datavalue = 0;
foreach my $wdata (@data)
{
$wdata =~ s/\+/\,\+/;
$wdata =~ s/\-/\,\-/;
my @data2 = split(/[,]/, $wdata);
print "★$data2[0]=$data2[1].\n";
if($data2[0] eq $moneyvalue){
$datavalue=$data2[1];
last;
}
}
return $datavalue;
}
お礼
よく分かりました。 ありがとうございました。