我有一个问题,把我的数据转换成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