Sponsored Content
Top Forums Shell Programming and Scripting perl oneliner not works .pl script Post 302474608 by durden_tyler on Wednesday 24th of November 2010 07:13:55 PM
Old 11-24-2010
Quote:
Originally Posted by anspks
I am trying to take first 3 columns in a file which matches the word "abc", but i am getting the below error,
<error>
Global symbol "@F" requires explicit package name at ./new.pl
</error>

whereas when i give the below,grep abc /home/test/file.txt|perl -lane 'print \"$F[0] $F[1] $F[2]\" in unix prompt i am getting the result. When i use inside the perl script it fails. When i remove "use strict" it returns nothing.Please help me out

<code>
#!/usr/bin/perl
use strict;
use warnings;
print `grep abc /home/test/file.txt|perl -lane 'print \"$F[0] $F[1] $F[2]\"' > a.txt`;
</code>
Why do you invoke a Perl one-liner from within a Perl program ??

Code:
#!/usr/bin/perl
use strict;
use warnings;
my $file = "/home/test/file.txt";
my @x;
open (F, "<", $file) or die "Can't open $file: $!";
while (<F>) {
  chomp;
  if (/abc/) {
    @x = split;
    print "$x[0] $x[1] $x[2]\n";
  }
}
close(F) or die "Can't close $file: $!";

tyler_durden
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

perl - how come this script works?

#!/usr/bin/perl open (DATA, file.txt); @array = <DATA>; close (DATA); open (DATA, ">$file.txt"); for (@array) { s/text/replace text/; push(@contents,$_); } seek(DATA, 0, 0); print DATA (@contents); close(DATA); could someone please explain how this works. i've been... (3 Replies)
Discussion started by: mjays
3 Replies

2. Shell Programming and Scripting

perl/unix: script in command line works but not in perl

so in unix this command works works and shows me a list of directories find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt but when i try running a perl script to run this command my $query = 'find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt';... (2 Replies)
Discussion started by: kpddong
2 Replies

3. Shell Programming and Scripting

need a df -h oneliner..

can any one suggest some one liner such that when executed will display df -h output of the mount points that are 90% or more that it.. and not the remaining.. (7 Replies)
Discussion started by: chidori
7 Replies

4. Shell Programming and Scripting

perl oneliner to cut the file

Hi I have a file say text.txt and has data as below. text.txt ------- /abc/def/tom/hanks /abc/def/al/pacino /def/dgg/matt/damon Now I have to cut the field 3 and field 4 treating / as delimiter and save in the same file. Below is the how the output should be in the same file. I... (1 Reply)
Discussion started by: lijjumathew
1 Replies

5. Shell Programming and Scripting

Oneliner ---split string to character by piping shell output to perl

Hello, I was trying to split a string to characters by perl oneliner. echo "The quick brown fox jumps over the lazy dog" | perl -e 'split // ' But did not work as with bash script pipe: echo "The quick brown fox jumps over the lazy dog" | fold -w1 | sort | uniq -ic 8 1 T 1... (6 Replies)
Discussion started by: yifangt
6 Replies

6. Shell Programming and Scripting

awk - oneliner vs multiple line .

Dear Awk Experts, I can write oneliner some time but find difficulty writing like a flow of a program in multiple lines, could you please help how to write awk program , like long awk programs, any help to start with, For example, How to write this in multiple line: ls -l | awk... (6 Replies)
Discussion started by: rveri
6 Replies

7. Shell Programming and Scripting

perl: Command works in terminal, but not in shell script

Hi, the following command works in the terminal no problem. samtools view -h rawlib.bam | perl -ne '{ @line = split( /\s+/ ); $match = 0; while( $line =~ /(\d+)M/g ) { $match = $match + $1 } if( $match >= 80 || $_ =~ /^\@/ ) { print $_ } }' | java -Xmx12G -jar... (8 Replies)
Discussion started by: jdilts
8 Replies

8. Shell Programming and Scripting

Perl error in batch command but works one at a time

In the below perl executes if one file is processed perfect. However, when multiple files are processed in batch which is preferred I get the below error that I can not seem to fix it as the '' necessary for the command to execute, but seem to only work for one -arg option. Thank you :). ... (2 Replies)
Discussion started by: cmccabe
2 Replies

9. Shell Programming and Scripting

Need to understand how the line in perl program works as shell commend

I have a file with two line, one is header, the other actual value: TYPCD|ETID2|ETID|LEG ID|PTYP|PTYP SUB|TRD STATUS|CXL REASON|CACT|CACTNM|ENCD|ENC D NM|TRDR|ASDT|TRDT|MTDT|STDT|LS|SECID|SECID TYP|SECNM|PAR|STCC|MARKET PRICE|DIS MARKET PRICE|MARKET PRICE CURRENCY|SRC OF SETTLEMENT... (2 Replies)
Discussion started by: digioleg54
2 Replies

10. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies
Acme::Brainfuck(3)					User Contributed Perl Documentation					Acme::Brainfuck(3)

NAME
Acme::Brainfuck - Embed Brainfuck in your perl code SYNOPSIS
#!/usr/bin/env perl use Acme::Brainfuck; print 'Hello world!', chr ++++++++++. ; DESCRIPTION
Brainfuck is about the tiniest Turing-complete programming language you can get. A language is Turing-complete if it can model the opera- tions of a Turing machine--an abstract model of a computer defined by the British mathematician Alan Turing in 1936. A Turing machine con- sists only of an endless sequence of memory cells and a pointer to one particular memory cell. Yet it is theoretically capable of perform- ing any computation. With this module, you can embed Brainfuck instructions delimited by whitespace into your perl code. It will be trans- lated into Perl as parsed. Brainfuck has just just 8 instructions (well more in this implementation, see "Extensions to ANSI Brainfuck" below.) which are as follows Instructions + Increment Increase the value of the current memory cell by one. - Decrement Decrease the value of the current memory cell by one. > Forward Move the pointer to the next memory cell. < Back Move the pointer to the previous memory cell. , Input Read a byte from Standard Input and store it in the current memory cell. . Output Write the value of the current memory cell to standard output. [ Loop If the value of the current memory cell is 0, continue to the cell after the next ']'. ] Next Go back to the last previous '['. Extensions to ANSI Brainfuck This implementation has extra instructions available. In order to avoid such terrible bloat, they are only available if you use the ver- bose pragma like so: use Acme::Brainfuck qw/verbose/; The extra instructions are: ~ Reset Resets the pointer to the first memory cell and clear all memory cells. # Peek Prints the values of the memory pointer and the current memory cell to STDERR. See also "Debugging" below. Debugging By using the debug pragma like this: use Acme::Brainfuck qw/debug/; you can dump out the generated perl code. (Caution: it is not pretty.) The key to understanding it is that the memory pointer is repre- sented by $p, and the memory array by @m Therefore the value of the current memory cell is $m[$p]. RETURN VALUE
Each sequence of Brainfuck instructions becomes a Perl block and returns the value of the current memory cell. EXAMPLES
JABH #!/usr/bin/env perl use Acme::Brainfuck; print "Just another "; ++++++[>++++++++++++++++<-]> ++.-- >+++[<++++++>-]<.>[-]+++[<------>-]< +.- +++++++++.--------- ++++++++++++++.-------------- ++++++.------ >+++[<+++++++>-]<.>[-]+++[<------->-]< +++.--- +++++++++++.----------- print " hacker. "; Countdown #!/usr/bin/env perl use strict; use Acme::Brainfuck qw/verbose/; print "Countdown commencing... "; ++++++++++[>+>+<<-] >>+++++++++++++++++++++++++++++++++++++++++++++++<< ++++++++++[>>.-<.<-] print "We have liftoff! "; Reverse #!/usr/bin/env perl use Acme::Brainfuck qw/verbose/; while(1) { print "Say something to Backwards Man and then press enter: "; +[->,----------]< print 'Backwards Man says, "'; [+++++++++++.<]< print "" to you too. "; ~ } Math #!/usr/bin/env perl use Acme::Brainfuck; use strict; use warnings; my $answer = +++[>++++++<-]> ; print "3 * 6 = $answer "; VERSION
1.1.1 Apr 06, 2004 AUTHOR
Jaldhar H. Vyas E<lt>jaldhar@braincells.comE<gt> THANKS
Urban Mueller - The inventor of Brainfuck. Damian Conway - For twisting perl to hitherto unimaginable heights of weirdness. Marco Nippula <http://www.hut.fi/~mnippula/> - Some code in this module comes from his brainfuck.pl Mr. Rock - Who has a nice Brainfuck tutorial at <http://www.cydathria.com/bf/>. Some of the example code comes from there. COPYRIGHT AND LICENSE
Copyright (c) 2004, Consolidated Braincells Inc. Licensed with no warranties under the Crowley Public License: "Do what thou wilt shall be the whole of the license." perl v5.8.3 2004-04-06 Acme::Brainfuck(3)
All times are GMT -4. The time now is 02:00 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy