Jump to content

  • Log In with Google      Sign In   
  • Create Account

perl file function


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 Jarwulf   Members   -  Reputation: 222

Like
0Likes
Like

Posted 04 March 2013 - 05:47 PM

my ($bumpFileVolume,$bumpFileDir,$name) = File::Spec->splitpath($bumpFile);
my @workDirArr = ($bumpFileVolume,$bumpFileDir);
my $workDir = File::Spec->catdir(@workDirArr);
chdir $workDir or die "$0 failed to chdir to working dir $workDir";

system ("sort -k 1,1 -k 4n -T $workDir $name >tempLoc_$name")==0 or die "$0 failed to sort $name";
open (BRK, "tempLoc_$name") or die "$0 failed to open file tempLoc_$name";
open (OUTTWO, ">loc_analyze_$name") or die "$0 failed to open file loc_analyze_$name";


 

 

I'm a little confused as to whats happening here. What does it mean to create the variable $name attach it to the file I assume is $bumpfile and then use in as the part of loc_analyze_$name? Are they creating a new file or simply opening up an old one?



Sponsor:

#2 nobodynews   Crossbones+   -  Reputation: 2103

Like
0Likes
Like

Posted 04 March 2013 - 06:48 PM

Documentation says:
 

splitpath
 

Splits a path in to volume, directory, and filename portions. On systems with no concept of volume, returns '' for volume.

  1. ($volume,$directories,$file) = File::Spec->splitpath( $path );
  2. ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );

For systems with no syntax differentiating filenames from directories, assumes that the last file is a path unless $no_file is true or a
trailing separator or /. or /.. is present. On Unix, this means that $no_file true makes this return ( '', $path, '' ).


The directory portion may or may not be returned with a trailing '/'.


The results can be passed to catpath() to get back a path equivalent to (usually identical to) the original path.

 

So splitpath returns a tuple and the third element of the tuple is just the filename, as opposed to the entire file path. Presumably bumpFile contains the full path of the file not just a filename. They're basically just trying to change the working directory and to work no matter what was stored in bumpfile (i.e. an entire path, a file, a relative file path, etc). The code will work if you pass in "../../twizzlers.txt" or "./twizzlers.txt" and maybe just "twizzlers.txt".

 

The system command creates a new file which is based on just the filename from bumpFile. So if bumpFile contains "../../twizzlers.txt" then the system command creates the file tempLoc_twizzlers.txt in the same folder that twizzlers.txt exists in.

 

Then the perl script opens the already existing tempLoc_twizzlers.txt file (I *think* for read-only purposes seems to be the default when not specified) and then it opens the file loc_analyzer_twizzlers.txt for writing.


C++: A Dialog | C++0x Features: Part1 (lambdas, auto, static_assert) , Part 2 (rvalue references) , Part 3 (decltype) | Write Games | Fix Your Timestep!





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS