質問編集履歴

4

みなさんに教えていただいたことを元にかきかえてみました。

2018/06/25 06:47

投稿

perlstarter
perlstarter

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,8 @@
1
1
  ### 前提
2
2
 
3
+ (助言を受け編集しました)
3
4
 
4
-
5
- perlの超初心者です。初歩的な質問ですみません。読み込んだ文書を単語単位でアルファベット順に並べ替え、新しい文書に書き込みたいです。
5
+ perlの超初心者です。初歩的な質問ですみません。読み込んだ文書をsortして、新しい文書に書き込みたいです。
6
6
 
7
7
  具体的に:
8
8
 
@@ -10,11 +10,13 @@
10
10
 
11
11
  "a am go I I school. student. to" みたいな感じにしたいです。
12
12
 
13
+ しかし、現在は
14
+
15
+ "a am I student. go I school to." みたいになってます。どうすれば段落ごとではなく全文書を並べ替えられますか?
16
+
17
+
18
+
13
19
  自分がやってみたのは以下の通りです。
14
-
15
- テキストの読み込み → 文章を単語ごとにsplit → アルファベット順に並べ替え → 新しいファイルに書き込む 
16
-
17
- という風にやってみたのですが、エラーが出てできません。どう書けば良いか教えていただけますか?よろしくお願いします。
18
20
 
19
21
 
20
22
 
@@ -24,31 +26,23 @@
24
26
 
25
27
  ```
26
28
 
27
- open(TEXT, "< 場所とテキスト.txt");
29
+ open(TEXT, "< 元の文書");
30
+
31
+
32
+
33
+ $new = "保存する場所";
34
+
35
+ open(NEW, "> $new");
28
36
 
29
37
 
30
38
 
31
39
  foreach $line(<TEXT>){
32
40
 
33
-   @line = split(/ /,$line);
41
+ @line = split(/ /,$line);
34
42
 
35
-   @line = sort(@line);
43
+ @line = sort(@line);
36
44
 
37
-   print "@line";
45
+ print NEW "@line";
38
-
39
- }
40
-
41
-
42
-
43
- $new = "新しいファイル名と場所.txt";
44
-
45
- open(NEW, "> $new");
46
-
47
-
48
-
49
- foreach $word(@line){
50
-
51
-   print NEW "$word\n";
52
46
 
53
47
  }
54
48
 
@@ -78,11 +72,9 @@
78
72
 
79
73
 
80
74
 
81
- 並べ替えられのは全文書ではなく段落ごとた以下のエラーが表示された
75
+ 保存す場所では段落ごと?行ごと?に並べ替えられてい
82
76
 
83
77
 
84
-
85
- print() on closed filehandle NEW at /ファイル名.pl line 15, <TEXT> line 6.
86
78
 
87
79
 
88
80
 

3

書式の改善。

2018/06/25 06:47

投稿

perlstarter
perlstarter

スコア9

test CHANGED
File without changes
test CHANGED
@@ -30,11 +30,11 @@
30
30
 
31
31
  foreach $line(<TEXT>){
32
32
 
33
- @line = split(/ /,$line);
33
+   @line = split(/ /,$line);
34
34
 
35
- @line = sort(@line);
35
+   @line = sort(@line);
36
36
 
37
- print "@line";
37
+   print "@line";
38
38
 
39
39
  }
40
40
 
@@ -48,7 +48,7 @@
48
48
 
49
49
  foreach $word(@line){
50
50
 
51
- print NEW "$word\n";
51
+   print NEW "$word\n";
52
52
 
53
53
  }
54
54
 

2

編集しました。

2018/06/24 15:28

投稿

perlstarter
perlstarter

スコア9

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,12 @@
3
3
 
4
4
 
5
5
  perlの超初心者です。初歩的な質問ですみません。読み込んだ文書を単語単位でアルファベット順に並べ替え、新しい文書に書き込みたいです。
6
+
7
+ 具体的に:
8
+
9
+ "I am a student. I go to school."を
10
+
11
+ "a am go I I school. student. to" みたいな感じにしたいです。
6
12
 
7
13
  自分がやってみたのは以下の通りです。
8
14
 
@@ -24,11 +30,9 @@
24
30
 
25
31
  foreach $line(<TEXT>){
26
32
 
27
-   @line = split(/ /,$line);
33
+ @line = split(/ /,$line);
28
34
 
29
-   @line = sort(@line);
35
+ @line = sort(@line);
30
-
31
-
32
36
 
33
37
  print "@line";
34
38
 
@@ -46,7 +50,7 @@
46
50
 
47
51
  print NEW "$word\n";
48
52
 
49
- }
53
+ }
50
54
 
51
55
 
52
56
 

1

教えていただいたミスを直してみました。@lineのところに問題があるようですが、具体的にどう直すべきか教えていただけますでしょうか。

2018/06/24 15:20

投稿

perlstarter
perlstarter

スコア9

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- perlの超初心者です。初歩的な質問ですみません。
5
+ perlの超初心者です。初歩的な質問ですみません。読み込んだ文書を単語単位でアルファベット順に並べ替え、新しい文書に書き込みたいです。
6
+
7
+ 自分がやってみたのは以下の通りです。
6
8
 
7
9
  テキストの読み込み → 文章を単語ごとにsplit → アルファベット順に並べ替え → 新しいファイルに書き込む 
8
10
 
9
- ということしのですが、エラーが出てできません。どう書けば良いか教えていただけますか?よろしくお願いします。
11
+ という風にやってみたのですが、エラーが出てできません。どう書けば良いか教えていただけますか?よろしくお願いします。
10
12
 
11
13
 
12
14
 
@@ -22,9 +24,11 @@
22
24
 
23
25
  foreach $line(<TEXT>){
24
26
 
25
- @line = split(/ /,$line);
27
+   @line = split(/ /,$line);
26
28
 
27
- @line = sort(@line);
29
+   @line = sort(@line);
30
+
31
+
28
32
 
29
33
  print "@line";
30
34
 
@@ -32,7 +36,7 @@
32
36
 
33
37
 
34
38
 
35
- $new = "> 新しいファイル名と場所.txt";
39
+ $new = "新しいファイル名と場所.txt";
36
40
 
37
41
  open(NEW, "> $new");
38
42