in reply to Re: problem in splitting the line
in thread problem in splitting the line

I liked the general idea of your solution.

Minor quibbles:
-don't use $a and $b - these are special Perl variables reserved for things like sorting, etc and are predefined global variables. You won't write much Perl before this gets you into trouble.
-dealing with "space" can be tricky as say " \t" may not be so apparent. I would prefer \s+ as the split parameter (one or more space characters [ \t\f\r\n])

#/usr/bin/perl -w use strict; my $in ='HWI-1KL120:99:C0C9MACXX:6:1101:2105:2123 0 chr5 75483987 0 82 +M3I16M * 0 0'; my ($fifth, $sixth) = (split(/\s+|:/,$in) )[5,6]; print "$fifth:$sixth\n"; #2105:2123

Replies are listed 'Best First'.
Re^3: problem in splitting the line
by aitap (Curate) on Jul 21, 2012 at 17:20 UTC

    Thank you for your comments!

    It looks like the most strict and short-spoken solution will be my $id = join(":",(split(/\s+|:/,$in))[5,6]);.

    Sorry if my advice was wrong.
      short-spoken yes. As for "best", I'm not sure about that.

      These variables at index 5 and 6 have some sort of application meaning. I would use that application meaning to explicitly name these two variables. And use those names in the print statement rather than using a simple join of an array based upon indicies.

      Creating a scalar value is "cheap" (in terms of processing power) - it usually won't make any significant difference in execution time.

      Choosing good variable names plays a key role in documentation.

      One year from now, you may forget what field 5 vs 6 meant. I have no idea what is appropriate here: $starting_balance or $ending_balance or whatever. But give them names so that it will make sense one or two years from now. Oh, another point: If others cannot understand it, you will not "be able to get rid of it". Meaning have the support person cannot take over this thing instead of you!

      Good code is understandable and maintainable.