質問編集履歴

2

間違っている点、解読不能点にコメントを追加

2018/05/23 08:07

投稿

peter_kes
peter_kes

スコア14

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- print "Content-Type: text/html; charset=Shift_JIS\n\n";
13
+ print "Content-Type: text/html; \n\n";
14
14
 
15
15
 
16
16
 
@@ -80,7 +80,7 @@
80
80
 
81
81
  {
82
82
 
83
- open my $fh,">:encoding(UTF-8)", $file_name
83
+ open my $fh,">", $file_name
84
84
 
85
85
  or die "$file_name error $!";
86
86
 
@@ -96,11 +96,7 @@
96
96
 
97
97
 
98
98
 
99
-
100
-
101
-
102
-
103
- my $json;
99
+ my $json; #jsonファイルから全てのメッセージデータを取得
104
100
 
105
101
  {
106
102
 
@@ -118,7 +114,7 @@
118
114
 
119
115
 
120
116
 
121
- my @array = ();#アペンドするために存在するデータを配列に入れる
117
+ my @array = ();
122
118
 
123
119
 
124
120
 
@@ -126,7 +122,7 @@
126
122
 
127
123
 
128
124
 
129
- my $json_in = decode_json($json);
125
+ my $json_in = decode_json($json); ##新しいメッセージを現在のメッセージデータの最後に追加するために存在するデータをあらかじめ配列に入れておく(Jsonファイルに新しいデータを追加するのはどうやったらいいのかわかっていない....)
130
126
 
131
127
 
132
128
 
@@ -142,6 +138,8 @@
142
138
 
143
139
 
144
140
 
141
+ #新メッセージ
142
+
145
143
  my $new_data = {
146
144
 
147
145
  'message' => $message,
@@ -156,11 +154,11 @@
156
154
 
157
155
 
158
156
 
159
- push @array, $new_data;
157
+ push @array, $new_data;#過去のすべてのメッセージが入っている配列に追加
160
158
 
161
159
 
162
160
 
163
- my $json_out = encode_json (\@array);
161
+ my $json_out = encode_json (\@array); #配列をJson化する
164
162
 
165
163
 
166
164
 

1

コードを変更しても直らないため、現在の現コードを書く

2018/05/23 08:07

投稿

peter_kes
peter_kes

スコア14

test CHANGED
File without changes
test CHANGED
@@ -2,15 +2,147 @@
2
2
 
3
3
  色々解決法をためしましたが、直りません。どこがおかしいんでしょうか?
4
4
 
5
+ ```perl
5
6
 
6
7
 
7
- <Perl>
8
8
 
9
- $message = decode_utf8($message);
9
+ #!/usr/bin/perl
10
10
 
11
- my $new_data = {
12
11
 
12
+
13
+ print "Content-Type: text/html; charset=Shift_JIS\n\n";
14
+
15
+
16
+
17
+ # use module
18
+
19
+ use Data::Dumper;
20
+
21
+ use Time::Local;
22
+
23
+ use DateTime;
24
+
25
+ use JSON;
26
+
27
+ use utf8;
28
+
29
+ use Encode;
30
+
31
+ use URI::Escape;
32
+
33
+
34
+
35
+ use strict;
36
+
37
+ use warnings;
38
+
39
+
40
+
41
+ my $data;
42
+
43
+ #get data from unity
44
+
45
+ if ($ENV{'REQUEST_METHOD'} eq 'POST')
46
+
47
+ {
48
+
49
+ read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
50
+
51
+ } #end of if
52
+
53
+ else
54
+
55
+ {
56
+
57
+ $data = $ENV{'QUERY_STRING'};
58
+
59
+ }#end of else
60
+
61
+
62
+
63
+ my $message;
64
+
65
+ my $client_number;
66
+
67
+ (my $message_tag,$message, my $client_number_tag, $client_number) = split(/=|&/,$data);
68
+
69
+
70
+
71
+
72
+
73
+ $message = uri_unescape($message);
74
+
75
+
76
+
77
+ my $file_name = "message.json";
78
+
79
+ if(! -e $file_name) #ファイルがなければ、UTF8文字コードのjsonファイル作成
80
+
81
+ {
82
+
83
+ open my $fh,">:encoding(UTF-8)", $file_name
84
+
85
+ or die "$file_name error $!";
86
+
87
+ close $fh;
88
+
89
+ }
90
+
91
+
92
+
93
+ my $dt = DateTime->now( time_zone=>'local');#現時刻取得
94
+
13
- 'id' => $last_id,
95
+ my $ymdhms = $dt->datetime;
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ my $json;
104
+
105
+ {
106
+
107
+ local $/; #Enable 'slurp' mode
108
+
109
+ open my $fh,"<", $file_name;
110
+
111
+ $json = <$fh>;
112
+
113
+ close $fh;
114
+
115
+ }
116
+
117
+
118
+
119
+
120
+
121
+ my @array = ();#アペンドするために存在するデータを配列に入れる
122
+
123
+
124
+
125
+ if($json){
126
+
127
+
128
+
129
+ my $json_in = decode_json($json);
130
+
131
+
132
+
133
+ foreach my $item( @$json_in) {
134
+
135
+ push @array, $item;
136
+
137
+
138
+
139
+ }
140
+
141
+ }
142
+
143
+
144
+
145
+ my $new_data = {
14
146
 
15
147
  'message' => $message,
16
148
 
@@ -22,8 +154,30 @@
22
154
 
23
155
 
24
156
 
157
+
158
+
25
159
  push @array, $new_data;
26
160
 
27
-
161
+
28
162
 
29
- my $json_out = to_json \@array, {ascii=>1, pretty => 1};
163
+ my $json_out = encode_json (\@array);
164
+
165
+
166
+
167
+ open my $fh, ">", $file_name
168
+
169
+ or die "$file_name error $!";
170
+
171
+ print $fh $json_out ;
172
+
173
+ close $fh;
174
+
175
+
176
+
177
+ print ("Success");
178
+
179
+
180
+
181
+ exit;
182
+
183
+ ```