fork download
  1. #!/usr/bin/perl
  2.  
  3. @Lines = (
  4. "1, 4, 5, -6, -8 , 3, 1",
  5. "1, 3333333333333333333333333334, 5, -6, -8 , 3, 1",
  6. " 5 , 6, 57, +68 , 18, 32, 4 ",
  7. "77",
  8. "",
  9. " ",
  10. "1, 4, 5, 6, 8, 3, 1,",
  11. " , 6, 57, 68 , 18, 32, 4",
  12. "5, 6, , 68, 18, 32, 4",
  13. "5, 6,, 68, 18, 32, 4",
  14. "5, 6, T, 68, 18, 32, 4",
  15. "5, 6, 34T, 68, 18, 32, 4",
  16. "5, 6, 34 55, 68, 18, 32, 4",
  17. ",",
  18. ",,",
  19. ",, ,, ,,,"
  20. );
  21.  
  22. map { print "\"$_\": ".parse($_)."\n"; } @Lines;
  23.  
  24. ##############################################################
  25.  
  26. sub parse {
  27. my ($str,$pos) = (shift,0);
  28. return "В начале строки не число" if $str =~ /^\s*,/;
  29. return "В конце строки не число" if $str =~ /,\s*$/;
  30. map {
  31. return (($pos==0) ? "В начале строки" : "В позиции \"$pos\""). " не число"
  32. unless (/^[+-]?\d+$/ && $_+1!=$_);
  33. $pos++;
  34. } split(/\s*,\s*/, $str);
  35. return "Ok";
  36. }
  37.  
Success #stdin #stdout 0s 6000KB
stdin
Standard input is empty
stdout
"1, 4, 5, -6, -8 , 3, 1": Ok
"1, 3333333333333333333333333334, 5, -6, -8 , 3, 1": В позиции "1" не число
"       5 , 6, 57, +68 , 18, 32, 4   ": В начале строки не число
"77": Ok
"": Ok
"    ": В начале строки не число
"1, 4, 5, 6, 8, 3, 1,": В конце строки не число
" , 6, 57, 68 , 18, 32, 4": В начале строки не число
"5, 6, , 68, 18, 32, 4": В позиции "2" не число
"5, 6,, 68, 18, 32, 4": В позиции "2" не число
"5, 6, T, 68, 18, 32, 4": В позиции "2" не число
"5, 6, 34T, 68, 18, 32, 4": В позиции "2" не число
"5, 6, 34 55, 68, 18, 32, 4": В позиции "2" не число
",": В начале строки не число
",,": В начале строки не число
",, ,, ,,,": В начале строки не число