Perl楽しいから好き

Perlをはじめとしたプログラミング周りのあれこれについて。モダーンなPerlを楽しんでいます。

Perlの聖書(ラクダ本)が届いた!

ついに、ペーパーバックの英語の中古本だけど、
2,050円(送料込み)で買った『Programming Perl』が届いたー!!



よくよく見ると、2000年出版の3rd Edition でPerl 5.6までしかカバーしてなかったりするw


Unicode の節が、「将来実装予定だぜ」的なこと書いてあるし。


欲を言えば、どのレンタルサーバでも標準になってて
Unicode正式対応して、Encode.pmが標準ライブラリ入りしたPerl5.8を
カバーしたやつがよかったけど、そんなバージョンの「The Camel」はそもそも無いようだ(爆)


本屋でフツーに買ったら2冊で9,000円くらいだから、
安いお買い物。



めっちゃテンション上がるわー!!!

Perl=>WWW::Mechanizeでの日本語の扱いでつまづき、解決した件。

WWW::Mechanizeを使いこなしたい

オライリーの『SPIDERING HACKS』を買ってからというもの、「MADにWEBの情報を集めて整理してエグイ感じで発信してやるぜ、グヘヘ」と思っていたが、いまいち進んでいない。


一番の原因は、日本語マルチバイトの壁。


使っていても「Wide Characterうんたら」というエラーが出たり、文字コードの扱いがうまくいっていなくて欲しい結果が得られない。


Perlモチベーションが高まってしまった今日、久しぶりにMechを使ってみた。


やろうとしたことは、非常にシンプル。
(1)ターゲットURLにアクセス
(2)URL内のリンクを辿ってページ遷移
(3)ページ遷移先のコンテンツを表示する



ポータルみたいなのを作るベースとしての動作確認のつもりで行った作業。

#!/usr/bin/perl
#
# Mechでスクレイピング♪(use encoding使用。こいつは非推奨なやり方だよ。良い子は真似しちゃダメ。)

use strict;
use warnings;
use utf8;
use WWW::Mechanize;

use encoding 'cp932';
binmode(STDERR, ':raw :encoding(cp932)');

# ターゲットURLをセットする
my $url = 'http://www.akb48.co.jp/';

my $agent = WWW::Mechanize->new();

# ホームページを取得する
$agent->get($url);

# スケジュールページを取得する
$agent->follow_link(text => 'スケジュール');

print $agent->{content}, "\n";


とりあえず動けばいいぢゃんという感じで上のスクリプトを作ってみた。


でも、encodingプラグマを使って文字コードエンコードとかデコードを理解せずに
うやむやでやってる感が否めない。


dankogaiが非推奨してたのも気になるし->『perl - use encoding; #は黒歴史』


そこで encodingプラグマ無しにして探求してみた。


Encode使って何とかなるはずだ。


・・・で、なんとかなった。

#!/usr/bin/perl
#
# Mechでスクレイピング♪(utf8プラグマなし。ファイル保存形式はUTF8-N)

use strict;
use warnings;
use WWW::Mechanize;

#use encoding 'cp932';
#binmode(STDERR, ':raw :encoding(cp932)');
use Encode;

# ターゲットURLをセットする
my $url = 'http://www.akb48.co.jp/';

my $agent = WWW::Mechanize->new();

# ホームページを取得する
$agent->get($url);

# スケジュールページを取得する=>Mechに送る前にデコード
$agent->follow_link(text => decode('utf8', 'スケジュール'));

# 標準出力先であるWinXPコマンドプロンプトの文字コードにエンコード
print encode('cp932', $agent->{content}, "\n");


んでもって、utf8プラグマを使って「スケジュール」のdecode を無くすのが一番よさげ。

#!/usr/bin/perl
#
# Mechでスクレイピング♪(utf8プラグマあり。ファイル保存形式はUTF8-N)

use strict;
use warnings;
use utf8;
use WWW::Mechanize;

#use encoding 'cp932';
#binmode(STDERR, ':raw :encoding(cp932)');
use Encode;

# ターゲットURLをセットする
my $url = 'http://www.akb48.co.jp/';

my $agent = WWW::Mechanize->new();

# ホームページを取得する
$agent->get($url);

# スケジュールページを取得する
$agent->follow_link(text => 'スケジュール');

# 標準出力先であるWinXPコマンドプロンプトの文字コードにエンコード
print encode('cp932', $agent->{content}, "\n");


半年ぐらい前から悩んでいたところが、だいぶスッキリしたー。


これで、スクレーピングし放題だなw

CentOS 5.5のPHPをバージョン5.3.5 にアップグレードしてみた件。

CentOS 5.5のPHPをバージョン5.3.5 にアップグレードしてみたお。


探せばいるもので、CentOS 5.5のPHPをバージョン5.3.5 にアップグレードしてみました。

基本的には(というか1から10まで)Natzさんのブログの手順通りにやりました。
Natzさん、スペシャルサンクス!!

入力コマンド(1)

# rpm -qa | grep php | sort

出力結果(1)

php-5.2.16-jason.1
php-cli-5.2.16-jason.1
php-common-5.2.16-jason.1
php-ldap-5.2.16-jason.1

入力コマンド(2)

# rpm -qa | grep mysql | sort

出力結果(2)

mysql-5.0.77-4.el5_5.4

入力コマンド(3)

# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

出力結果(3)

http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm を取得中
警告: /var/tmp/rpm-xfer.NA0dVL: ヘッダ V3 DSA signature: NOKEY, key ID 217521f6
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

入力コマンド(4)

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

出力結果(4)

http://rpms.famillecollet.com/enterprise/remi-release-5.rpm を取得中
警告: /var/tmp/rpm-xfer.Hi6rXD: ヘッダ V4 DSA signature: NOKEY, key ID 00f97f56
準備中...                ########################################### [100%]
   1:remi-release           ########################################### [100%]

入力コマンド(5)

# yum info php --enablerepo=remi

出力結果(5)

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * epel: ftp.riken.jp
 * extras: rsync.atworks.co.jp
 * remi: iut-info.univ-reims.fr
 * updates: rsync.atworks.co.jp
epel                                                     | 3.7 kB     00:00     
epel/primary_db                                          | 3.0 MB     00:01     
remi                                                     | 2.6 kB     00:00     
remi/primary_db                                          | 253 kB     00:02     
Installed Packages
Name       : php
Arch       : i386
Version    : 5.2.16
Release    : jason.1
Size       : 9.4 M
Repo       : installed
Summary    : PHP HTML 埋め込みのスクリプト言語 (PHP: Hypertext Preprocessor)
URL        : http://www.php.net/
License    : PHP
Description: PHP is an HTML-embedded scripting language. PHP attempts to make it
           : easy for developers to write dynamically generated webpages. PHP
           : also offers built-in database integration for several commercial
           : and non-commercial database management systems, so writing a
           : database-enabled webpage with PHP is fairly simple. The most common
           : use of PHP coding is probably as a replacement for CGI scripts.
           : 
           : The php package contains the module which adds support for the PHP
           : language to Apache HTTP Server.

Available Packages
Name       : php
Arch       : i386
Version    : 5.3.5
Release    : 1.el5.remi.1
Size       : 1.3 M
Repo       : remi
Summary    : PHP scripting language for creating dynamic web sites
URL        : http://www.php.net/
License    : PHP
Description: PHP is an HTML-embedded scripting language. PHP attempts to make it
           : easy for developers to write dynamically generated web pages. PHP
           : also offers built-in database integration for several commercial
           : and non-commercial database management systems, so writing a
           : database-enabled webpage with PHP is fairly simple. The most common
           : use of PHP coding is probably as a replacement for CGI scripts.
           : 
           : The php package contains the module which adds support for the PHP
           : language to Apache HTTP Server.

入力コマンド(6)

# yum remove php php-* mysql

出力結果(6)

Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package mysql.i386 0:5.0.77-4.el5_5.4 set to be erased
--> Processing Dependency: libmysqlclient.so.15 for package: dovecot
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15) for package: dovecot
---> Package php.i386 0:5.2.16-jason.1 set to be erased
---> Package php-cli.i386 0:5.2.16-jason.1 set to be erased
---> Package php-common.i386 0:5.2.16-jason.1 set to be erased
---> Package php-ldap.i386 0:5.2.16-jason.1 set to be erased
--> Running transaction check
---> Package dovecot.i386 0:1.0.7-7.el5 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch        Version                   Repository        Size
================================================================================
Removing:
 mysql             i386        5.0.77-4.el5_5.4          installed        7.9 M
 php               i386        5.2.16-jason.1            installed        9.4 M
 php-cli           i386        5.2.16-jason.1            installed        6.7 M
 php-common        i386        5.2.16-jason.1            installed        1.5 M
 php-ldap          i386        5.2.16-jason.1            installed        105 k
Removing for dependencies:
 dovecot           i386        1.0.7-7.el5               installed        3.6 M

Transaction Summary
================================================================================
Remove        6 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: 

入力コマンド(7)

Is this ok [y/N]: y

出力結果(7)

Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : dovecot                                                  1/6 
警告: /etc/dovecot.conf は /etc/dovecot.conf.rpmsave として保存されました。
  Erasing        : php                                                      2/6 
  Erasing        : php-ldap                                                 3/6 
  Erasing        : php-common                                               4/6 
  Erasing        : mysql                                                    5/6 
  Erasing        : php-cli                                                  6/6 

Removed:
  mysql.i386 0:5.0.77-4.el5_5.4         php.i386 0:5.2.16-jason.1              
  php-cli.i386 0:5.2.16-jason.1         php-common.i386 0:5.2.16-jason.1       
  php-ldap.i386 0:5.2.16-jason.1       

Dependency Removed:
  dovecot.i386 0:1.0.7-7.el5                                                    

Complete!

入力コマンド(8)

# yum install php php-ldap php-cli php-common dovecot mysql --enablerepo=remi

出力結果(8)

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * epel: ftp.riken.jp
 * extras: rsync.atworks.co.jp
 * remi: rpms.famillecollet.com
 * updates: rsync.atworks.co.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dovecot.i386 0:1.0.7-7.el5 set to be updated
--> Processing Dependency: libmysqlclient.so.15 for package: dovecot
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15) for package: dovecot
---> Package mysql.i386 0:5.1.55-1.el5.remi set to be updated
--> Processing Dependency: mysql-libs = 5.1.55-1.el5.remi for package: mysql
--> Processing Dependency: libmysqlclient.so.16(libmysqlclient_16) for package: mysql
--> Processing Dependency: libmysqlclient_r.so.16(libmysqlclient_16) for package: mysql
--> Processing Dependency: libmysqlclient_r.so.16 for package: mysql
--> Processing Dependency: libmysqlclient.so.16 for package: mysql
---> Package php.i386 0:5.3.5-1.el5.remi.1 set to be updated
---> Package php-cli.i386 0:5.3.5-1.el5.remi.1 set to be updated
--> Processing Dependency: libedit.so.0 for package: php-cli
---> Package php-common.i386 0:5.3.5-1.el5.remi.1 set to be updated
---> Package php-ldap.i386 0:5.3.5-1.el5.remi.1 set to be updated
--> Running transaction check
---> Package libedit.i386 0:2.11-2.20080712cvs.el5 set to be updated
---> Package mysql-libs.i386 0:5.1.55-1.el5.remi set to be updated
---> Package mysqlclient15.i386 0:5.0.67-1.el5.remi set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package             Arch       Version                        Repository  Size
================================================================================
Installing:
 dovecot             i386       1.0.7-7.el5                    base       1.6 M
 mysql               i386       5.1.55-1.el5.remi              remi       1.1 M
 php                 i386       5.3.5-1.el5.remi.1             remi       1.3 M
 php-cli             i386       5.3.5-1.el5.remi.1             remi       2.6 M
 php-common          i386       5.3.5-1.el5.remi.1             remi       966 k
 php-ldap            i386       5.3.5-1.el5.remi.1             remi        52 k
Installing for dependencies:
 libedit             i386       2.11-2.20080712cvs.el5         epel        79 k
 mysql-libs          i386       5.1.55-1.el5.remi              remi       1.7 M
 mysqlclient15       i386       5.0.67-1.el5.remi              remi       1.3 M

Transaction Summary
================================================================================
Install       9 Package(s)
Upgrade       0 Package(s)

Total download size: 11 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): php-ldap-5.3.5-1.el5.remi.1.i386.rpm              |  52 kB     00:01     
(2/9): libedit-2.11-2.20080712cvs.el5.i386.rpm           |  79 kB     00:00     
(3/9): php-common-5.3.5-1.el5.remi.1.i386.rpm            | 966 kB     00:02     
(4/9): mysql-5.1.55-1.el5.remi.i386.rpm                  | 1.1 MB     00:03     
(5/9): mysqlclient15-5.0.67-1.el5.remi.i386.rpm          | 1.3 MB     00:04     
(6/9): php-5.3.5-1.el5.remi.1.i386.rpm                   | 1.3 MB     00:04     
(7/9): dovecot-1.0.7-7.el5.i386.rpm                      | 1.6 MB     00:00     
(8/9): mysql-libs-5.1.55-1.el5.remi.i386.rpm             | 1.7 MB     00:04     
(9/9): php-cli-5.3.5-1.el5.remi.1.i386.rpm               | 2.6 MB     00:04     
--------------------------------------------------------------------------------
Total                                           351 kB/s |  11 MB     00:31     
警告: rpmts_HdrFromFdno: ヘッダ V4 DSA signature: NOKEY, key ID 00f97f56
remi/gpgkey                                              | 1.3 kB     00:00     
Importing GPG key 0x00F97F56 "Remi Collet <RPMS@FamilleCollet.com>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Is this ok [y/N]: y
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 217521f6
epel/gpgkey                                              | 1.7 kB     00:00     
Importing GPG key 0x217521F6 "Fedora EPEL <epel@fedoraproject.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction

WARNING : This php-* RPM are not official Fedora/Redhat build and
overrides the official ones. Don't file bugs on Fedora Project nor Redhat.

Use dedicated forums http://forums.famillecollet.com/

  Installing     : php-common                                               1/9 

WARNING : This MySQL RPM is not an official Fedora/Redhat build and it
overrides the official one. Don't file bugs on Fedora Project nor Redhat.
Use dedicated forums http://forums.famillecollet.com/

  Installing     : mysql-libs                                               2/9 
  Installing     : libedit                                                  3/9 
  Installing     : php-cli                                                  4/9 
  Installing     : mysqlclient15                                            5/9 
  Installing     : dovecot                                                  6/9 
  Installing     : mysql                                                    7/9 
  Installing     : php                                                      8/9 
  Installing     : php-ldap                                                 9/9 

Installed:
  dovecot.i386 0:1.0.7-7.el5              mysql.i386 0:5.1.55-1.el5.remi       
  php.i386 0:5.3.5-1.el5.remi.1           php-cli.i386 0:5.3.5-1.el5.remi.1    
  php-common.i386 0:5.3.5-1.el5.remi.1    php-ldap.i386 0:5.3.5-1.el5.remi.1   

Dependency Installed:
  libedit.i386 0:2.11-2.20080712cvs.el5    mysql-libs.i386 0:5.1.55-1.el5.remi  
  mysqlclient15.i386 0:5.0.67-1.el5.remi  

Complete!

入力コマンド(9)

# php -v

出力結果(9)

PHP 5.3.5 (cli) (built: Jan 22 2011 10:11:01) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

よっしゃー!!PHP5.3.5 ゲッツ!!

CentOS5.5 の標準PHPバージョンが5.1.6なので、yum でPHP5.2.16にアップグレードしてみた。

CentOS5.5 の標準PHPバージョンが5.1.6なので、yum でアップグレードしてみたときのメモ。

入力コマンド(1)

# yum update

出力結果(1)

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
Setting up Update Process
No Packages marked for Update

入力コマンド(2)

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

出力結果(2)

#

入力コマンド(3)

# vi /etc/yum.repos.d/utterramblings.repo

vi で utterramblings.repo に追加した内容(3)

[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

入力コマンド(4)

# yum --enablerepo=utterramblings update php

出力結果(4)

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
utterramblings                                           |  951 B     00:00     
utterramblings/primary                                   |  39 kB     00:00     
utterramblings                                                          140/140
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package php.i386 0:5.2.16-jason.1 set to be updated
--> Processing Dependency: php-common = 5.2.16-jason.1 for package: php
--> Processing Dependency: php-cli = 5.2.16-jason.1 for package: php
--> Running transaction check
---> Package php-cli.i386 0:5.2.16-jason.1 set to be updated
--> Processing Dependency: php-common = 5.1.6-27.el5_5.3 for package: php-ldap
---> Package php-common.i386 0:5.2.16-jason.1 set to be updated
--> Running transaction check
---> Package php-ldap.i386 0:5.2.16-jason.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch       Version                 Repository            Size
================================================================================
Updating:
 php              i386       5.2.16-jason.1          utterramblings       3.6 M
Updating for dependencies:
 php-cli          i386       5.2.16-jason.1          utterramblings       2.6 M
 php-common       i386       5.2.16-jason.1          utterramblings       513 k
 php-ldap         i386       5.2.16-jason.1          utterramblings        59 k

Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade       4 Package(s)

Total download size: 6.8 M

入力コマンド(5)

Is this ok [y/N]: y

出力結果(5)

Downloading Packages:
(1/4): php-ldap-5.2.16-jason.1.i386.rpm                  |  59 kB     00:00     
(2/4): php-common-5.2.16-jason.1.i386.rpm                | 513 kB     00:00     
(3/4): php-cli-5.2.16-jason.1.i386.rpm                   | 2.6 MB     00:02     
(4/4): php-5.2.16-jason.1.i386.rpm                       | 3.6 MB     00:03     
--------------------------------------------------------------------------------
Total                                           652 kB/s | 6.8 MB     00:10     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : php-common                                               1/8 
  Updating       : php-cli                                                  2/8 
  Updating       : php                                                      3/8 
  Updating       : php-ldap                                                 4/8 
  Cleanup        : php                                                      5/8 
  Cleanup        : php-ldap                                                 6/8 
  Cleanup        : php-common                                               7/8 
  Cleanup        : php-cli                                                  8/8 

Updated:
  php.i386 0:5.2.16-jason.1                                                     

Dependency Updated:
  php-cli.i386 0:5.2.16-jason.1         php-common.i386 0:5.2.16-jason.1       
  php-ldap.i386 0:5.2.16-jason.1       

Complete!

入力コマンド(6)

# php -v

出力結果(6)

PHP 5.2.16 (cli) (built: Dec 17 2010 14:09:03) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
[root@localhost rpm-gpg]#


よーし!無事にPHPアップグレード完了!!

っと思ったけど、symfony1.4 を触るためのPHPアップグレードで

symfony1.4の取説に
「少なくとも PHP 5.2.4 がインストールされていることを確認してください。」
の文字が無情に踊ってる。

あー、微妙に足りないぢゃん。
PHPバージョン0.0.24 足りないので、もちょっとガンバル!!

Perlでテキストファイルの半角スペースを取り除く

#!/usr/bin/perl

use strict;
use warnings;
use utf8;

# フィルハンドルを開いてコンテンツを読み込む
open my $contents, '<', 'digital_dic2.txt';

# 半角スペースを取り除き半角スペースタグ除去後のコンテンツを表示する
# 改行は残したいのでケツに\nを付ける
while(<$contents>){
    $_=~ s/\s//g;
    print $_ . "\n";
}

# フィルハンドルを閉じる
close my $contents;

少しずつWindowsからLinuxに移行していきつつ、
EmacsLispを使って効率的なことを進める1年にしたいなー。

とミサカはミサカは切実に思うのです。

【Perl正規表現】たった1行でHTMLタグを取り除く

HTMLを加工して、テキストごにょごにょする作業に出会いました。

こんなときこそPerlでしょ。

「LWPでHTMLを引っこ抜いて、HTMLパーサーとか使おうかなー」

なんて、ぼんやり考えながらネットサーフィンしてたら、午前3時30分。

もうすぐ夜が明ける。ぐだぐだスクリプト書いてる時間ねぇなぁ。

と怠惰な自分を恨みつつ、ググると見つけた。

HTMLタグを取り除く - にししの Perl/CGI Tips ふぁくとりー

にしし、ありがとう。


で、早速活用。

AKB48の公式サイトでテスト。

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Encode;
use LWP::Simple;

# ターゲットURLを指定する
my $url = "http://akb48.co.jp/";

# コンテンツをGETリクエスト
my $contents = get( $url );

# 取得したコンテンツを確認する(デバッグ用)
# print encode( 'shiftjis', $contents );

# HTMLタグを取り除く
$contents =~ s/<.*?>//g;

# HTMLタグ除去後のコンテンツを表示する
print encode( 'shiftjis', $contents );

取得した結果は以下の通り

続きを読む

EC-CUBE 2.4.4 商品ごとの送料設定をカスタマイズ

俺のPerl力があれば、PHPとかSmartyEC-CUBEとか楽勝でしょ?という勘違い

今でこそCで書かれてたりしますが、PHPは元々Perlベースで作られてたんだから、なんとかなるんじゃね?


なーんて甘い考えで始めたEC-CUBE構築。

いやぁ、何度も洗礼を受けましたよ。

管理画面からの入力項目を増やしたり、

表示する項目を増やしたりというのは割とペペッとできたんですが、

カートの処理部分で大きくつまづきましたねー。

チェンジセット17970,17971,18114 あたりを参考に

グチャグチャといじってたんですが、

埒があかず。


やりたい処理は、商品ごとに送料を設定できるようにして、

カートの決済時に合計するだけ。


決して複雑な処理ではないので、

気を取り直してソースを追いかけることに。

ちなみに、商品ごとの送料設定はDBテーブルカラムあるくせに

<!--{* 送料の個別指定は次期開発で追加予定

とかってコメントアウトされてたりする。

EC-CUBEのいけず!


EC-CUBEのソース追っかけるときに見つけたクロスリファレンス

めちゃくちゃ見やすい。


そうそう、直接の解決のきっかけになったのは

きくさんのEC CUBE 商品送料のカスタマイズメモ

シンプルなカスタマイズなのに要件を満たしているあたりが素敵です。

ほんとにありがとうございましたー。


ちなみに僕は、

管理画面の[システム設定]-[パラメータ設定]で

「OPTION_PRODUCT_DELIV_FEE」を'1'にするのを忘れていてしばらくハマりました。

Perlをやっていたからこそ理解が早かったかもなぁと思う点

そうは言っても、Perlで培ったものがあったからこそ理解できた部分も少なからずありましたよ。

特に感じたのは、

オブジェクト指向の継承やオーバーライドについての概念があったこと
・リファレンスと矢印記法 -> に慣れていたこと

が密かに役立った気がする。


深掘りしていくと、応用が利くようになるんだなー。

Perlを軸に、色々な言語やツールにも挑戦し続けて行こうと改めて思った一日でした。