Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 186993
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T15:44:42+00:00 2026-05-11T15:44:42+00:00

Let’s say I have a tab-delimited text file that contains data arranged in columns

  • 0

Let’s say I have a tab-delimited text file that contains data arranged in columns (with headers).

It is possible that different columns may be ‘stacked’ into a ‘worksheet’-like arrangement, i.e. there is some divider (that may or may not be known ahead of time) that allows different columns to be arranged vertically.

Is there a Perl module that facilitates parsing of columnar data in this text file into a data structure (e.g., a hash table with the key being the column header, and the value being an array of column data scalars)?

EDIT By ‘stacked’, I mean that a column of text may include multiple, individual ‘vectors’ of data, each with different headers and different lengths. Admittedly, this complicates parsing.

EDIT I’m honestly not sure where the confusion is. Nonetheless, here’s an example:

header_one\theader_three data_1\tdata_7 data_2\tdata_8 data_3\tdata_9 \tdata_10 header_two\tdata_11 data_4\theader_four data_5\tdata_12 data_6\tdata_13 \tdata_14 

The script would turn this into a hash table with four keys: header_one, header_two, header_three, and header_four, each key referencing an array reference pointing to the data_n elements underneath the header.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T15:44:42+00:00Added an answer on May 11, 2026 at 3:44 pm

    I think this is close to what you are talking about. If the number of columns changes then the input is treated as if it were a different table. This code could be easily modified to recognize some other marker (such as a line of equal signs) instead of using the column counts.

    #!/usr/bin/perl  use strict; use warnings;  use Text::CSV_XS;  #setup the parser, here we want tab separated and we allow #loose quoting, so qq/foo\t'bar\tbaz'\tquux/ is  #('foo', 'bar\tbaz', 'quux') my $p = Text::CSV_XS->new(     {         sep_char           => '\t',         allow_loose_quotes => 1,     } );  my @stacked; my $cur = 0; while (<>) {     $p->parse($_) or die $p->error_input;     my @rec = $p->fields;     #normal case, just add the record to the last     #section in @stacked     if (@rec == $cur) {         push @{$stacked[-1]}, \@rec;         next;     }     #if the number of columns don't match then     #we have a new section     push @stacked, [\@rec];     $cur = @rec; #set the new number of columns }  for my $table (@stacked) {     print 'header: ', join('::', @{$table->[0]}), '\n';     for my $i (1 .. $#$table) {         print 'data: ', join('::', @{$table->[$i]}), '\n';     }     print '\n'; } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Let's say I have a text file composed like this ##### typeofthread1 ##### typeofthread2
Let me explain best with an example. Say you have node class that can
Let's say that I have a SQLite database that I create in a separate
Let's say I have the following text: (example) <table> <tr> <td> <span>col1</span> </td> <td>col2</td>
Let's say I have multiple requirements for a password. The first is that the
Let's say that I have a date in R and it's formatted as follows.
Let's say you have a method that expects a numerical value as an argument.
Let's say I have a bunch of links that share a click event: <a
Let's say I have the string: hello world; some random text; foo; How could
Let say I have some code HTML code: <ul> <li> <h1>Title 1</h1> <p>Text 1</p>

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.