Solved

appending extension to filename

Posted on 2002-04-11
9
284 Views
Last Modified: 2010-03-05
Is there a way to do this:

        chomp($out_file = <>);
        $out_file = "${out_file}.csv";

in one line?
0
Comment
Question by:frenomulax
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 16

Expert Comment

by:maneshr
ID: 6935007
frenomulax,

".Is there a way to do this:.."

What exactly are you trying to do?

Please explain in plain english, without posting any code.
0
 

Author Comment

by:frenomulax
ID: 6935043
I have a user enter a filename w/out an extension. I change the file name to include a .csv extension, so if they enter 'data_1' it becomes data_1.csv.

The above works fine, I just was wondering if there's a more concise way to do it.
0
 
LVL 16

Expert Comment

by:maneshr
ID: 6935068
frenomulax,

"..so if they enter 'data_1' it becomes data_1.csv. ..."

Try this....

NOTE: Run this program from the command line & let me know what output you can see.

$fn=<STDIN>;

$fn=~ s/\s+$/\.csv/;

print $fn;
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:frenomulax
ID: 6935140
When I run it as a stand alone script it works fine, I get filename.csv printed out. But essentially this is the same as my original code, since there is one line to read from stdin and one line to cat the extension.

I was wondering if there is a way to do it all on one line, reading from stdin, chomp the \n, and cat the extension to the filename.

BTW, this is just for my curiosity, as what I have is working well. No need to spend a lot of your time on it.
0
 
LVL 84

Accepted Solution

by:
ozo earned 50 total points
ID: 6935193
($out_file = <>) =~ s/\n?$/.csv/;
0
 
LVL 16

Expert Comment

by:maneshr
ID: 6935198
frenomulax,

"..g if there is a way to do it all on one line.."

then i think this is what you are looking for.....

$fn=eval($fn=<STDIN>).'.csv';

print $fn;
0
 

Author Comment

by:frenomulax
ID: 6935365
maneshr,
$out_file = eval($out_file = <STDIN>).'.csv';
returns the error Bareword "out" not allowed while "strict subs" in use, although when I comment out 'use strict;' it does work fine.

ozo, your solution works as is, I'll call that the answer.
0
 

Author Comment

by:frenomulax
ID: 6935389
one quick question for ozo, can you explain the meaning of the regexp you supplied? I see that it is replacing the first occourance of a new line with '.csv' but what does the ?$ represent ?

I'm slowly getting an understanding of these things. It is literally like learning a new language.

Thanks
0
 
LVL 84

Expert Comment

by:ozo
ID: 6935610
? makes the \n optional,and $ anchors it to the end of the string
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question