Help need in perl script reading from file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help need in perl script reading from file
# 1  
Old 10-26-2010
Help need in perl script reading from file

Need perl script, data file will be csv format.

I have text file contains 2 colums.

Filename Foldernumber
aaaa 13455
bbbb 23465
cccc 26689

I have two location 1. files present and 2. folders present. I need to search for file and folder if folder exsists then copy and paste the file into respective folder otherwise write the error into the log file.

Ex: file aaa should copy to folder 13455.

Thanks in advance.
# 2  
Old 10-26-2010
To achive this, you need to know

1. How to read from a file using perl (search google for read a file in perl)
2. How to tell if a file exists in Perl (Check perl.about.com/od/filesystem/qt/perl_file_exist.htm)

For writing into logs, you can use something like this
Code:
#!/usr/bin/perl
$localfilen= "test.log";
open(LOG, ">$localfilen") ||
        die "Sorry, could not open test.log $!";
 
print LOG "STEPONE\n";
close LOG;

In case your are stuck anywhere, post back with your code, people here are very helpful. They definitely will guide you!
# 3  
Old 10-26-2010
Quote:
Originally Posted by hnkumar
Need perl script, data file will be csv format.

I have text file contains 2 colums.

Filename Foldernumber
aaaa 13455
bbbb 23465
cccc 26689

I have two location 1. files present and 2. folders present. I need to search for file and folder if folder exsists then copy and paste the file into respective folder otherwise write the error into the log file.

Ex: file aaa should copy to folder 13455.

...
The example in your post is not that of a csv file because there are no commas in it.

Here's a short Perl script that will work only on a proper csv file -

Code:
$
$ # show the content of the input csv file
$
$ cat input.csv
aaaa,13455
bbbb,23465
cccc,26689
$
$ # Perl one-liner to move the files to respective directories, if the latter exist
$ # otherwise log error to a file
$
$ perl -M"File::Copy" -F"," -lane 'BEGIN {open(F,">","output.log")}
                                   if (-d $F[1]) {move($F[0], $F[1]); print "=> Moved $F[0] to $F[1]"}
                                   else {print F "=> $F[1] does not exist, cannot move $F[0] in there!"}
                                   END {close(F)}
                                  ' input.csv
=> Moved aaaa to 13455
=> Moved cccc to 26689
$
$
$ # check the log file
$
$ cat output.log
=> 23465 does not exist, cannot move bbbb in there!
$
$
$

# 4  
Old 10-28-2010
Thanks to everyone. For workaround I am using the same script which you have mentioned. But as i have mentioned I am converting .csv to text and using # as a field seperator. Below code is working fine. I need to reduce time in conversion etc.. I will try your code and will get back to you.
Code:
!/usr/bin/perl
use File::Copy;
use warnings;
use strict;

my ($debug);
$debug = 0;
$debug = 1;
my $fp = "/temp/filespath/";
my $dp = "/temp/folderpath/";
my $dn = "/content/";  -- This folder will reside under each foldername, so actually file should goes inside this----
chomp( my (%hash) = map { split "#" } my (@a) = <> );

foreach my $fname ( keys %hash ) {
        copy($fp . $fname,$dp . $hash{$fname} . $dn) or die "Copy Failed for $fname, $hash{$fname} $!";
}

exit(0);

-----
Text file content...
Code:
filename                    foldername
firstname, lastname # 12345
firstname, lastname # 23545


I am running script like
Code:
perl scriptname.pl textfile 2>>Errolog

---------- Post updated at 04:45 PM ---------- Previous update was at 04:40 PM ----------

Yes I know reading from file and write into file but not so much experience in that I am new to this perl. Thanks for your guidance.


Quote:
Originally Posted by dahlia84
To achive this, you need to know

1. How to read from a file using perl (search google for read a file in perl)
2. How to tell if a file exists in Perl (Check perl.about.com/od/filesystem/qt/perl_file_exist.htm)

For writing into logs, you can use something like this
Code:
#!/usr/bin/perl
$localfilen= "test.log";
open(LOG, ">$localfilen") ||
        die "Sorry, could not open test.log $!";
 
print LOG "STEPONE\n";
close LOG;

In case your are stuck anywhere, post back with your code, people here are very helpful. They definitely will guide you!

Last edited by Franklin52; 10-28-2010 at 08:14 AM.. Reason: Please use code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Error while reading variable from a file in perl script

I have a file abc.ini and declared many variables in that file, one of the variable(DBname) value I am trying to read in my perl script but getting error. File abc.ini content # database name DBname =UATBOX my $ex_stat; my $cmd_output; $ex_stat = "\Qawk '/^DBname/{print... (2 Replies)
Discussion started by: Devesh5683
2 Replies

2. Shell Programming and Scripting

Need help with perl script with a while loop reading file

Good morning, I appreciate any assistance that I can get from the monks out there. I am able to get this to work for me so that I can do a hostname lookup if I only specify one hostname in the script. What I want to do is have a file with hostnames and do lookups for each name in the file. Here is... (1 Reply)
Discussion started by: brianjb
1 Replies

3. Shell Programming and Scripting

Perl Script for reading table format data from file.

Hi, i need a perl script which reads the file, content is given below. and output in new file. TARGET DRIVE IO1 IO2 IO3 IO4 IO5 ------------ --------- --------- --------- --------- --------- 0a.1.8 266 236 ... (3 Replies)
Discussion started by: asak
3 Replies

4. UNIX for Dummies Questions & Answers

reading a file in Perl

If a form's action is the following Perl script how do I make it print the entire contents of the file on the screen? if(param()) { my $uploadedFile = param('file');#in the html page 'file' is the value of the name attribute of the input my $fh = upload($uploadedFile); ... (1 Reply)
Discussion started by: zerohour
1 Replies

5. Shell Programming and Scripting

Perl Script Not Reading Input Files Correctly

This is one of the strangest things that's happening to me. I'm writing a new Perl script that is trying to read a file. The file is originally in .mof format, but I also saved the contents into a .txt file. As a simple test, I wrote this: #!/user/bin/perl -w use strict; ... (3 Replies)
Discussion started by: kooshi
3 Replies

6. Shell Programming and Scripting

SOLVED: reading config file in a perl script

Hi! I have a need to do this in Perl. script.pl -config file The script would be doing a wget/LWP on a URL which is defined in the config file. So when I run the script it should return either one of these conditions - 1) OK with exit status 0. Should also print "wget URL" 2)... (6 Replies)
Discussion started by: jacki
6 Replies

7. Shell Programming and Scripting

Help with perl script while reading a file

Hi Everyone, I am very new to perl, but came across a situation wherein I have to read a c++ header file and write the datatype, its identifier and also the length to an excel file. There can be other header files, in the directory but I should browse through the file which has only "_mef:" string... (9 Replies)
Discussion started by: ramakanth_burra
9 Replies

8. Shell Programming and Scripting

perl - reading from a file conditionally

Hi, I am new to perl. I want to read from a file on the basis of some conditions.. I want to define parameters in a configuration file in such a manner like... etc.. in my perl script, theer is a variable like this.. then i want to read values from first if block from the file... (1 Reply)
Discussion started by: shellwell
1 Replies

9. Shell Programming and Scripting

Reading each line of a file in perl script

HI I need to read each line (test.txt) and store it in a array (@test) How to do it in perl. Suppose i have a file test.txt. I have to read each line of the test.txt file and store it in a array @test. How to do it in perl. Regards Harikrishna (3 Replies)
Discussion started by: Harikrishna
3 Replies

10. Shell Programming and Scripting

Perl Reading from File

is there a perl equivalent to sscanf? or something where I get the strings separated by spaces? (1 Reply)
Discussion started by: karyn1617
1 Replies
Login or Register to Ask a Question