No::Worries::String - string handling without worries


  use No::Worries::String qw(*);

  # format a number of bytes
  printf("%s has %s\n", $path, string_bytefmt(-s $path));

  # escape a string
  printf("found %s\n", string_escape($data));

  # produce a nice output (e.g "1 file" or "3 files")
  printf("found %s\n", string_quantify($count, "file"));

  # format a table
      [1, 1,  1],
      [2, 4,  8],
      [3, 9, 27],
  ], header => [qw(x x^2 x^3)]));

  # trim a string
  $string = string_trim($input);


This module eases string handling by providing convenient string manipulation functions.


This module provides the following functions (none of them being exported by default):

string_bytefmt(NUMBER[, PRECISION])

return the given NUMBER formatted as a number of bytes with a suffix such as kB or GB; the default precision (i.e. number of digits after the decimal dot) is 2


return a new string with all potentially non-printable characters escaped; this includes ASCII control characters, non-7bit ASCII and Unicode characters


assuming that STRING is an English noun, returns its plural form

string_quantify(NUMBER, STRING)

assuming that STRING is an English noun, returns a string saying how much of it there is; e.g. string_quantify(2, "foot") is "2 feet"

string_table(TABLE[, OPTIONS])

transform the given table (a reference to an array of arrays of strings) into a formatted multi-line string; supported options:

  • align: array reference of alignment directions (default: "left"); possible values are "left", "center" and "right"

  • colsep: column separator string (default: " | ")

  • header: array reference of column headers (default: none)

  • headsep: header separator (default: "=" or "-" for MarkDown)

  • indent: string to prepend to each line (default: "")

  • markdown: return a MarkDown compatible table


return a new string with leading and trailing spaces removed




Lionel Cons

Copyright (C) CERN 2012-2019