Thread overview
Using file as input to stdin when compiling
Feb 06, 2018
Jamie
Feb 06, 2018
Jamie
Feb 06, 2018
Seb
February 06, 2018
Hi, I'm following through TDPL and am trying to import a txt file during compiling for the stdin.byLine() function to read. Currently I have

#!/usr/bin/rdmd <file.txt
.
.
.
foreach (line; stdin.byLine()) {

}

and would like it to analyse the supplied text file. Is this possible in the way that I'm thinking, or is there another way?

Thanks
February 06, 2018
On Tuesday, 6 February 2018 at 06:10:30 UTC, Jamie wrote:
> Hi, I'm following through TDPL and am trying to import a txt file during compiling for the stdin.byLine() function to read. Currently I have
>
> #!/usr/bin/rdmd <file.txt
> .
> .
> .
> foreach (line; stdin.byLine()) {
>
> }
>
> and would like it to analyse the supplied text file. Is this possible in the way that I'm thinking, or is there another way?
>
> Thanks

I've figured out how to do it if I don't use the 1st line above, and manually compile and then execute:

$ rdmd code.d < file.txt

but still can't do it through the code file.

February 06, 2018
On Tuesday, 6 February 2018 at 06:10:30 UTC, Jamie wrote:
> Hi, I'm following through TDPL and am trying to import a txt file during compiling for the stdin.byLine() function to read. Currently I have
>
> #!/usr/bin/rdmd <file.txt
> .
> .
> .
> foreach (line; stdin.byLine()) {
>
> }
>
> and would like it to analyse the supplied text file. Is this possible in the way that I'm thinking, or is there another way?
>
> Thanks

> #!/usr/bin/rdmd <file.txt

That's limitation of the shebang line. Most implementation's only accept one argument.

https://en.wikipedia.org/wiki/Shebang_(Unix)


However, you can simply do:

./foo.d < foo.text

or:

void main() {
   auto f = File(args[1]);
}


or rdmd --loop for tiny scripts:

>  echo "abc" | rdmd --loop='line.splitter("").writeln