Perl - split with "|"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl - split with "|"
# 1  
Old 01-29-2007
Perl - split with "|"

Hi,

I'm having some troubles with the split-command. My file is formatted like this:

field1 | field2 | field3 | field4 | ...

The purpose is to catch for example the first and fourth field so I'm using “|” as delimiter, but the thing is that he then only takes the first character out of the field. So for example when I have the following:

abc | def | ghi | jkl | ...

With the script below I'm getting:

a b c d in stead of abc def ghi jkl

Now if for instance I use “#” as delimiter I get the correct output. So now I'm wondering why he doesn't execute the split correctly with the “|” delimiter?


Code:
#!/usr/bin/perl

opendir(DIR,".");

@contents = readdir(DIR);

closedir(DIR);

foreach $file (@contents)
{
  if ($file =~ m/test.txt/)
  {
    open(FILE,$file);

    while($line = <FILE>)
    {
      chomp($line);
      (@params) = split('|',$line);

      foreach $p (@params)
      {
        print "$p\n";
      }

    }
  }
}

# 2  
Old 01-29-2007
Code:
#!/usr/bin/perl

opendir(DIR,".");

@contents = readdir(DIR);

closedir(DIR);

foreach $file (@contents)
{
  if ($file =~ m/test.txt/)
  {
    open(FILE,$file);

    while($line = <FILE>)
    {
      chomp($line);
      (@params) = split(/\|/,$line);

      foreach $p (@params)
      {
        print "$p\n";
      }

    }
  }
}

because the delimiter is treated as a regexp, and | has special meaning in regexp which needs to be escaped as shown.
# 3  
Old 01-29-2007
Add a backslash
Code:
(@params) = split('\|',$line);

# 4  
Old 02-04-2007
Thx, it works fine now.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Shell Programming and Scripting

Perl failure with "main::$fn" used only once:" in error logs

Hi all, Can anyone guess why this is happening? I am new to Perl, so please help me to fix this error: - I have a static html file which calls the cgi-perl script. HTML Code: <html> <head> <title> Hey Dude! </title> </head> <body> <form method="POST"... (3 Replies)
Discussion started by: bashily
3 Replies

5. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

6. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

7. Shell Programming and Scripting

perl folder list with "..", without ".".

Hi Everyone, if my folder "foldera" inside has one file. so if i do if ($df =~ /^\./) { next; } then i will get ### filea ### if i want to have ### .. filea ### means also display the parent .., how should i modify the perl ~// in my code? Thanks ---------- Post updated... (6 Replies)
Discussion started by: jimmy_y
6 Replies

8. UNIX for Dummies Questions & Answers

perl split funciton - special character "/"

HI, I have a directory structure. /abc/def/ghi/ I want to store it into array. So that if I do a pop function on that array I can easily go to previous directory. But how can i split and store it. @Directory = split(/\//,$DirectoryVarialbe) That doest works. Any other escape sequence... (5 Replies)
Discussion started by: deepakwins
5 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question