Perl6 檔案相關內容
Perl6 檔案相關內容
以下內容,主要來源於以下網頁的提取。
http://doc.perl6.org/type/IO
還有下面:
https://doc.perl6.org/language/io
昨天我們簡單說了’slurp’ 和’spurt’這兩個讀檔案和寫檔案的函式。
但是 Perl6 相關還有很多的相關函式。
print 函式
標準輸出,和 Perl5 一樣。也就是需要手動加上換行符。
print "Hi there!\n";
say 函式
第一點是say可以自動在末尾加上換行符。
第二點是可以直接列印陣列和hash。
那肯定有人問了,print不是也可以列印嗎?那我們就看看他們的區別:
my @array = qw/1 2 53 31/;
print @array; # 結果:125331
say @array; # 結果:[1 2 53 31]
my %hash = a=>1, b=>2, c=>3;
print %hash; # a 1c 3b 2
say %hash; # a => 1, b => 2, c => 3
note 函式
note 和say差不多,不過他只會在標準錯誤輸出中列印他的結果。
if ("path/to/pirate/treasure".IO.e) {
say "Found pirate treasure!";
}
else {
note "Could not find pirate treasure. Are you sure it exists?";
}
dd 函式
ddshi Data Dumper的簡版。
my $a = 42;
my %hash = "a" => 1, "b" => 2, "c" => 3;
dd %hash, $a;
# 結果
# Hash %hash = {:a(1), :b(2), :c(3)}
# Int $a = 42
prompt 函式
prompt是用來輸出一段文字,並且會等待使用者輸入點什麼東西,然後以Enter結束。
一下指令碼將你輸入的文字賦值給
name,當然
name 是不帶著換行符的。
my $name = prompt("Hi, What's your name?");
say $name;
如果放到以前Perl5會怎麼做呢?
print "hello,what's your name\n";
my $name = <>;
print "your name is $name\n";
open 函式
檔案的讀寫模式
- open 有幾種讀寫模式::r,:w,:a,:rw
- :r 是隻讀模式,類似 perl5 中的’<’
- :w 是隻寫模式,如果檔案不存在,就建立,如果存在就覆蓋。類似Perl5中的’>’;
- a 是追加模式,如果檔案不存在就建立檔案,如果存在就在檔案的後面追加內容。類似Per5中的’>>’;
# 開啟一個控制程式碼,:r是隻讀模式,所以不能夠往下面的$fh中寫入檔案
my $fh=open("a.txt",:r);
# 檢視控制程式碼的的資訊
say $fh; # IO::Handle<a.txt>(opened, at octet 0))>
say $fh.get(); # 讀取檔案的第一行
say $fh.get(); # 讀取檔案的第二行
$fh.close; # 關閉控制程式碼
# 一行行的讀取整個檔案
$fh=open("a.txt",:r);
while (my $line = $fh.get())
{
say $line;
}
$fh.close;
# 當然你也可以像以前一樣close $fh;
# 還可以這麼玩
for 'a.txt'.IO.lines -> $line {
say $line;
}
# 當然你也可以把所有行存入一個陣列
檔案的編碼選項
# 二進位制方式開啟
open my $fh = open("a.txt",:bin);
# 選擇編碼的方式
# 預設是unicode
my $fh = open("a.txt", enc => "Unicode");
# utf8
my $fh = open("a.txt", enc => "utf8");
my $fh = open("a.txt", enc => "utf-8");
# latin1
my $fh = open("a.txt", enc => "latin1");
換行符
這個選項用來指明文字的EOL(end of line);
預設的是’\n’,’\r\n’,’\r’
# explicitly use CR-LF as EOL character
my $fh = open("a.txt", nl => "\r\n");)
chomp
在perl5 中我們都知道chomp($line);
可以去掉一行中的換行符,在這裡功能也一樣
預設是去掉的,當然你也可以設定為不去掉。
# do not remove newline characters from input
my $fh = open("path/to/file", chomp => False);
say $fh.get(); # returns line including newline char))
slurp 函式,檔案讀取
# 用slurp 一次性的讀取整個檔案到變數中
my $text_contents = slurp 'a.txt';
say $text_contents;
# 也可以這樣
寫入檔案
一行行寫
my $fh = open('b.txt',:w);
my @array = [1,2,4,32];
for @array -> $i {
# 這兩種方式都可以
$fh.print("$i\n");
$fh.say($i);
}
$fh.close;
spurt 函式
簡單粗暴的方式
my @array = [1,2,4,32];
spurt 'c.txt',@array;
# spurt也有幾個引數
# :append 追加在檔案的後面
my @array = [1,2,4,32];
spurt 'c.txt',@array,:append;
shell 函式
執行系統命令
my @files=shell 'ls -ls';
say @files;
my $date = shell 'date';
say $date;
檔案和資料夾
say dir
say dir “/Documents”;
mkdir 建立資料夾
rmdir 刪除資料夾
IO.e checks if the directory/file exist.
IO.f checks if the path is a file.
IO.d checks if the path is a directory.
相關文章
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- proc檔案系統相關內容
- 專案內容相關
- Linux檔案內容檢視相關命令Linux
- 利用echo把內容寫入相關solaris 檔案
- 快速上手Linux核心命令(四):檔案內容相關命令Linux
- mysql相關內容索引MySql索引
- oracle相關內容索引Oracle索引
- 系統相關內容索引索引
- JDBC mysql 相關內容筆記JDBCMySql筆記
- Makefile書寫命令相關內容
- 檔案內容拷貝
- Oracle 控制檔案內容Oracle
- 檔案內容比較
- vim內替換檔案內容
- 頁面佈局的相關內容
- golang的記憶體相關內容Golang記憶體
- 網路配置相關內容總結
- javascript關於URI相關內容簡單介紹JavaScript
- javascript時間日期相關內容介紹JavaScript
- javascript的節點相關內容介紹JavaScript
- 檔案內容對比工具
- C#分割檔案內容C#
- git檢視檔案內容Git
- properties檔案內容亂碼
- Linux檔案內容操作Linux
- 檢視控制檔案內容
- dump 轉儲檔案內容
- 提取rpm檔案內容
- 使用ln同步檔案內容,支援忽略檔案
- 檔案下載相關
- vite vue-cli 讀取檔案原始內容 使用base64內容的檔案ViteVue
- js效能優化相關內容筆記整理JS優化筆記
- Java相關技術點及技術內容Java
- 實用解析dmp檔案內容
- 命令列技巧:分割檔案內容命令列
- php獲取xml檔案內容PHPXML
- node中給檔案追加內容