#!/usr/bin/perl -w use strict; # Converts newlines on input into nulls. # Useful for feeding input into xargs -0. # For instance, suppose you want to find iTunes duplicates like this: # # for f in `ls *.mp3`; do # ls "`basename $f .mp3` 1.mp3" 2>/dev/null; # done; # # That won't work if your filenames include spaces, because `for` will split on all whitespace. # (It is also broken because `basename` will interpret $f as multiple arguments, not as just one.) # Using newtonull, you could replace the for loop with this: # # ls -1 *.mp3 | newtonull | xargs -0i basename "{}" .mp3 | newtonull | xargs -0i ls "{} 1.mp3" 2>/dev/null while (<>) { chomp; print "$_\0"; }