sub shorten_filename { my ($filename, $max_length) = @_; $max_length //= 50; # default to 50 characters return $filename if length($filename) <= $max_length; # Reserve 3 characters for "..." my $ellipsis = "..."; my $available = $max_length - length($ellipsis); # Split available space between start and end my $start_len = int($available / 2); my $end_len = $available - $start_len; my $start = substr($filename, 0, $start_len); my $end = substr($filename, -$end_len); return $start . $ellipsis . $end; } #### sub shortencentered { my $f = shift || return; my $m = shift || 42; return $f if length $f <= $m; my $a = $m - 3; my $s = int $a / 2; my $e = $a - $s; return substr($f, 0, $s) . '...' . substr($f, -$e) }