in reply to Most efficient way to remove some text from a string

Strip the directory with a substitute. Count remaining slashes with tr.
use strict; use warnings; my @types = qw( Artist Album Song Song); while (<DATA>) { s!^/Volumes/WD/Not Migrating/Music/!!; my $type = $types[ tr/\//\// ]; printf "%-6s : %-80s\n", $type, $_; } __DATA__ /Volumes/WD/Not Migrating/Music/Ana Tijoux /Volumes/WD/Not Migrating/Music/Eminem/Ana /Volumes/WD/Not Migrating/Music/Eminem/Ana Tijoux/Luchin/Luchin.m4a Output: Artist : Ana Tijoux Album : Eminem/Ana Song : Eminem/Ana Tijoux/Luchin/Luchin.m4a
Bill

Replies are listed 'Best First'.
Re^2: Most efficient way to remove some text from a string
by adamZ88 (Beadle) on Dec 07, 2016 at 20:21 UTC

    Bill, thank you for your explanation, it greatly helps. I follow what you are saying, can you please expand on how "tr" counts the remaining slashes and how the printf is being used. This would help me actually learn this content and not just simply use it because I am told. Thanks

      I'm not sure just who you're replying to, but in general ...

      ... how "tr" counts the remaining slashes ...

      Please see discussion of  tr/// operator in Quote-Like Operators section of perlop. In particular, please see examples 2-4 in Examples sub-section.

      ... how the printf is being used.

      Please see printf; see sprintf for discussion of format specifiers.


      Give a man a fish:  <%-{-{-{-<