perl 列印複雜資料結構

2021-07-26 09:48:20 字數 3127 閱讀 9637

方法1:

#!/usr/bin/perl -w

use strict;

my %hash = ( a => 3, b => 1, c => 4);

map\n"}

sort <=> $hash }

keys %hash;

方法2:

perl由於有了引用,使得我們可以在不同的資料結構之間靈活的巢狀資料結構。

比方說,hash的value可以是標量,也可以巢狀list,甚至還可以繼續巢狀hash。

這樣使得我們寫**的確方便了不少,但有的時候我們希望對這些複雜的資料結構

有個直觀的感受,也就是說能夠用perl的語法吧資料結構以及實際值表示出來。這在開發階段尤其

有用!

正好perl的模組data::dumper可以幫助我們幹這件事。

data::dumper有物件導向和直接使用函式兩種呼叫方法,

這裡介紹直接使用函式的方式,簡單好用,應該能夠滿足絕大多數需求:

dumper接收的引數為乙個標量的列表或者乙個引用的列表。

my $a = "good";

my $b = "bad";

my @my_array = ("hello", "world", "123", 4.5);

my %some_hash = ("foo", 35, "bar", 12.4, 2.5, "hello",

"wilma", 1.72e30, "betty", "bye\n");

##使用函式

print dumper($a);

print dumper(\@my_array);

print dumper(\%some_hash);

print dumper((\%some_hash, \@my_array));

執行效果:

perl dump.pl

$var1 = 'good';

$var1 = [

'hello',

'world',

'123',

'4.5'

];$var1 = ;

$var1 = ;

$var2 = [

'hello',

'world',

'123',

'4.5'

];程式的輸出會按照引用在list中的位置自動命名var[n].

data::dumper模組使用小例文章分類:綜合技術

data::dumper模組主要用途是:給出乙個或多個變數,包括引用,以perl語法的方式返回這個變數的內容。

比方說,這裡有個很複雜的hash,資料結構很複雜,我想看看這個hash裡面的內容。除了常見的方式(直接

用print或者編歷keys然後列印), 我們也可以使用data::daumper->dump([\%hash])的形式。同時,

模組中定義了很多的配置引數,讓使用者可以調整列印格式。

簡單列舉幾個(具體參見perldoc),這些變數在模組

$data::dumper::indent 

這個設定列印的縮排格式,可以設定成0,1,2和3。使用者可以自己嘗試下。

$data::dumper::terse

如果設定這個變數,則不列印變數的名字,只列印變數的內容。

$data::dumper::maxdepth

不超過這個變數的限制深度,才列印變數的內容。

下面寫個程式說明問題:

#!/usr/bin/perl

use strict;

use warnings;

use data::dumper;

my%people=(

'name'=>'ray',

'age'=> 24,

'***'=>'man',

);# see data::dumper module to get the default vaule of the 

# following module gobal variable. you can overwrite the

# default value to user defined one.

print"show perl hash, with pre-defined variable name\n ";

print"and without maxdepth\n";

$data::dumper::terse = 0;# default is 0

$data::dumper::indent = 3;# default is 2

$data::dumper::maxdepth = 0;# default is 0

my $variable_name='*'."my_info";

print data::dumper->dump([\%people],[$variable_name]);

print"show perl hash, without pre-defined variable name\n ";

print"and with maxdepth is 1\n";

$data::dumper::terse = 1;# default is 0

$data::dumper::indent = 2;# default is 2

$data::dumper::maxdepth = 1;# default is 0

$variable_name='$'."my_info";

print data::dumper->dump([\%people],[$variable_name])

ray@localhost perl]$ perl data_dumper.pl

show perl hash, with pre-defined variable name

and without maxdepth

%my_info = (

'food' => [

#0 'egg',

#1 ],

'name' => 'ray',

'***' => 'man',

'age' => 24

);show perl hash, without pre-defined variable name

and with maxdepth is 1

perl複雜資料結構

方法一 my person1 zdd 30,man my person2 autumn 27,woman my persons person1,person2 方法二my persons zdd 30 man autumn 27,woman 方法三 匿名陣列,這個方法需要用特殊的訪問方法。my pe...

使用qt dbus 傳遞複雜資料結構的方法

參考文章 如何用dbus glib傳遞複雜的資料結構 經過多次試驗 qdbusxml2cpp 對諸如 qlist,qstringlist 等高階資料結構支援並不好,無奈之舉,只有用 字元資料這個容器來處理,在qt中對應qbytearray xml檔案中這樣寫後,qdbusxml2cpp 自動用qby...

複雜資料型別

1 在c語言中,除了之前學到的基本資料型別 整型,浮點型,字元型 外,還有指標型別和構造型別 結構型,聯合型,列舉型 2 結構體型別,用於把不同型別的資料組合成乙個集合體,宣告格式 struct 結構名 例如 includestruct students void main 結構體的特點是 表示更豐...