diff --git a/perlito5.pl b/perlito5.pl index b37d65071..5e6470314 100644 --- a/perlito5.pl +++ b/perlito5.pl @@ -23615,6 +23615,9 @@ } } public static final PlObject list_replicate(PlArray o, PlObject c, int wantarray) { + if (wantarray == PlCx.SCALAR) { + return PerlOp.string_replicate(o.aget(-1), c); + } int count = c.to_int(); PlArray a = new PlArray(); if (count > 0) { @@ -23622,7 +23625,7 @@ a.push( o ); } } - return (wantarray == PlCx.LIST ) ? a : a.length_of_array(); + return a; } public static final PlObject grep(PlClosure c, PlArray a, PlArray list__, int wantarray) { PlArray ret = new PlArray(); diff --git a/src5/lib/Perlito5/Java/Runtime.pm b/src5/lib/Perlito5/Java/Runtime.pm index 49528da21..f2d733d7a 100644 --- a/src5/lib/Perlito5/Java/Runtime.pm +++ b/src5/lib/Perlito5/Java/Runtime.pm @@ -1095,6 +1095,9 @@ class PerlOp { } } public static final PlObject list_replicate(PlArray o, PlObject c, int wantarray) { + if (wantarray == PlCx.SCALAR) { + return PerlOp.string_replicate(o.aget(-1), c); + } int count = c.to_int(); PlArray a = new PlArray(); if (count > 0) { @@ -1102,7 +1105,7 @@ class PerlOp { a.push( o ); } } - return (wantarray == PlCx.LIST ) ? a : a.length_of_array(); + return a; } public static final PlObject grep(PlClosure c, PlArray a, PlArray list__, int wantarray) { PlArray ret = new PlArray();