something i don’t understand : gets give me last arg of script ???
here is part of my script :
def get_respons
return (/^[y|Y|O|o].*/ === gets.to_s.chomp)
end
dir_path=Dir.pwd
dir_path=$[0] if $.length == 1
puts “Are you sure you want to convert #{dir_path} ?[y|Y|O|o/n] default
to NO”
if get_respons
puts “reponse YES”
end
and the script (being in my $PATH) is called from terminal :
set_date /Users/yvon
and the message error i get is :
set_date /Users/yvon
Are you sure you want to convert /Users/yvon ?[y|Y|O|o/n] default to NO
nil
/Users/yvon/bin/set_date:7:in gets': Is a directory - /Users/yvon (Errno::EISDIR) from /Users/yvon/bin/set_date:7:in
get_reponse’
from /Users/yvon/bin/set_date:17
line 7 being “return (/^[y|Y|O|o].*/ === gets.to_s.chomp)”
and 17 the call to “get_respons” : “if get_respons”
notice the $*[0] is allready used in my script ???
On Aug 12, 2006, at 6:15 AM, Une bévue wrote:
from /Users/yvon/bin/set_date:7:in `get_reponse'
from /Users/yvon/bin/set_date:17
line 7 being “return (/^[y|Y|O|o].*/ === gets.to_s.chomp)”
and 17 the call to “get_respons” : “if get_respons”
notice the $*[0] is allready used in my script ???
une bévue
Kernel#gets (what you get when you just use gets) calls ARGF.gets.
ARGF is a magic IO object that lets your script have a cli api
similar to apps like ‘cat’. You can check the docs for details, but
basically what you want to use is $stdin.gets or STDIN.gets not plain
old gets
“U” == Une bévue [email protected] writes:
U> something i don’t understand : gets give me last arg of script ???
It’s normal : it make the right thing.
moulon% ri Kernel#gets
------------------------------------------------------------ Kernel#gets
gets(separator=$/) => string or nil
Returns (and assigns to +$_+) the next line from the list of files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
in +ARGV+ (or +$*+), or from standard input if no files are present
^^^^^^^^^^^^^^^^^^
on the command line. Returns +nil+ at end of file. The optional
[…]
moulon%
U> notice the $*[0] is allready used in my script ???
This is bad : $ variables must not be used, it’s best to use ARGV.
ARGV[0] is used but was not removed from ARGV
Try this
moulon% ruby -e ‘p ARGV[0]; p gets’ inexistant
“inexistant”
-e:1:in `gets’: No such file or directory - inexistant (Errno::ENOENT)
from -e:1
moulon%
moulon% ruby -e ‘p ARGV.shift; p gets’ inexistant
“inexistant”
Bonjour
“Bonjour\n”
moulon%
–
Guy Decoux
Logan C. [email protected] wrote:
Kernel#gets (what you get when you just use gets) calls ARGF.gets.
ARGF is a magic IO object that lets your script have a cli api
similar to apps like ‘cat’. You can check the docs for details, but
basically what you want to use is $stdin.gets or STDIN.gets not plain
old gets
ok fine thanks
Le 12 août 06 à 15:50, ts a écrit :
ARGV[0] is used but was not removed from ARGV
Try this
moulon% ruby -e ‘p ARGV[0]; p gets’ inexistant
[…]
moulon% ruby -e ‘p ARGV.shift; p gets’ inexistant
ok, fine thanks, that’s clear !