我有一個問題,把我的數據轉換成json,我不知道爲什麼。Perl把數據轉換成JSON格式
下面是一些工作代碼:
#constructor
sub new {
my $class = shift;
my $Titel = shift;
my $Text = shift;
my $Time = localtime;
my $self = {};
$self->{text} = $Text;
$self->{create} = $Time;
$self->{edit} = $Time;
my $json = JSON::XS->new();
open WF, '>> $file' || die "Error : $!";
print WF $json->encode($self)."\n";
close WF;
bless $self, $class;
}
我創建一個「對象」,並保存在一個文本(通過JSON)中的數據了。
我有問題,如果我嘗試編輯一些數據:
sub edit {
my $self = shift;
my $Text = shift;
my $ID = shift;
my $Time = localtime;
my $json = JSON::XS->new();
$json->allow_blessed(1);
$self->{text} = $Text; #edit text
$self->{edit} = $Time; # edit date
open INPUT, '< $file' || die "Error : $!";
my @data = <INPUT>;
close(INPUT);
open WF, '> $file' || die "Error : $!";
for (my $Count=0; $Count<=$#data; $Count++){
chomp($data[$Count]);
if($Count == $ID){#if line of data found, who is going to be edited
print WF $json->encode($self)."\n";
}else{
print WF $data[$Count]."\n";
}
}
close WF;
}
我嘗試做的是編輯在文本文件中添加一行。(如果你有更好的想法,請告訴我:d)
我看到我的代碼程序之間沒有差異顯示第一和一個....
它只是寫道:「空」早在文本文件...
任何想法?
因爲現在你的單引號不會插入'$ file'變量,所以你需要在第二個參數的'open'周圍使用雙引號。更好的辦法是使用3參數形式'open INPUT',''',$ file' – 2011-04-25 19:49:27
我的問題是,它寫回「012」行 - > print WF $ json-> encode($ self)。 「\ n」; < - 我可以打開文件等(我編輯代碼..錯誤。抱歉:D有一個路徑在我原來的代碼,而不是'$文件'。 ) – Prexx 2011-04-25 19:51:11
是否將「子編輯」稱爲方法?即「$ thing-> edit()」? – 2011-04-25 19:52:53