回答編集履歴

3

誤記

2019/05/21 03:37

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  ```sh
46
46
 
47
- $ t.perl
47
+ $ perl t.perl
48
48
 
49
49
  in : a|"b|c|d"|e|"f|g"
50
50
 

2

訂正2

2019/05/21 03:37

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

test CHANGED
@@ -30,7 +30,11 @@
30
30
 
31
31
  # $x =~ s/"([^"]*)"/'"' . $1 =~ s!\|!,!gr . '"'/ge;
32
32
 
33
+ # さらに訂正: 最短一致を用いた方がよいと思いました。
34
+
33
- $x =~ s/("[^"]*")/$1 =~ s!\|!,!gr/ge;
35
+ # $x =~ s/("[^"]*")/$1 =~ s!\|!,!gr/ge;
36
+
37
+ $x =~ s/(".*?")/$1 =~ s!\|!,!gr/ge;
34
38
 
35
39
  print 'out: ' . $x . "\n";
36
40
 

1

訂正

2019/05/21 02:48

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

test CHANGED
@@ -26,7 +26,11 @@
26
26
 
27
27
  print 'in : ' . $x . "\n";
28
28
 
29
+ # 訂正: 下記は冗長すぎました。ダブルクォートもグループ中に含めた方が単純に書けますね
30
+
29
- $x =~ s/"([^"]*)"/'"' . $1 =~ s!\|!,!gr . '"'/ge;
31
+ # $x =~ s/"([^"]*)"/'"' . $1 =~ s!\|!,!gr . '"'/ge;
32
+
33
+ $x =~ s/("[^"]*")/$1 =~ s!\|!,!gr/ge;
30
34
 
31
35
  print 'out: ' . $x . "\n";
32
36