http://www.perlmonks.org?node_id=940931


in reply to Re^3: Editing just one column in a file
in thread Editing just one column in a file

Why is it that this

 perl -lane '$,="\t"; print @F[0..4] ."\t\t\t" . @F[25..30]' file.txt

Does not do what I intended ( for the ranges to be printed by tabs, followed by three blank columns followed by another range). Thankyou for your help!

Replies are listed 'Best First'.
Re^5: Editing just one column in a file
by BrowserUk (Patriarch) on Nov 30, 2011 at 21:12 UTC

    Because $, is the character used when you give a list of values to the print statement, but you've used '.'s.

    Ie. You're giving the print statement a single (concatenated) value, therefore the item separator is never used.

    This might achieve your goal:

    perl -lane '$,="\t"; print @F[0..4], "\t\t\t", @F[25..30]' file.txt

    but "three blank columns" is a very nebulous concept.

    Update: FTR, I might code that as:

    print join "\t", @F[0..4], ('')x3, @F[25..30];

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    The start of some sanity?